大家好,
我目前正在将PCA2131汽车实时时钟集成到电池管理系统 (BMS) 中。
我遇到了一个持续存在的问题,即报警标志(AF,Control_2 寄存器 01h 的第 4 位)一直处于高电平。基本的 SPI 通信功能完美——我可以成功设置和读取时间寄存器,没有任何问题。但是,我无法在初始化期间清除 AF 标志。
重要背景信息:
我正在执行的序列:
读取 Control_2(寄存器 01h)。AF 位读取值为 1。
在我的本地结构体中,将 AF = 0 和 AIE = 0 设置为清除标志。
将修改后的字节写回 Control_2。
再次读取 Control_2。AF 位仍然是 1。
我已附上调试会话的屏幕截图,显示了清除之前、清除操作期间和读取之后寄存器的状态。
我的问题:
鉴于所有 AE_X 位均已禁用,还有哪些内部条件可以强制 AF 标志立即重新置位(或阻止其清除)?
任何见解或建议都将不胜感激!
嗨,维卡斯,
谢谢你的确认。根据数据手册中描述的 PCA2131 行为,并假设 AE_S/AE_M/AE_H/AE_D/AE_W 均为 1,则 RTC 似乎没有合法地重新触发 AF。最可能的原因是位域顺序不匹配。能否请您获取并分享一下读取和写入 SPI 消息的三个范围?确认写入和读取的时序和寄存器/位。
最诚挚的问候,
约瑟夫
嗨,维卡斯,
请仔细核对报警寄存器。这些寄存器的地址为 0Eh 到 12h。
请尝试将所有 AE_x 位再次设置为 1。
最诚挚的问候,
约瑟夫