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

STM32L431 RTC时间混乱问题

[复制链接]
uagood 提问时间:2022-12-8 10:06 / 未解决
我现在在用STM32L431做门锁,5号电池供电(有纽扣电池),五百台门锁生产时写入读出正常(2022年),从工厂运回公司,抽检发现某台门锁的RTC时间混乱了,变成了2073年,断电重启后还是2073年。这可能是哪方面的原因,如何解决?
void Get_RTC_Calendar(struct tm *Gettime)
{
  Gettime->tm_hour = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_TIME_GetHour(RTC));
  Gettime->tm_min  = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_TIME_GetMinute(RTC));
  Gettime->tm_sec  = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_TIME_GetSecond(RTC));
  Gettime->tm_year = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_DATE_GetYear(RTC));
  Gettime->tm_mon  = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_DATE_GetMonth(RTC));
  Gettime->tm_mday = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_DATE_GetDay(RTC));
  Gettime->tm_wday = __LL_RTC_CONVERT_BCD2BIN(LL_RTC_DATE_GetWeekDay(RTC));
}

收藏 评论6 发布时间:2022-12-8 10:06

举报

6个回答
xmshao 回答时间:2022-12-8 11:08:53
首先确认下,是否发生过中途 完全断电的情况,即VDD和VBAT都掉电的情况。


再就是检查代码,这个不难验证。在供电稳定情况下,多做些测试,反复复位,看看RTC数据是否会混乱。
butterflyspring 回答时间:2022-12-8 17:10:05
推测有可能一下两点:1、 生产写入时可能没有写对 (通常机率比较小)。 2、 RTC寄存器是通过Vbat 引脚供电,也就是电池。在手册上看到有最低电压1.55V。 那么如果电池电压偏低,有可能使得寄存器值不准。

七七baba 回答时间:2022-12-9 13:22:02
我最近也在用L431,你这个RTC肯定要连WIFI每天定时校准一下吧
uagood 回答时间:2022-12-12 10:37:23
xmshao 发表于 2022-12-8 11:08
首先确认下,是否发生过中途 完全断电的情况,即VDD和VBAT都掉电的情况。

都是包装好后从工厂通过物流回公司,然后抽检直接打开,除了运输搬运过程中的振动,没有别的操作
uagood 回答时间:2022-12-12 10:41:51
butterflyspring 发表于 2022-12-8 17:10
推测有可能一下两点:1、 生产写入时可能没有写对 (通常机率比较小)。 2、 RTC寄存器是通过Vbat 引脚供电 ...

工厂写入后读出来都是核对通过的,生产验收合格然后包装运回公司,除了搬运震动,没有别的操作。如果是电池完全脱离接触,时间应该都是回到原点,这个我扣掉电池,装好,重试过很多次。是否电池在连接断开的临界区,导致电压短时间的不稳定会导致这个问题?
butterflyspring 回答时间:2022-12-13 11:14:42
这个Vbat 是没有掉电复位的,所以保持数据的电压相应会比较低,存在临界区的可能性会比较大。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版