我对 I2C 中的读取操作有疑问,位碰撞。我所遵循的协议如下:带有写确认寄存器 loc-ack-stop 的起始从地址。...... 起始-从机地址,带有read-ack-read data-stop。我正在将数据读取为 FFh,这是错误的。我的疑问是,在发送另一个启动之前,是否需要发送停止或可以继续另一个启动以不间断地读取数据,这实际上是重复启动。发送停止位与否有什么区别。如果读取的数据为 FFh,也有人可以告诉我可能的原因是什么。但是我可以保证写操作是成功的,在看到示波器截图后。请指导我。
谢谢
i2c 协议是这样工作的
WRITE:
Run Code Online (Sandbox Code Playgroud)
如果操作成功,您写入从设备的每个字节都应以 ACK 应答。
READ:
Run Code Online (Sandbox Code Playgroud)
如果成功,所有写入和读取操作(最后一次读取除外)都会以 ACK 应答。
因此,在重新启动的情况下,您不会发送第二个停止。
就0xFF读取结果而言,您需要检查设备的数据表,但如果您尝试读取的数据不可用,有些会返回此值!
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
10773 次 |
| 最近记录: |