This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答] I2C IO 扩展器中的自动递增功能是什么?

Guru**** 1808750 points
Other Parts Discussed in Thread: TCA6424A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1399428/faq-what-is-the-auto-increment-feature-in-i2c-io-expanders

主题中讨论的其他器件:TCA6424A

常见问题解答:逻辑和电压转换 >  IXC >> I2C IO 扩展器中的自动递增功能是什么?

I2C IO 扩展器的自动递增功能是指器件的寄存器在连续写入/读取后自动递增到设置中的下一个寄存器。  

如果不断对 IO 扩展器进行写入或读取、则该功能很有用。 常量写入和读取会在 I2C 系统中占用大量带宽。 自动递增有助于提高软件效率、这对于重负载的 I2C 总线系统尤其有用。  

为了清楚地理解此概念、下图展示了如何向 I2C IO 扩展器写入单字节:  

在第一个字节中、发送了器件(目标) 7位地址。 接下来是"指针"字节或寄存器地址。 这是要写入的寄存器。 最后、第三个字节是要在所选寄存器中设置的数据。  

完成一次写入事务总共需要3个字节的数据。 对于8位(8 IO)扩展器、这种字节格式很方便、因为可以利用单次写入来一次更改8个 IO 的状态。  

如果 IO 扩展器具有许多 GPIO、例如24位 I2C IO 扩展器 TCA6424A、 这种相同的字节格式需要9字节的数据才能更改所有24个 IO、因为它必须一次写入8位。  

3个器件地址、3个寄存器地址、每个寄存器地址3个数据字节

自动递增无需在每次进行事务时建立指针地址。 例如、如果用户希望从 TCA6424A 的所有输入端口寄存器(输入端口0、输入端口1、输入端口2)进行写入、则用户可以避免重写器件地址和寄存器地址、只需使用下一个数据字节继续写入事务。  

在该图中、发送了器件地址后跟输出端口寄存器地址。 数据0写入输出端口寄存器0、数据1写入输出端口寄存器1、依此类推。  

可以写入5字节的数据、而不是写入9字节的数据来配置24个 IO。  

1 x 器件地址、1 x 输出端口寄存器0地址、3 x 数据字节=总共5个字节。  

有关自动递增功能的更多信息、请参阅应用手册:  

I2C:什么是自动递增功能?