开发板上外扩SST39VF800 flash,映射在Zone 2,下面是芯片擦除程序,FlashStart指向Zone 2区起始地址,while中循环条件为i<5,这个5是怎么计算得来的?!还有++TimeOut>0x1000000,这个0x1000000又是怎么来的?!
Uint16 ChipErase(void)
{
Uint32 i,Data; //要定义为32位,已更正
Uint32 TimeOut;
*(FlashStart + 0x5555) = 0xAAAA;
*(FlashStart + 0x2AAA) = 0x5555;
*(FlashStart + 0x5555) = 0x8080;
*(FlashStart + 0x5555) = 0xAAAA;
*(FlashStart + 0x2AAA) = 0x5555;
*(FlashStart + 0x5555) = 0x1010;
i = 0;
TimeOut = 0;
while(i<5)
{
Data = *(FlashStart + 0x3FFFF);
if (Data == 0xFFFF) i++;
else i=0;
if ( ++TimeOut>0x1000000) return (TimeOutErr);
}
for (i=0;i<0x80000;i++) //共256K Words
{
Data = *(FlashStart + i);
if (Data !=0xFFFF) return (EraseErr);
}
return (EraseOK);
}
开发板上外扩SST39VF800 flash,上面是芯片擦除程while中循环条件为i<5,这个5是怎么计算得来的?!还有++TimeOut>0x1000000,这个0x1000000又是怎么来的?! |