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);