理解i2c的repeate start | 您所在的位置:网站首页 › repeared怎么读 › 理解i2c的repeate start |
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
正常来讲: 当我们发送开始命令, 然后发送数据,收到应答,发送数据,收到应答,循环,直到收到停止位,算是通信结束。 这样会产生一个问题: 例如我们读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 |
CopyRight 2018-2019 实验室设备网 版权所有 |