理解i2c的repeate start 您所在的位置:网站首页 repeared怎么读 理解i2c的repeate start

理解i2c的repeate start

#理解i2c的repeate start| 来源: 网络整理| 查看: 265

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有