This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2540外挂EN25QH16 SPI FLASH问题



我想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);
        }
}