首页 > 其他分享 >Repeated Start Condition

Repeated Start Condition

时间:2022-11-19 17:22:54浏览次数:41  
标签:start read stop 地址 Start Repeated Condition I2C condition

Repeated Start Condition

A way to claim the bus
During an I2C transfer there is often the need to first send a command and then read back an answer right away. This has to be done without the risk of another (multimaster) device interrupting this atomic operation. The I2C protocol defines a so-called repeated start condition. After having sent the address byte (address and read/write bit) the master may send any number of bytes followed by a stop condition. Instead of sending the stop condition it is also allowed to send another start condition again followed by an address (and of course including a read/write bit) and more data. This is defined recursively allowing any number of start conditions to be sent. The purpose of this is to allow combined write/read operations to one or more devices without releasing the bus and thus with the guarantee that the operation is not interrupted

在这里插入图片描述
Regardless of the number of start conditions sent during one transfer the transfer must be ended by exactly one stop condition.

正常来讲:

当我们发送开始命令, 然后发送数据,收到应答,发送数据,收到应答,循环,直到收到停止位,算是通信结束。

这样会产生一个问题:
例如我们读I2C:

读的过程:start信号,从设备地址,写,待读取存储地址,stop。再一个start信号,从设备地址,读,8个时钟,从设备就把对应的数据反馈给处理器。

那么问题是,当我们写stop收到后,再发start读的时候,这个间隙会不会被打断?

有可能的,所以例如读I2C的时候应该这样

读的过程:start信号,从设备地址,写,待读取存储地址,restart,从设备地址,读,8个时钟,从设备就把对应的数据反馈给处理器。
这样就连贯了,是个原子操作了。

参考:https://www.i2c-bus.org/repeated-start-condition/
参考:https://www.ti.com/lit/an/slva704/slva704.pdf

标签:start,read,stop,地址,Start,Repeated,Condition,I2C,condition
From: https://www.cnblogs.com/amxiang/p/16906536.html

相关文章