接前一篇文章:TCA9555芯片手册解读(5)
二、详述
7. 上电复位
当电源(从0V)施加到VCC时,内部通电复位将TCA9555保持在复位状态,直到VCC达到VPOR。此时,重启条件被释放,TCA9555寄存器和I2C/SMBus状态机初始化为默认状态。之后,VCC必须降低到0.2V以下,然后回到工作电压进行上电---复位循环。
8. 中断(/INT)输出
在输入模式下,端口输入的任何上升沿或下降沿都会产生中断。经过时间tiv后,信号/INT有效。
当端口上的数据改变为原始设置时,可以重置中断电路。数据从产生中断的端口或在一个停止事件中被读取。
在读取模式下,重置发生在SCL信号下降沿后的确认(ACK)位或不确认(NACK)位。由于在该脉冲期间重置中断,在ACK或NACK时钟脉冲期间发生的中断可能会丢失(或非常短)。复位后I/O的每次变化都会被检测到,并作为/INT传输。
从另一设备读取或向另一设备写入不会影响中断电路,配置为输出的引脚也不会导致中断。
将I/O从输出更改为输入可能会导致错误中断,如果引脚的状态与输入端口寄存器的内容不匹配。因为每个8位端口都是独立读取的,所以端口0引起的中断不会被端口1的读取清除,反之亦然。
/INT具有开漏结构,需要一个上拉电阻器连接到VCC。
9. 总线传输
数据通过写和读命令在主设备和TCA9555之间交换。
(1)写
写时序如下图所示:
1)通过发送设备地址并将最低有效位设置为逻辑0(设备地址见图4),数据被传输到TCA9555;
2)命令字节在地址之后发送,并确定哪个寄存器接收命令字节后面的数据(TCA9555中的8个寄存器被配置为4个寄存器对。这4对分别是输入端口、输出端口、极性反转端口和配置端口);
3)在将数据发送到一个寄存器后,下一个数据字节被发送到该对中的另一个寄存器(见图6和图7)。例如,如果第一个字节被发送到输出端口(register 3),则下一个字节被存储在输出端口0(register 2);
4)在一次写入传输中发送的数据字节数没有限制。这样,每个8位寄存器都可以独立于其它寄存器进行更新。
(2)读
读时序如下图所示:
1)总线主控器首先必须发送TCA9555的地址,其中最低有效位设置为逻辑0(设备地址见图4);
2)命令字节位于地址之后,用于确定访问哪个寄存器;
3)发送重新启动(restart)信号;
4)再次发送设备地址。但这次,最低有效位被设置为逻辑1;
5)然后,TCA9555发送由命令字节定义的寄存器中的数据(见图8至图10);
6)重新启动时,命令字节定义的寄存器值与重新启动时访问的寄存器匹配。例如,如果命令字节在重新启动之前引用输入端口1,并且在读取输入端口0时重新启动,则存储的命令字节将更改为引用输入端口0,原始命令字节已被遗忘。如果随后重新启动,则首先读取输入端口0。数据在ACK时钟脉冲的上升沿被时钟记录到寄存器中。在读取第一个字节之后,可以读取其它字节,但是
数据现在反映了该对中另一个寄存器中的信息。例如,如果读取了输入端口1,则下一个读取的字节是输入端口0。
数据在ACK时钟脉冲的上升沿被时钟记录到寄存器中。在一次读取传输中接收到的数据字节数没有限制,但当接收到最后一个字节时,总线主控器不得确认数据。