[东软电量计开发]:ES32L0910本地RTC校准(三)

简介

电量计ES32L0910本地有个RTC,初始化的日期是1970-01-01 00:00:00,如果不校准时间,芯片通上电之后会以1970-01-01 00:00:00为起点开始计时,那这个时间和现实的物理时间是相违背的,于是乎我们就需要去校准一下本地RTC,一般来说校准时间的方式有很多种,可以通过IIC连续写入字节依次把年、月、日、时间写进去,也可以把RTC转化为UTC时间戳(秒)发出去,电量计再对应转换成RTC。

电量计ES32L0910采用的是UTC时间戳校准的方式,这里采用AI编程,把模块化的程序用AI生成就可以,我们主要对AI生成的程序审核、DEBUG、优化等,这样就简单多了,效率大大提升。

接下来紧跟步伐,一步步来深入了解下这里面的逻辑。

一、何为UTC

1.1 UTC

UTC是协调世界时间,全球统一的标准时间基准,,基准点为 0 时区,不分时区、没有夏令时,全球同一时刻 UTC 数值完全一致。

那北京时间属于东八区,和UTC的转换规则:

北京时间=UTC + 8 小时;

UTC = 北京时间 − 8 小时

举例:UTC:2026-06-09 08:00:00

对应北京时间:2026-06-09 16:00:00

1.2 UTC时间戳

从 1970-01-01 00:00:00 UTC 到现在的总秒数。

  • 单位:
  • 10 位数字
  • 全球统一,无时区、无夏令时

北京时间戳 = UTC时间戳 + 8×3600。

对UTC的概念了解清楚了,那下一步就可以实现RTC转换UTC时间戳了。

二、RTC转化为UTC时间戳

根据上面我们知道北京时间戳=UTC时间戳 + 8×3600,UTC时间戳即1970-01-01 00:00:00到现在的总秒数。

咱们先把UTC的时间戳来转化一下。函数如下图:

​​​​​

这个函数最后的返回值就是北京时间的时间戳,这里传参的时候传入的就是RTC时间,是主控的RTC时间,RTC的数据类型定义如下图:

这里说明一下,这个小模块的程序是AI生成的,用的Cursor工具,只需要的把需求明确输入即可,不到1分钟就生成了,如果自己手搓的话,咋滴也得个把小时,还可能有漏洞更耗时,AI生成基本一次性就成功了。

主控的RTC转化为UTC时间戳之后,紧接着就是设置给电量计。

三、电量计UTC

根据"电量计编程手册",设置UTC的寄存器如下图:

然后把UTC时间戳分成4个8位的数组,分别设置上面寄存器即可。

32位数据转换为8位数组函数,如下图:

设置完这一步基本就完成了RTC的校准了,下面就可以读一下电量计的RTC是否对应上设置的实时时间,按照以上流程操作基本应该是没问题的。

这里提示下,可以根据自己的软件做一些容错性设计,比如:RTC校准的时间形成闭环,做一下回读。

四、总结

敲重点,根据以上的操作流程,这里总结一下哪些地方需要注意:

-主控RTC转UTC时间戳,先获取主控的RTC时间,转化为UTC时间戳,这里注意下闰年月份问题;

-电量计UTC设置,UTC时间戳是32位数据,根据电量计的寄存器把UTC设置进去;

-回读设置,设置OK之后,回读是否设置成功,形成闭环,才能保证没问题。

相关推荐
agathakuan10 天前
從零開始在家開發 IoT: OpenOCD 與 GDB 協作指南
stm32·gnu·rtc
小灰灰搞电子21 天前
rt-thread RTC设备使用详解
rt-thread·rtc
普中科技1 个月前
【普中 51-Ai8051 开发攻略】-- 第 24 章 RTC 时钟实验
单片机·嵌入式硬件·rtc·实时时钟·普中科技·ai8051u·aicube
深圳市晶科鑫实业有限公司1 个月前
RTC模块vs. 32.768KHz晶振:深度对比与选型指南
stm32·单片机·嵌入式硬件·实时音视频·rtc
海水冷却2 个月前
2026 主流 RTC SDK 选型参考,7 大维度横向对比
实时音视频·rtc
无心水3 个月前
时间处理工程落地指南:数据库/日志/API/定时任务
java·大数据·数据库·日志·分布式架构·utc·gmt
海水冷却3 个月前
从 Clubhouse 的崛起与陨落,看语聊房 RTC SDK 的变化
rtc·语聊房
CosimaLi3 个月前
读取RTC出现 Power loss detected, invalid time; RTC_RD_TIME: Invalid argument
rtc
普中科技3 个月前
【普中STM32F1xx开发攻略--标准库版】-- 第 34 章 RTC 实时时钟实验
stm32·单片机·嵌入式硬件·开发板·rtc·实时时钟·普中科技