我们遇到一个问题,PCF8523T 上的 I2C 接口在一段时间后变得无响应(命令后无 ACK)。
为了加速,我们以~800kbps(~10 倍客户速度)的速度运行该设备超过 4 小时,每秒 10 笔交易,并进入这种状态,因此重现它并非易事。
我们知道 PCF8523T 无法处理双启动条件,从数据表中可以看出:
“对于此设备,不允许重复启动。因此,必须释放 STOP
在下一次“开始”之前。”我们不会这样做,虽然已经验证过,但可能会出现故障。
我们相信,当这种情况发生时,VCC 和 VBAT 电源都是稳定的。
此设备上是否存在任何已知问题,即 I2C 将停止响应,这与 VBAT/VCC 切换无关?
通过电源循环,VCC 和 VBAT I2C 都可以再次工作,但是有没有什么方法,比如通过多个 SCL 周期重置内部状态机?
作为信息,“意外”写入登记册确实是个问题。
作为额外信息,它看起来像<~0.5V,需要同时在 VBAT 和 VDD 上施加电压,才能使上电复位功能起作用,将寄存器设置重置为默认值
这似乎是一个软件错误,确切的根本原因正在调查中。
DMA 用于 I2C 数据传输,并且不知何故(有时)跳过了 DMA 传输(和 I2C 数据)开头的一个字节,因此“Control_3”获得了“秒”的值,因此在 32 到 59 之间写入任何秒数都会将 RTC 转换为“直接切换模式”,并且由于 VBAT>VCC,这意味着 I2C 通信丢失。
如果写入的秒数在 0 到 31 之间时发生数据丢失,则是安全的。
我们会保持这个话题开放,直到我们确定这是问题所在,但我们会在几天内确定。
确实很奇怪的错误,但还是感谢您的输入!
我们已经更接近问题的核心了。
参考 RTC.PNG 文件中先前发布的原理图。
齐纳二极管 D404(DDZ9690)是 5.6v 齐纳二极管。
D405 在超低电流下的正向电压为~0.2V。
随着时间的推移,VBAT 电压在许多情况下将接近 5.4V,高于 VCC(5V)
我们将 Control_3 寄存器中的 PM[2:0] 设置为 0x0,这给出了 PCF8523T 的电源和电源模式之间切换的“标准模式”。
但有时我们似乎会无意中将 RTC 模式更改为“直接切换模式”,并且当 VBAT>VCC 时,I2C 通信停止工作。
知道什么原因会导致这种故障吗?
您好,您能否将地址从 0xD0 更改为 0xA2,并告诉我问题是否仍然存在?
附件是示意图。
C407 不是 NXP 推荐的(1µF 而不是 3.3µF),但当电压移除时,斜率远低于 0.7V/ms
在这种情况下,电压永远不会被消除。
RTC 周围的一些组件:
ABS07-32.768KHZ-7-T7pF晶体
KW-5R5C334H-R超级电容器
BSS138 N-MOSFET
两条 I2C 线直接连接到 MPC5517EAVLU66
引脚 31:PH1/AN26/EMIOS21/SDA_A
引脚 32:PH0/AN27/EMIOS20/SCL_A
您能分享一下您的示意图吗?
感谢这份内容丰富的文件。
不幸的是,我们既没有保持低 SDA 信号,也没有保持 SCL 信号。当这种情况发生时,它们都很高。
我们已经尝试过“恢复总线的顺序是发送 9 个时钟脉冲加上 STOP 信号。”的建议
但这并没有帮助。
当查看通信时,它的行为就像 RTC 上的 I2C 完全没有响应。