spi flash W25Q128会偶尔出现写入错误的情况,会发现读出的值和写入的值不一致,需加入2次读出比较判断。

W25QXX_Read(&temp_date_count,0x000000,1);
//W25QXX_Write((u8*)&temp_date,0x400000,135);
//W25QXX_Read((u8*)&temp_data_test,0x400000,135); W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
W25QXX_Read((u8*)&temp_data_test,(temp_date_count*135+1),135);
if(memcmp(&temp_date,&temp_data_test,135)!=0)
{
W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
W25QXX_Read((u8*)&temp_data_test,(temp_date_count*135+1),135);
if(memcmp(&temp_date,&temp_data_test,135)!=0)
{
W25QXX_Write((u8*)&temp_date,(temp_date_count*135+1),135);
}
}
temp_date_count=temp_date_count+1;//Each time a structure is written
if(temp_date_count==60)
{
temp_date_count=0;
}
W25QXX_Write(&temp_date_count,0,1);

  

05-11 16:01