我怀疑I2C中的读操作,位冲击。我遵循的协议如下: 使用write-ack-register loc-ack-stop的起始从站地址。 ......具有read-ack-read数据停止的起始从地址。 我正在读数据为FFh,这是错误的。 我怀疑的是,在发送另一个启动之前,需要发送停止或者可以继续另一个启动来不停地读取数据,这实际上是重复启动。发送停止位是否有所不同。如果数据读取为FFh,也可以告诉某人可能的原因。但在看到示波器拍摄后,我可以保证写操作成功。请指导我。
由于
答案 0 :(得分:3)
i2c协议就像这样工作
WRITE:
如果操作成功,则应该使用ACK来回答写入从设备的每个字节。
READ:
如果成功,将使用ACK回答所有写入和读取操作(上次读取除外)。
因此,在重新启动的情况下,您不会发送第二个停止。
就0xFF读取结果而言,您需要检查设备的数据表,但如果您尝试读取的数据不可用,有些人将返回此值!
希望这有帮助。
答案 1 :(得分:0)
我刚刚遇到这个问题,并找到了原因:如果你一直在阅读FFh,你就会错过重复的开始。