BUG現象描述
硬件:GD32F450ZI + AT24CM01
講一下基本的流程,在上位機發送指令後持續從AT24CM01中讀取數據計算後發送給FPGA,發現FPGA輸出值不定期的歸0,經過調試後發現是從AT24CM01中讀取的float數據值為-nan
嘗試的解決方案
經過斷點調試發現,在輸出任務運行過程中不定期的出現讀取數據為0xFF的情況,記錄讀取出0XFF的地址,在上電後直接讀取發現讀取值正確,進入輸出後對應地址讀取錯誤,考慮是後級輸出過程中導致的AT24CM01電壓不穩定導致的讀取錯誤,經測量後發現不是這個問題。
最後的解決方法
使用軟件的方法進行解決,若發現讀取值異常,即為-nan,則進行重讀,但是仍然不知道為什麼會讀取出0XFF,每次讀取的是4個字節,有時候一個字節變為0xFF,有時候4個都是,可能也有別的情況:
int IsNAN(float val)
{
return (val != val);
}
float get_value()
{
....
for(int i = 0; i < 10; i ++)
{
EepromRead(addr, val, FLOAT_SIZE);
Res = uf_L_Value.data_in_float;
if(!IsNAN(Res))
{
break;
}
}
...
}