打印
[STM32F0]

用I2C读EEPROM怎么偶尔读出全0?

[复制链接]
324|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
帛灿灿|  楼主 | 2025-5-4 13:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
加了ACK判断也没用,有时候读几次都不对,是不是哪里没拉稳?

使用特权

评论回复
沙发
Clyde011| | 2025-5-4 13:39 | 只看该作者
EEPROM读命令有没有发对?

使用特权

评论回复
板凳
Uriah| | 2025-5-4 13:39 | 只看该作者
看一下ACK有没有丢。

使用特权

评论回复
地板
Pulitzer| | 2025-5-4 13:40 | 只看该作者
多加几次重试逻辑可能会稳定。

使用特权

评论回复
5
Bblythe| | 2025-5-4 13:41 | 只看该作者
连续读取是不是超过页边界了?

使用特权

评论回复
6
Wordsworth| | 2025-5-4 13:42 | 只看该作者
STM32F0的I2C对时序挺敏感的。

使用特权

评论回复
7
万图| | 2025-5-4 13:42 | 只看该作者
EEPROM地址位搞错也可能读到全0。

使用特权

评论回复
8
童雨竹| | 2025-5-4 13:43 | 只看该作者
用示波器看看I2C波形有没有毛刺?

使用特权

评论回复
9
帛灿灿|  楼主 | 2025-5-4 13:44 | 只看该作者
我之前I2C拉电阻太大也出这种问题。

使用特权

评论回复
10
周半梅| | 2025-5-4 13:45 | 只看该作者
加一下读前的延迟看看?

使用特权

评论回复
11
公羊子丹| | 2025-5-4 13:46 | 只看该作者
EEPROM是不是还在写操作中?

使用特权

评论回复
12
三生万物| | 2025-5-14 10:30 | 只看该作者
偶尔读出全0,但重启后或重新插拔I2C设备后可能恢复正常。根本原因:I2C总线干扰如上拉电阻不当:STM32F0I2C总线需外部上拉电阻(通常4.7kΩ~10kΩ),若电阻值过大或未连接,可能导致信号衰减或边沿失真

使用特权

评论回复
13
光辉梦境| | 2025-5-14 10:36 | 只看该作者
读出全0时,可能伴随I2C错误标志(如BERRARLOAF)被置位的根本原因:写保护未禁用:EEPROM的写保护引脚(如WP)未拉低,导致设备处于只读模式,但实际可能返回全0或错误数据

使用特权

评论回复
14
夜阑风雨| | 2025-5-14 10:41 | 只看该作者
若未在I2C通信中添加超时机制,EEPROM可能因内部操作(如页写入延迟)未及时应答,导致STM32F0误判为通信失败

使用特权

评论回复
15
远山寻你| | 2025-5-14 10:44 | 只看该作者
EEPROM的页写入操作(如24Cxx系列每页16字节)完成后,需等待内部写入周期(典型值5ms)。若在写入周期内读取,可能返回全0

使用特权

评论回复
16
暖了夏天蓝了海| | 2025-5-14 11:17 | 只看该作者
布线过长或寄生电容,I2C总线长度超过10cm或未使用双绞线,可能导致信号反射或噪声干扰。

使用特权

评论回复
17
内政奇才| | 2025-5-14 11:29 | 只看该作者
检查I2C总线是否受到电磁干扰。

使用特权

评论回复
18
jcky001| | 2025-5-14 11:35 | 只看该作者
建议上逻辑分析仪。

使用特权

评论回复
19
江河千里| | 2025-5-14 12:15 | 只看该作者
EEPROMVCC引脚电压波动(如低于工作电压阈值)可能导致数据存储或读取异常

使用特权

评论回复
20
duo点| | 2025-5-14 12:24 | 只看该作者
上拉电阻不匹配?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

4903

帖子

0

粉丝