Other Parts Discussed in Thread:PCA9534
使用PCA9534的过程中,一直都是P0-P7全部配置成输入,或者配置成输出。现在想把P0-P3配置成输入,P4-P7配置成输出,以前从来没这样操作过,查看datasheet,好像也没这方面的说明,所以发个贴问一下IT专家们,是否可以这样操作,另外这样操作了,对P0-P3作为输入,P4-P7作为成输出,彼此之间的操作是否相互独立,不相互影响,P0-P3输入反转的时候,INT正常输出;P4-P7改变输出的时候,正常写入即可。
Amy Luo:
您好,
可以这样操作,可通过register 3配置对应位为输入或输出,对应为配置为1则为输入;对应为配置为0则为输出;
register 0反映管脚的输入逻辑电平,无论管脚是由配置寄存器定义为输入还是输出,它只作用于读操作,写入这些寄存器无效;
register 1显示由寄存器3定义为输出的管脚的输出逻辑电平,此寄存器中的位值对定义为输入的管脚没有影响
具体请查看数据手册9.3.2.3 Register Descriptions
,
Aaronzhong:
P0-P3设为输入,P4-P7设为输出,如果在写register 1的周期内P0-P3中的某引脚出现了电平反转,那这样会影响INT的动作和读P0-P3的状态?因为register 1还没有写完,是无法进行register 0的操作的吧,这样的冲突怎样去解决啊?
,
Amy Luo:
进入中断后,可以先处理中断事务,处理完之后返回来再继续执行
主要是我在PCA9534数据手册9.2.3 Interrupt Output (INT)看到“Interrupts that occur during the ACK or NACK clock pulse can be lost (or be very short) due to the resetting of the interrupt during this pulse.”:在ACK或NACK脉冲期间发生的中断可能会由于在该脉冲期间中断的重置而丢失
我看了几个其他I2C I/O扩展器都有这个缺陷,但TCA7408 可以"At no point is a valid interrupt ever missed",但TCA7408 好像已停产