工作笔记-----AT24CM01偶发性读取异常及解决方法
@@ Author:明月清了个风
@@ Date:2025/11/24
@@ PS:记录一个项目中遇到的bug以及修复方法,虽然解决了但是不知道具体原因
@@ Version:First edited and published date
BUG现象描述
硬件:GD32F450ZI + AT24CM01
讲一下基本的流程,在上位机发送指令后持续从AT24CM01中读取数据计算后发送给FPGA,发现FPGA输出值不定期的归0,经过调试后发现是从AT24CM01中读取的float数据值为-nan
尝试的解决方案
经过断点调试发现,在输出任务运行过程中不定期的出现读取数据为0xFF的情况,记录读取出0XFF的地址,在上电后直接读取发现读取值正确,进入输出后对应地址读取错误,考虑是后级输出过程中导致的AT24CM01电压不稳定导致的读取错误,经测量后发现不是这个问题。
最后的解决方法
使用软件的方法进行解决,若发现读取值异常,即为-nan,则进行重读,但是仍然不知道为什么会读取出0XFF,每次读取的是4个字节,有时候一个字节变为0xFF,有时候4个都是,可能也有别的情况:
c
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;
}
}
...
}