本帖最后由 z_no1 于 2011-10-25 19:23 编辑
按万利开发板做了个板子,STM32F103ZE+K9F1208U0C,发现大量的坏块,用标准擦除程序,4096个块估计有300个有页擦不掉,而且是随机的,这次测是这些块,下次测是那些块。
擦除和写都有一个问题,操作完成了,去读回数据,有的扇区就不对,多读几次,就对了,但下次上电后经过校验的有的扇区又不对了,
这个片子工厂里其他同事也在用,配STC11L08,还算能用。所以应该不是质量问题。板子的延时加到了极点,如下,还是不行。
p.FSMC_SetupTime =0x09;//0x1;
p.FSMC_WaitSetupTime = 27;//0x3;
p.FSMC_HoldSetupTime = 48;//0x10;
p.FSMC_HiZSetupTime = 9;//0x1;
它和一片IS61LV5128AL共一个总线,
那个SRAM读写还正常。怀疑干扰,把速度也降了,没用。
p.FSMC_AddressSetupTime = 1;
p.FSMC_AddressHoldTime = 1;
p.FSMC_DataSetupTime = 2;
p.FSMC_BusTurnAroundDuration = 1;
p.FSMC_CLKDivision = 1;
p.FSMC_DataLatency = 1;
p.FSMC_AccessMode = FSMC_AccessMode_A;
有大侠说要在读主和读付里加延时,也加了,还是一样。
/*!< Calculate the size */
size = NAND_PAGE_SIZE + (NAND_PAGE_SIZE * numpageread);
for(i=0;i<2000;i++); //下完命令要有延时
while(GPIO_ReadInputDataBit(GPIOG, GPIO_Pin_6)==0);
/*!< Get Data into Buffer */
for(; index < size; index++)
{
pBuffer[index]= *(__IO uint8_t *)(Bank_NAND_ADDR | DATA_AREA);
}
搞了一周了,实在是没辙了,求助!!!!! |