ZHCAE77 July   2024 PCA9535 , PCA9555 , TCA6416A , TCA6424A , TCA9535 , TCA9539 , TCA9539-Q1 , TCA9555 , TCAL6416R , TCAL9539 , TCAL9539-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1什么是自动递增?
  5. 2自动递增有何用途?
  6. 3是否所有 I2C 器件都支持自动递增?
  7. 4是否有不同类型的自动递增?
  8. 5是否需要启用自动递增?
  9. 6参考资料

自动递增有何用途?

使用自动递增功能允许用户在无需执行停止条件的情况下读取或写入数据。这样可以在 I2C 总线的初始化序列期间节省 I2C 控制器的时间和计算周期。图 2-1 展示了使用自动递增功能的突发写入示例。该示例展示了向 I2C 目标写入 4 个数据字节。每个字节的数据都从第一个寄存器(寄存器 0)开始写入堆栈中的下一个寄存器。发送到 I2C 目标的总字节数为 6。如果不使用自动递增功能,则执行同一事务所需的字节数总共可能为 12。此事务可以将所需的时间减半(针对该示例)。

 I2C 自动递增突发写入图 2-1 I2C 自动递增突发写入

图 2-2 展示了具有自动递增功能的读取事务示例。该示例显示起始寄存器为寄存器 5(不需要从寄存器 0 开始),并递增到寄存器 9。从 I2C 器件读取的总字节数为 5,执行此过程所需的字节数为 8。如果 I2C 控制器(或用户)选择了不使用自动递增功能,则需要额外设置 3 个字节来读取下一个寄存器(该示例中为寄存器 6)。此递增总共用到 8 个字节来读取 2 个字节的数据。由此可以清楚地看出,自动递增功能可为用户提供更高效的编程方法。

还有一点需要注意,在该示例中,如果在从寄存器 9 接收数据后发出了 ACK,并且寄存器 10 中有数据需要收集,则理论上 I2C 控制器可能会继续从该 I2C 目标读取字节。实际上,读取事务可以持续到控制器结束事务为止。

 I2C 自动递增突发读取图 2-2 I2C 自动递增突发读取