GPIO模拟I2C出现SCL时钟线被外设拉低的情况
如图是软件模拟I2c的大概整体的波形局部放大时钟线两处有问题
再放大后,发现时钟线主机主动拉高了,gpio口配置为OD门电路,高电平被外部的10K电阻拉高。出问题的时候外设不知道什么原因也会主动拉低SCL线。为什么会这样?要怎么处理呢?
谢谢大家。 保持sda为高,发送9个时钟, 上拉电阻换个小一点的试试
是不是 SDA 和 SCL 的布线比较长,而且很靠近呢?
图中就是个 5ns 的抖动吧,芯片检测不到的 矩阵时间 发表于 2023-2-9 22:37
上拉电阻换个小一点的试试
是不是 SDA 和 SCL 的布线比较长,而且很靠近呢?
图中就是个 5ns 的抖动吧,芯 ...
(引用自3楼)
好的我试试换个上啦电阻试试感谢
按着I2C的协议,从机是可以通过拉低 SCL,通知主机降低通信速率的。如果是实物测得波形,考虑降低比特率 tang_qianfeng 发表于 2023-2-9 21:54
保持sda为高,发送9个时钟,
(引用自2楼)
对,这个按i2c协议,是有效的 各位目前看来问题解决了。最后的原因跟硬件和软件都相关。硬件部分修改上拉电阻到4.7Kgpio线中间串接的500欧姆电阻改为0欧姆。软件把速率从1M降到600K左右之后就没有在出现上面的问题了。谢谢各位的建议和帮助。 shishu 发表于 2023-2-10 02:22
各位目前看来问题解决了。最后的原因跟硬件和软件都相关。硬件部分修改上拉电阻到4.7Kgpio线中间串接的50 ...
(引用自7楼)
。。。。。。大哥我没见过I2C 拿来1M 通讯的
I2C都只推荐400k 以下吧 ,很多芯片手册里都注明400k 以下 ackyee 发表于 2023-2-10 09:01
。。。。。。大哥我没见过I2C 拿来1M 通讯的
I2C都只推荐400k 以下吧 ,很多芯片手册里都注明400 ...
(引用自8楼)
对啊。
规定最就是400k的,你跑到1兆然后问为什么人家反应不过来。。。
然后自己试着降速,发现你手上这个芯片降到600K差不多没问题了。
等这样量产了,肯定又会来问,同一个批次为什么某些的i2c正常,某些不正常。。。
因为体质差一点的可能跑不到600K 个别芯片支持到1M多,特殊模式。实际慢点更安全。 本帖最后由 2nd 于 2023-2-10 23:09 编辑
支持1M接口速度的EEPROM很常见了,我判断主要是电路的问题。
另外,从逻辑分析仪图看,SCL也没有1M,楼主你的图怎么看? redroof 发表于 2023-2-10 09:09
对啊。
规定最就是400k的,你跑到1兆然后问为什么人家反应不过来。。。
然后自己试着降速,发现你手上这 ...
(引用自9楼)
芯片支持1M的速率,可能还是有点问题。好像在一个简单的demo上没问题,但是到有中断发生的demo上就有问题,中断没有进行gpio的操作只是简单的更新了一个全局时钟ticks的计数值好像就又会有问题了
2nd 发表于 2023-2-10 23:08
支持1M接口速度的EEPROM很常见了,我判断主要是电路的问题。
另外,从逻辑分析仪图看,SCL也没有1M,楼主你 ...
(引用自11楼)
芯片支持1M的速率,可能还是有点问题。好像在一个简单的demo上没问题,但是到有中断发生的demo上就有问题,中断没有进行gpio的操作只是简单的更新了一个全局时钟ticks的计数值好像就又会有问题了。就会出现图上scl有ns跳变的情况,还在实验中 搜下iic clockstrech 矩阵时间 发表于 2023-2-9 22:37
上拉电阻换个小一点的试试
是不是 SDA 和 SCL 的布线比较长,而且很靠近呢?
图中就是个 5ns 的抖动吧,芯 ...
(引用自3楼)
确实如楼主那样 5ns的抖动芯片没有检测得到。但是这里有个疑问就是程序没有开中断的时候scl不会抖动,开了中断了就scl有抖动,目前测试好像通讯过程没有问题。还有就是逻辑分析仪开启了滤波 滤波时间设置为一个周期 目前逻辑分析仪分析协议没有出现问题。还有就是中断的开启会导致ack的判断被延迟最后导致时序失效。后来在开启scl=0之前关闭中断检测ack后再打开中断就ok了 发送大量SCL时钟复位外部器件时序 这个是什么工具?还可以这样截屏。 Tao涛 发表于 2023-2-15 08:59
这个是什么工具?还可以这样截屏。
(引用自17楼)
DSView逻辑分析仪几百兆频率抓波用RLE压缩办法抓抓几十秒的样子
页:
[1]