你好!我在产品中使用了两块PCA9535,暂称它们为 PCA9535_A 和 PCA9535_B。其中PCA9535_A在主芯片(nRF51822)复位时,偶发性的发生引脚状态寄存器读取与实际电平不匹配的情况。比如我写入了0x0C,0x82,然后立即读取引脚状态寄存器,读取的值为0xF3,0x9D。
这种情况一旦发生,将会维持很久,直到PCA9535_A彻底断电之后,才可以恢复正常。
PCA9535_A 是3.3V常供电,使用过程中,电源(5号电池供电)会有波动,但不会到0V。
出现异常时,我用逻辑分析仪抓取了IIC波形,如下图
请问这可能是什么原因引起的,应该如何避免?谢谢!
Mickey Zhang:
PCA9535在电源复位时,寄存器会恢复默认的值,可以参考datasheet 8.2.1 Power-On Reset, 请您确认下在您的主芯片nRF51822复位时,PCA9535是否发生复位。
Kailyn Chen:
看这个逻辑分析仪的时序是没问题的,但是读取的数据和写入的数据是不一致的。
所以我认为最好用示波器抓一下时序,看data的建立和保持时间是否满足datasheet中的要求。
Charles Wu63:
回复 Mickey Zhang:
你好!我将PCA9535更换为TCA9535之后,偶发性的问题现象还是存在,概率还是和原来差不多。而且我们的这个芯片使用时是常供电的,是不是可以排除芯片Power-On Reset的问题?
除此之外还有个小细节,就是PCA9535在出现问题之后,需要系统断电15秒以上,才可以恢复正常,否则仍然是错误的状态。而TCA9535,只需断电再上电即可恢复正常。