工作笔记-----EEPROM偶发性读取错误

工作笔记-----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;
        } 
    }
...
}
相关推荐
开心就多写,一点就开心6 小时前
导演视听语言与分镜系统笔记(一):景别系统、机位视点与时空连贯性设计
笔记·aigc·镜头·电影
疯狂打码的少年8 小时前
【计算机网络】IPv6基础(特点、表示法、与IPv4对比)
网络·笔记·计算机网络
糖糖单片机设计9 小时前
基于 STM32 的公交车定位与报站系统
stm32·单片机·嵌入式硬件
祖力559 小时前
快速学会51单片机基础
单片机·嵌入式硬件·51单片机
泡泡鱼(敲代码中)10 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
H_oRIZoN_10 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
jianqiang.xue10 小时前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
江湖人称菠萝包11 小时前
【Windows】《深入浅出Windows API程序设计:核心编程篇》笔记-Chapter4-进程
windows·笔记
单片机仿真设计11 小时前
【proteus仿真】基于 STM32 的林区环境监控系统设计
stm32·单片机·proteus
今儿敲了吗12 小时前
03停用词过滤
笔记·python