[技术讨论] 单片机操作IIC总线的诡异现象

[复制链接]
1075|17
玄德 发表于 2025-9-25 16:13 | 显示全部楼层 |阅读模式
本帖最后由 玄德 于 2025-9-25 16:26 编辑

一个常用的 IIC 总线的 RTC 芯片,已经用来开发过一个产品,用了好久,一直正常。
这次新项目,用 GD32F427 操作该 RTC 芯片,按说不会有问题,但却遇到诡异的现象:

数据线 SDA 信号,只要夹上示波器探头,只要探头的探头和夹子分别与电路板上的 SDA 和 GND 都连接好,
即便探头电缆的另一端与示波器是脱开的、没连接,SDA 都能正常回复 ACK 信号,软件流程就正常。
但只要取下探头,即便只断开 SDA 或者只断开 GND,软件就检测不到 ACK 信号,没法继续通信。

仔细查过硬件,没有短路、断路,上拉电阻 4.7K ,上拉到 3.3v,没问题。

更换过全新的 RTC 芯片,问题依旧,换了两片都不行。
也用割铜皮、飞线的形式连接到 CPU 的其他 IO 口上,问题一模一样。


同一块板子上还有其他 IIC 器件,都是正常的。

实在想不通为什么。




 楼主| 玄德 发表于 2025-9-26 09:21 | 显示全部楼层

自顶一下,看有人遇到过没有
alienmiller 发表于 2025-9-26 10:44 | 显示全部楼层
弄明白 示波器探头的内部结构模型与功能 估计这个问题就解决了。
chineseboyzxy 发表于 2025-9-26 10:46 | 显示全部楼层
探头夹上,起到了并联一个小电容的作用?
luckyzy 发表于 2025-9-26 11:13 | 显示全部楼层
把读写频率降低些,问题应该就解决了。

评论

试过,SCK 周期加长到5倍也不行。  发表于 2025-9-26 12:14
xch 发表于 2025-9-26 15:28 | 显示全部楼层
上传 SDA和SCL波形

评论

只要接上探头,ACK 的波形质量很好,通信能流畅、正确地完成。所以只能用来观察 SCK 的周期,对解决故障没有任何帮助。  发表于 2025-9-26 15:41
 楼主| 玄德 发表于 2025-9-26 15:57 | 显示全部楼层
本帖最后由 玄德 于 2025-9-26 15:59 编辑

这个现象早在 50 天以前就发现了。当时努力了好几天,解决不了,所以搁置到今天。
现在已经到了必须面对、必须解决的时候。

今天又做了个实验:
把以前成功完成的项目的电路板找出来,拆下上面正常的芯片,
把现在项目的问题芯片也拆下来,两个互换一下。
焊接以后,把两个板子用各自的程序走一走,挂着仿真器观察。
结果,老板子换了问题芯片,操作依然正常。
而新板子故障依旧,还是收不到 ACK 信号。
我还把挂示波器探头的现象又复现了一遍,还是那样,挂上探头就正常,摘掉就出错。
我其实已经预料到这个结果。

现在就差再装配一块新板子来实验。不过不打算再折腾了。

已经在新板子上换用了同厂家的另一款芯片,硬件完全兼容,软件变化不大。
板子还是那块板子,芯片焊接在同一位置。
现在已经修改完毕。运行完全正常。



cooldog123pp 发表于 2025-9-26 22:45 | 显示全部楼层
你是硬件I2C还是软件I2C模拟的,可能你的时序实际是有问题的,你要多搞几块板子看一下。

评论

我是软件模拟。我因为频繁用到 IIC 器件,所以编的是通用程序,时序查过N多遍了,操控其他器件包括很复杂的EEPROM以及同一厂家的其他型号,都正常。   发表于 2025-9-28 10:28
hjl2832 发表于 2025-9-27 08:32 | 显示全部楼层
这个应该还是驱动阻抗匹配的问题,你确认上拉电阻阻值正确?看波形应该能看出问题才对。不同的IIC芯片,它的驱动能力不同,上拉电阻要改变。我试过很多温湿度传感器和压力传感器,不同厂家的芯片、甚至同一家不同型号的芯片,同样电路,有些就会出现你说的问题,结果都是改上拉电阻解决了。

评论

试过了,把4.7K换成10K,故障依旧。  发表于 2025-9-28 10:29
好的,我试一下电阻。感谢!  发表于 2025-9-27 11:14
地瓜patch 发表于 2025-9-27 16:23 | 显示全部楼层
用的硬件IIC接口还是模拟IIC,又可能是时序问题
asdsfgwsafd 发表于 2025-9-28 09:03 | 显示全部楼层
速率给的多少?讲道理iic一般高的也就400k,阻抗影响不大的。
接个探头相当于并个电容,手动加个试试?
发完从机地址直接NACK了吗?

评论

我知道 400K 的频率限制,也有器件是 100K 。现在发完“地址+读/写位”以后,主机转为接收态,但检测不到低电平的 ACK 信号。  发表于 2025-9-28 10:31
hjl2832 发表于 2025-9-29 08:51 | 显示全部楼层
asdsfgwsafd 发表于 2025-9-28 09:03
速率给的多少?讲道理iic一般高的也就400k,阻抗影响不大的。
接个探头相当于并个电容,手动加个试试?
发 ...

示波器的输入阻抗非常大,等效电容很小的,不会影响这种IIC总线的,试想X10模式下,晶振电路都不会影响呢,晶振电容匹配起振的条件可比IIC要求高多了。
既然芯片没问题,那就是GD单片机的操作时序有问题了,可以对比2种应用的驱动波形分析。确认GD的代码配置都正确?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有事请找 xuander

154

主题

5983

帖子

44

粉丝
快速回复 在线客服 返回列表 返回顶部