我发送的数据是I2C(每1秒使用DMA)。 我在SCK和SDATA上增加了两个上拉电阻。 现在有奴隶,所以因为没有回应,主人只发送奴隶地址而且都是。
它的测试板有时会发生这样我将这些上拉电阻器松散一段时间。 当发生这种情况时,我没有得到更多的数据,并且SCK的速度与此频率的速度相当。 没有办法解决它,拉回来没有帮助,我必须重置我的板。
我无法解释这种行为,它完全杀死了公共汽车。
答案 0 :(得分:2)
正如您自己已经看到的那样,上拉电阻对于s2和scl线路中的i2c总线至关重要。通常很明显,sda线是双向的,不太明显的是scl也有点双向,因为从机可以保持低线以降低总线的速度。
在许多情况下,由于碰撞或其他物理问题(例如松开上拉),总线可能会被锁定,在这种情况下,某些从站不会正确释放总线,因为他们知道它们仍在被解决。这种情况可以通过主机发送输出SCL脉冲来解决,最后在线路被释放时停止。但是,如果你说没有奴隶,这可能不是你的情况。
我担心您的问题可能与主机的i2c外设有关,因为推出暂时断开连接,因此没有看到线路在预期时变高。在你的情况下我能想到的最好的解决方案是你应该确保你没有放松那些拉力。实现这一目标的最佳方法是在每条线路上并联两个或三个电阻器,这样就必须断开所有两个/三个电阻器以使总线“无效”。对SDA并联使用两个10k电阻,另外两个用于SCL。