我想flash的一个地址写入数据后,再读出,然后再向另外一个地址写入另外一个数据,再读出,然后读出第一次写入数据的地址,发现总是第二次写入的数据,这是怎么回事?
程序代码如下:
先向0到255 page写数据0xFF80数据,再读出来并比较,如果不一致就死循环,
再向256到511 page些数据0xFFE0数据,再读出来并比较,如果不一致就死循环,
最后再读出0到255 page的数据,但调试发现总是卡此处的死循环了,并且查看bufRead的数据时0xFFE0
static uint16 i,j;
for(j=0;j<128;j++)
{
bufWrite[2*j] = RED>>8;
bufWrite[2*j+1] = RED&0XFF;
bufRead[2*j]=0;
bufRead[2*j+1]=0;
}
for(i=0;i<256;i++)
{
if(i%16 == 0)
{
EN25QH16_sectorErase(i*EN25QH16_PAGE_SIZE);
EN25QH16_waitBusy();
}
EN25QH16_writePage(bufWrite,i*EN25QH16_PAGE_SIZE,256);
EN25QH16_read(bufRead,i*EN25QH16_PAGE_SIZE,256);
if(!osal_memcmp(bufRead, bufWrite,256))
{
while(1);
}
}
//»ÆÉ«80ÐÐ
for(i=0;i<128;i++)
{
bufWrite[2*i] = YELLOW>>8;
bufWrite[2*i+1] = YELLOW&0xFF;
bufRead[2*i]=0;
bufRead[2*i+1]=0;
}
for(i=256;i<512;i++)
{
if(i%16 == 0)
{
EN25QH16_sectorErase(i*EN25QH16_PAGE_SIZE);
EN25QH16_waitBusy();
}
EN25QH16_writePage(bufWrite,i*EN25QH16_PAGE_SIZE,256);
EN25QH16_read(bufRead,i*EN25QH16_PAGE_SIZE,256);
if(!osal_memcmp(bufRead, bufWrite,256))
{
while(1);
}
}
for(i=0;i<128;i++)
{
bufWrite[2*i] = RED>>8;
bufWrite[2*i+1] = RED&0xFF;
bufRead[2*i]=0;
bufRead[2*i+1]=0;
}
for(i=0;i<256;i++)
{
EN25QH16_read(bufRead,i*EN25QH16_PAGE_SIZE,256);
if(!osal_memcmp(bufRead, bufWrite,240))
{
while(1);
}
}