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