在28335上使用外扩的FLASH芯片,按照研旭给的程序写了一下,擦除没有问题,从0x180000以后都变成0xFFFF,但是往里写的过程,从第一个数就写不进去,为什么?请大佬指点:
Uint16 ChipErase(void)
{
Uint16 Data;
Uint32 TimeOut,i;
*(FLASHStart0 + 0x5555) = 0xAAAA;
*(FLASHStart0 + 0x2AAA) = 0x5555;
*(FLASHStart0 + 0x5555) = 0x8080;
*(FLASHStart0 + 0x5555) = 0xAAAA;
*(FLASHStart0 + 0x2AAA) = 0x5555;
*(FLASHStart0 + 0x5555) = 0x1010;
for(i=0;i<0x40000;i++)
{
Data = *(FLASHStart0 + i);
if(Data!=0xFFFF)
return(EraseErr);
}
return(EraseOK);
}
Uint16 FlashWrite(void)
{
Uint32 i ;
Uint16 Data;
for(i=0;i<0x3FFFF;i++)
{
*(FLASHStart0 + 0x5555) = 0xAAAA;
*(FLASHStart0 + 0x2AAA) = 0x5555;
*(FLASHStart0 + 0x5555) = 0xA0A0;
*(FLASHStart0 + i) = i;
}
for(i=0;i<0x3FFFF;i++)
{
Data = *(FLASHStart0 + i);
if(Data!=i) return(VerifyErr);
}
return(WriteOK);
} |