ZHDA360A June   2015  – October 2026 INA209 , INA219 , INA220 , INA220-Q1 , INA223 , INA226 , INA226-Q1 , INA230 , INA231 , INA3221 , INA3221-Q1 , LM8323 , LM8325-1 , LM8327 , LM8328 , LM8330 , LM8333 , LM8335 , OPT3001 , OPT3001-Q1 , OPT3002 , OPT3004 , OPT3006 , OPT3007 , P82B715 , P82B96 , PCA6107 , PCA9306 , PCA9306-Q1 , PCA9515A , PCA9515B , PCA9518 , PCA9534 , PCA9534A , PCA9535 , PCA9536 , PCA9538 , PCA9539 , PCA9543A , PCA9544A , PCA9545A , PCA9546A , PCA9548A , PCA9554 , PCA9554A , PCA9555 , PCA9557 , PCF8574 , PCF8574A , PCF8575 , PCF8575C , TCA4311A , TCA5405 , TCA6408A , TCA6416A , TCA6418E , TCA6424A , TCA6507 , TCA8418 , TCA8418E , TCA8424 , TCA9406 , TCA9509 , TCA9517 , TCA9517A , TCA9534 , TCA9534A , TCA9535 , TCA9538 , TCA9539 , TCA9539-Q1 , TCA9543A , TCA9544A , TCA9545A , TCA9546A , TCA9548A , TCA9554 , TCA9554A , TCA9555 , TCA9617A , TCA9617B , TCA9800 , TCA9801 , TCA9802 , TCA9803

 

  1.   1
  2.   摘要
  3.   商标
  4. 1电气特性
    1. 1.1 通过漏极开路实现双向通信
      1. 1.1.1 漏极开路拉低
      2. 1.1.2 漏极开路释放总线
  5. 2I2C 接口
    1. 2.1 常规 I2C 运行
      1. 2.1.1 启动条件和停止条件
      2. 2.1.2 重复 START 条件
    2. 2.2 数据有效性与字节格式
    3. 2.3 确认 (ACK) 和否定确认 (NACK)
  6. 3I2C 数据
    1. 3.1 在 I2C 总线上向目标器件写入
    2. 3.2 在 I2C 总线上从目标器件读取
  7. 4修订历史记录

在 I2C 总线上从目标器件读取

从目标器件读取与向其写入非常相似,但有一些额外的步骤。为了从目标器件读取数据,控制器必须首先向目标器件指示它希望从哪个寄存器读取。为此,控制器以与写操作类似的方式启动传输:发送地址并将 R/W 位置为 0(表示写操作),随后发送它希望读取的寄存器地址。目标器件应答该寄存器地址后,控制器再次发送一个 START 条件,随后发送目标器件地址并将 R/W 位置为 1(表示一次读取)。这一次,目标器件应答读取请求,控制器释放 SDA 总线,但继续向目标器件提供时钟。在这一事务过程中,控制器成为控制器/接收器,目标器件成为目标/发送器。

控制器继续发送时钟脉冲,但释放 SDA 线,以便目标器件可以发送数据。在每个数据字节结束时,控制器向目标器件发送一个 ACK,告知目标器件它已准备就绪,可接收更多数据。一旦控制器收到了预期的字节数,它就会发送一个 NACK,通知目标器件停止通信并释放总线。控制器随后会发出一个 STOP 条件。

图 3-2 显示了从目标寄存器读取单个字节的示例。

 从目标器件寄存器的 I2C 读取示例图 3-2 从目标器件寄存器的 I2C 读取示例