CH573芯片RTC万年历校准

前言:

CH573芯片在使用蓝牙外部32K精度比较高,约为20ppm左右。使用内部32K误差约为百分之二,使用内部32768误差约为800ppm(万年历)

使用外部32K需要消耗一颗晶振的物料,同时芯片的相应GPIO会被占用。如果对于32K的误差要求不是很高,可以直接选择使用内部低频晶振。

对于内部低频晶振本身的误差无法消除,但是基于32K的功能如万年历可以进行时间的校准。

原理:

对万年历进行校准主要是对显示出来的时间进行处理。先将北京时间传递进程序中的BUF中存储,然后跟万年历的时间做对比,对比查看时间是否一致,如北京时间是10点30分,万年历显示出来的时间是10点20分,则将时间差值加上当前万年历显示出来的时间。注意:不可以重新初始化RTC时间,这会导致RTC时间错乱,结合蓝牙使用会导致蓝牙断连。

总结一下:在设置完RTC后,如果要重新校准时间,则自定义变量,做偏差计算即可。

实际操作:

上述提供的原理性讲解,这里结合蓝牙的功能实现万年历举一个例子:

 这里同样设置1s获取一次时间同时打印出来,假设此时的时间已经慢1s,这里通过外部留一个接口手动的添加1s上去。

 

 最终显示慢1s则按下该按键手动添加1s,如图:

 注:

不可以重新初始化RTC的时候,即调用RTC_InitTime这个函数,因为蓝牙系统的TMOS任务就是基于RTC运行的,如果初始化RTC,会导致TMOS任务的时间参数被修改,从而导致蓝牙任务时间错乱,最终导致蓝牙断开等现象。

posted @ 2022-10-10 19:43  SweetTea_lllpc  阅读(622)  评论(0编辑  收藏  举报