作为NAND FLASH,由于存在初始失效页,加上在不断使用的过程中会增加坏块的数量,因此在每次读取块数据时,需要先读取spare area中的数据已确认该page的数据有效性,因此我增加了一些读取spare area的程序,如下:
while(1)
{
NAND_ReadSpareArea_ECC(Buffer, &NAND_Address);
if((Buffer[1]==0xFF)||(Buffer[6]==0xFF)||(Buffer[11]==0xFF)||(Buffer[16]==0xFF))
{
NAND_ReadSmallPage_SinglePage(MultiBlock_Buffer,&NAND_Address);
NAND_AddressIncrement(&NAND_Address);
}
else
NAND_AddressIncrement(&NAND_Address);
}
这时通过示波器观察读信号,会发现在一个page的8K数据传递结束后,有将近200us的空闲,随后是读取spare area数据的操作,接着是同样将近200us的空闲期。由此我怀疑,是不是每次使用FSMC访问NAND FLASH时,都需要有一个潜在的初始化时间呢?否则为啥总是存在固定的停顿时间?
谁对这个有研究?请教啦!
|