注意 I2C 的传输协议对 ACK 的定义。在一个字节帧中有一个 ACK 位,接收方在正确接收后且要继续接收时,要将数据线在此时刻拉低。
如果发送方检测到 ACK 依然是高,有如下可能:
1 没有响应的接收方;
2 接收方接收错误;
3 接收方不再继续接收。
此情况下,发送方就会停下来。
这些协议控制,一般都是硬件实现的。
你的情况很可能是外界干扰导致发送方未能正确识别 ACK:
1 检查你作为接收方器件的驱动能力。
2 试试增大上拉电阻,减小上拉强度,降低对接收方的下拉驱动能力要求。
3 适当采取抗干扰措施,如缩短或加粗信号线,使用屏蔽线等等。
很可能你周边在下午有强力电机启动,或有较强的无线信号发射运行。
注意 I2C 的传输协议对 ACK 的定义。在一个字节帧中有一个 ACK 位,接收方在正确接收后且要继续接收时,要将数据线在此时刻拉低。
如果发送方检测到 ACK 依然是高,有如下可能:
1 没有响应的接收方;
2 接收方接收错误;
3 接收方不再继续接收。
此情况下,发送方就会停下来。
这些协议控制,一般都是硬件实现的。
你的情况很可能是外界干扰导致发送方未能正确识别 ACK:
1 检查你作为接收方器件的驱动能力。
2 试试增大上拉电阻,减小上拉强度,降低对接收方的下拉驱动能力要求。
3 适当采取抗干扰措施,如缩短或加粗信号线,使用屏蔽线等等。
很可能你周边在下午有强力电机启动,或有较强的无线信号发射运行。
举报