2393538_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2393538_zh-CN

2393538_zh-CN

PCA2131:控制寄存器 2 中的 AF(报警标志)将无法清除

大家好,

我目前正在将PCA2131汽车实时时钟集成到电池管理系统 (BMS) 中。

我遇到了一个持续存在的问题,即报警标志(AF,Control_2 寄存器 01h 的第 4 位)一直处于高电平。基本的 SPI 通信功能完美——我可以成功设置和读取时间寄存器,没有任何问题。但是,我无法在初始化期间清除 AF 标志。

重要背景信息:

  • 在尝试清除 AF 标志之前,我已经确保报警寄存器(0Ah 到 0Eh)中的所有报警使能 (AE_X) 位都设置为 1(禁用)。

我正在执行的序列:

  1. 读取 Control_2(寄存器 01h)。AF 位读取值为 1。

  2. 在我的本地结构体中,将 AF = 0 和 AIE = 0 设置为清除标志。

  3. 将修改后的字节写回 Control_2。

  4. 再次读取 Control_2。AF 位仍然是 1。

我已附上调试会话的屏幕截图,显示了清除之前、清除操作期间和读取之后寄存器的状态。

我的问题:

  1. 鉴于所有 AE_X 位均已禁用,还有哪些内部条件可以强制 AF 标志立即重新置位(或阻止其清除)?

任何见解或建议都将不胜感激!

Re: PCA2131: AF (Alarm Flag) in Control Register 2 will not be able to clear嗨,约瑟夫,

感谢您的支持,也感谢您为我指明了正确的方向。

我用示波器检查了 SPI 消息,并验证了硬件值是正确的。根据您的建议,我进一步调试了我的代码,并确认根本原因确实是位域顺序不匹配。

我已经修复了匹配错误,问题现已彻底解决。再次感谢你的帮助!

此致,
维卡斯
Re: PCA2131: AF (Alarm Flag) in Control Register 2 will not be able to clear

嗨,维卡斯,

谢谢你的确认。根据数据手册中描述的 PCA2131 行为,并假设 AE_S/AE_M/AE_H/AE_D/AE_W 均为 1,则 RTC 似乎没有合法地重新触发 AF。最可能的原因是位域顺序不匹配。能否请您获取并分享一下读取和写入 SPI 消息的三个范围?确认写入和读取的时序和寄存器/位。

JozefKozon_2-1783678052638.png


最诚挚的问候,

约瑟夫

Re: PCA2131: AF (Alarm Flag) in Control Register 2 will not be able to clear哎呀,不好意思,打错了!正确的地址是 0Eh 到 12h。我刚刚又检查了一遍,我的代码里确实没问题,所以只是我的消息里有个错误。Re: PCA2131: AF (Alarm Flag) in Control Register 2 will not be able to clear

嗨,维卡斯,

请仔细核对报警寄存器。这些寄存器的地址为 0Eh 到 12h。

JozefKozon_0-1783672873300.pngJozefKozon_1-1783672931555.png

请尝试将所有 AE_x 位再次设置为 1。

最诚挚的问候,

约瑟夫

标记 (1)
无评分
版本历史
最后更新:
6 小时之前
更新人: