你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

RTC 意外恢复到初始值

[复制链接]
STMCU小助手 发布时间:2022-8-1 22:43
1. 问题描述
客户反馈在使用 STM32F446 的产品做上电、掉电测试时,RTC 会意外恢复到配置的初始值。
2. 问题分析及解决
通过与客户邮件沟通,了解到客户的 VBAT 引脚上有独立的电池供电,在代码中当第一次启动时会检查备份寄存器中保留的一个标志,如果是第一次运行,则会设置 RTC 的初始化,包含年月日时分秒,如果不是,则跳过,后面只读取 RTC 内的时间信息,并不再修改。
为了使用统一的参考物,先建议客户使用 Cube 库下的官方示例代码:
STM32Cube_FW_F4_V1.25.0\Projects\STM32F446ZE-Nucleo\Examples\RTC\RTC_Calendar, 此代码刚好可以针对此问题进行分析。 客户使用此示例代码测试问题依旧。
查看示例代码,为了排除 HSE 与 LSE 的影响,建议客户将 HSE 改为 HSI, LSE 改为 LSI,这样一来,完全跟板上高速晶振无关,跟 32.768K 的低速也无关。客户使用修改后的代码问题依旧。
查看相关代码:
  1. /*##-2- Check if Data stored in BackUp register1: No Need to reconfigure RTC#*/
  2. /* Read the BackUp Register 1 Data */
  3. if(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR1) != 0x32F2)
  4. {
  5. /* Configure RTC Calendar */
  6. RTC_CalendarConfig();
  7. }
复制代码

如上面代码所示,每次上电后会读取 BKP_DR1 的值,判断是否为第一次启动,如果是,则配置 RTC。换句话说,出现问题时,这个判断肯定出现问题,导致重复配置 RTC,也就是备份寄存器的值丢失!是什么原因导致备份寄存器的值丢失呢?
同时我这边在 NUCLEO 板上尝试重现客户的问题,但无论如何尝试都无法重现,现在两边所使用的测试软件一模一样,只是各自的硬件平台有所差异,看来就是这个硬件上的差异带来的问题。于是下一步比较客户的硬件与 NUCLEO 板有何不同。
首先怀疑是 VBAT 引脚。要是 VBAT 再现异常,RTC 重新配置就很正常,但客户的 VBAT真的会出现问题么?下面是客户 VBAT 引脚的相关电路:


N$VBLW}]U$A$_1~C9UT]I$Q.png

如上图所示,客户 VBAT 外部接一电池,当 VDD 有电时,VDD 将将电池充电,当 VDD 掉电时,电池给 RTC 供电。于是向客户提出 VBAT 的在掉电上电测试过程中的波形:


K$NSFNW()@X0KA64YRR_}7X.png

如上图所示,VBAT 引脚的波形,在电源掉电上电的过程中并没有出现掉电的情况,也就是说,RTC 擁有穩定的电源供应。为了避免 VBAT 的影响,要客户干脆将 R8 这个电阻去掉再测试, 结果问题依旧存在。


完整版请查看:附件




LAT0787_RTC意外恢复到初始值.pdf

下载

451.21 KB, 下载次数: 0

收藏 评论0 发布时间:2022-8-1 22:43

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版