在代码迁移任务中,我们遇到了 BSF 标志被设置的问题。由于 BSF 标志被设置,分钟寄存器中的 EMON 位也被设置。
因此,屏幕上显示的分钟数是一个任意值。此外,年份值无法正确保存,即使在设置了 RTC 日期和时间之后,年份值仍然持续显示 2000。
我尝试测试了下面提到的条件,但问题仍然存在。
我将标志寄存器(0x43)设置为 0x00 并立即读取它;它显示 0x00。然而,3秒后我再次读取寄存器时,其值又被设置为0x08(或0x00)。
你好 Ris_eek
再会!
BSF 标志并非只是无法清除。相反,RTC 检测到新的电池切换事件,并再次设置 BSF。根据数据手册,当电池切换逻辑检测到电源转换事件时,BSF 将被设置。
它在大约 3 秒后重新确立的事实意味着 VDD 电源反复降至电池切换阈值以下,导致反复出现 VDD>VBAT>VDD 转换。每次转换都会重置 BSF。
RafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.pngRafaR_0-1788887610951.png
这种持续的电压波动导致 RTC 不断 RESET,这就是为什么它只显示 2000 年的原因。我建议检查一下电源信号是否存在问题。
希望这些信息对您有所帮助,如果您还需要其他帮助,请告诉我。
祝你今天过得愉快,一切顺利。
在硬件方面,VDD(4.93 VDC)和VBAT(3.02 VDC)电压是恒定的。为防止电压波动,在电池电源两端并联了一个 100 nF 的电容。
电池开关寄存器(26h)设置为 0x00。因此,BSM(电池开关模式)配置为在 Vth 电平进行切换。Vth 电平为 1.5 V,因为 BSTH(电池开关阈值电压)位设置为 0。
如图 25 所示(如前一封邮件中所述):
当 VDD < Vth 时,BSF 设置为 1。
当 VDD > VBAT 时,BSF 应被清除。
然而,在通电状态下,测得的电压为 VDD = 4.93 VDC,大于 VBAT = 3.02 V。即使如此,边防部队也未能通过清剿。
请问为什么即使 VDD 大于 VBAT,BSF 仍然保持设置状态?
你好 Ris_eek
再会!
数据手册上写着:
声明标志 BSF(寄存器标志,地址 2Bh)可用于在引脚 INTA 和 INTB 上产生中断。中断可以生成为脉冲信号,也可以生成为持续有效的信号,该信号遵循位 BSF 的条件。BSF 保持设置状态,直至接到命令解除。
我发送的参考图像还显示以下内容:“通过接口清除。”
这不会自动完成,你需要手动清除。
希望这些信息对您有所帮助,如果您还需要其他帮助,请告诉我。
祝你今天过得愉快,一切顺利。