您好!
如果在标准模式下以100kHz 的频率使用 PCA9536并将0和1交替写入极性反转寄存器、您能否告诉我 P0 ~ P3的更新速率?
仅使用 P0时的最大更新速率是多少?
此致、
加藤
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.
您好 Kato-San、
我要说的所有内容都可以在 本数据表 的第7.3节(第13页)中找到。
为了计算更新 P0~P3所需的时间、我们必须首先计算向主器件或从器件发送一个数据字节所需的时间。 从机发送或接收的每个位采用1个时钟脉冲、该脉冲为10us。 对于从器件发送或接收的每个字节、还必须有一个来自从器件或主器件的确认位。 这将采用另一个时钟脉冲、因此对于数据的每个字节、它需要9个时钟脉冲或90us。
为了对 P0进行编程、需要发送3个字节。 首先、主器件将一次发送一位从器件的地址字节(MSB 位优先)。 地址字节的7位用于寻址从器件、最后一位是 R/W 方向位。 该位置的1b 表示读取、而该位置的0b 表示写入。
接下来、主设备将发送一个命令字节、该字节指定主设备要与哪个寄存器通信。 例如、如果您想访问极性反转寄存器、则会发送一个02h 的字节。 如果您想更改端口引脚 P0~P3的输出值、您将访问输出端口寄存器01h。
最后、您可以发送要写入寄存器的数据字节。 可以使用输出端口寄存器同时配置端口引脚、因此在配置一个端口引脚或所有四个端口引脚之间没有时间差异。 在同一逻辑中、极性反转寄存器也只需一个数据字节即可完全更改。
当全部完成后、需要3个字节才能成功对 PCA9536的任何寄存器进行编程、相当于270us。 最后、起始位至少需要一个时钟脉冲、而停止位则需要另一个时钟脉冲。 这使我们的最终时间大约为290us。 如果您要持续更改寄存器的值、则理论上可以将这些值更改到3.4Khz 左右、该值显然会根据您在编程寄存器之间花费的时间而变化。
我希望这对您有所帮助、如果您有任何疑问、请告诉我。
最棒的
Chris
您好、Kato、
很抱歉、我讲错了(我因为某种原因想到的是一个寄存器器件、而不是这个器件)。 三个字节是正确的。 地址+寄存器+数据是翻转位所需发送的三个字节。
第一个事务将需要地址+配置寄存器设置+数据、然后以下事务将是地址+输出寄存器+数据(0x00h)、接下来的事务将是地址+输出寄存器+数据(0xFFh)、然后返回到地址+输出寄存器+数据(0x00h)并重复。
-Bobby