STM32读取EEPROM存储芯片AT24C512故障然后排坑记录

背景:

有一个项目用到STM32F091芯片去读取 AT24C512C-SSHD EEPROM 芯片,我直接移植了之前项目的IIC库,结果程序运行后,读不出EEPROM里面的数据。

摘要:

本文主要介绍一个基于STM32F091芯片和AT24C512C-SSHD EEPROM芯片的项目,该项目旨在读取EEPROM芯片中的数据。我直接移植了之前项目的库,但是遇到了读不出EEPROM数据的问题。本文记录了问题的发型与排查过程。

运行开发环境介绍

|--------|--------------------------|
| 硬件环境 | STM32F091CBT6 J-LINK V11 |
| 软件开发环境 | IAR 8.32.1 VSCODE |
| 软件支持包 | ST HAL 库 |

正文:

来到新公司后接了一个项目,用到STM32F091芯片去读取 AT24C512C-SSHD EEPROM 芯片,我直接移植了之前项目的IIC驱动库,结果程序运行后,读不出EEPROM里面的数据。

解决方法:

1.单步仿真,在IIC驱动部门的SCL和SDA 拉高和拉低之后打断点,然后单步运行,用万用表测量电压,看SCL 和SDA线的电平变化是否正常。

2.重新查看EEPROM芯片数据手册,搜索定位问题。

实验结果:

解决方法1:

单步仿真,用电压表量电压,发现电压变化正常。

解决方法2:

重新查看数据手册,发现了下面的东东:

大体意思就是说, AT24C512C Device Address 的地址字中

A0 A1 A2 代表着EEPROM芯片的IIC通讯地址。

而且设备地址的LSB最后一位还代表着不同的读写模式。

再看一下我的电路图,可以看到,我的电路中A0是1,A1 A2 为 0

可以看到我发送的器件地址为 0xA0,这就是因为我直接用的之前AT24C512 的 IIC 驱动库,没有注意到芯片的地址是可更改的。

所以程序中应该将地址改为:0xA8

容易踩的坑:

AT24C系列EEPROM的IIC通讯器件地址是可以硬件配置的!

移植原有代码的时候,特别是像我这样跳槽了后注意不同硬件设计人员的设计习惯不一样!

相关推荐
WD137298015577 分钟前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室2 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
Zwawa3 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
单片机仿真设计3 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus
smartpi_ai4 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
我先去打把游戏先4 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n15 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion5 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居
Steelenwang5 小时前
基于XT960的泵站监控方案
嵌入式硬件·物联网·硬件工程·智慧城市·智能硬件
国科安芯5 小时前
面向低轨卫星互联网载荷控制的抗辐射MCU技术综述
嵌入式硬件·mcu·卫星·低轨卫星·商业航天·抗辐射·微型互联网