久芯网

STM32L431 RTC时间混乱问题

avatar uagood 提问时间: 2023-07-10 17:29:29 / 未解决
我现在在用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));
}


如需获得 STM32L431 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

6个回答
  • avatar xmshao
    回答时间: 2023-07-10 17:55:18

    首先确认下,是否发生过中途 完全断电的情况,即VDD和VBAT都掉电的情况。 再就是检查代码,这个不难验证。在供电稳定情况下,多做些测试,反复复位,看看RTC数据是否会混乱。

  • avatar butterflyspring
    回答时间: 2023-07-10 18:14:09

    推测有可能一下两点:1、 生产写入时可能没有写对 (通常机率比较小)。 2、 RTC寄存器是通过Vbat 引脚供电,也就是电池。在手册上看到有最低电压1.55V。 那么如果电池电压偏低,有可能使得寄存器值不准。

  • avatar 七七baba
    回答时间: 2023-07-10 18:41:26

    我最近也在用L431,你这个RTC肯定要连WIFI每天定时校准一下吧

  • avatar uagood
    回答时间: 2023-07-10 19:14:02
    xmshao 发表于 2022-12-8 11:08
    首先确认下,是否发生过中途 完全断电的情况,即VDD和VBAT都掉电的情况。

    都是包装好后从工厂通过物流回公司,然后抽检直接打开,除了运输搬运过程中的振动,没有别的操作

  • avatar uagood
    回答时间: 2023-07-10 19:33:48
    butterflyspring 发表于 2022-12-8 17:10
    推测有可能一下两点:1、 生产写入时可能没有写对 (通常机率比较小)。 2、 RTC寄存器是通过Vbat 引脚供电 ...

    工厂写入后读出来都是核对通过的,生产验收合格然后包装运回公司,除了搬运震动,没有别的操作。如果是电池完全脱离接触,时间应该都是回到原点,这个我扣掉电池,装好,重试过很多次。是否电池在连接断开的临界区,导致电压短时间的不稳定会导致这个问题?

  • avatar butterflyspring
    回答时间: 2023-07-10 20:06:13

    这个Vbat 是没有掉电复位的,所以保持数据的电压相应会比较低,存在临界区的可能性会比较大。

会员中心 微信客服
客服
回到顶部