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;
        } 
    }
...
}