WCH沁恒单片机
直播中

刘慧

7年用户 1676经验值
私信 关注
[问答]

使用CH571时内部RTC如何进行温度补偿?

现在在使用CH571,有几个疑问需要确认:
1. 内部RTC如何进行温度补偿?  我的想法是通过晶振温度取消累加到30秒,对R16_RTC_CNT_32K进行调整,太频繁我任务会影响计数,导致误差更大。
2.如果上面的补偿可行,那么我利用1秒的周期中断,通过一个IO输出秒脉冲,29秒是未补偿的,第30秒是补偿后的秒脉冲,通过平均,是否可以反应我RTC的误差?  


通过中断输出的秒脉冲是否对精度有影响? 或者官方有更好的版本或者方案


关于温度,如果做晶振温度曲线补偿,那么芯片内部的温度传感器的精度是多少?资料说是10度?真的这么差吗?
如果真的这么差,那是否采用贴片热敏电阻,通过AD测量,可以获取到较高精度?

谢谢

回帖(1)

李刚

2022-8-18 10:41:20
CH571/573的内部低频时钟校准, 本身是支持定时强制校准的,在BLE的历程里面,config.h 文件中有个宏BLE_CALIBRATION_PERIOD 即为强制定时校准的间隔,这个值的单位是ms,默认是2分钟.
这个宏最终是在HAL_Init 函数中调用,并且开启一个定时的任务,如果使能了内部的rc 将会定时强制校准内部时钟    Lib_Calibration_LSI(); (在EVT>EXAM>BLE>HAL>MCU.c 文件中调用),  芯片专门设计了通过一定周期的RTC的cnt变化,记录高频时钟的变化次数的计数器, 可以参考这个代码的实现, 来了解芯片内部的低频RC校准原理.


另外,ble在初始化时候,也传入了获取温度,和内部低频rc校准的函数,
默认在(在EVT>EXAM>BLE>HAL>MCU.c 的函数CH57X_BLEInit 中)


至于芯片内部的温度sensor的精度,
实际上,sensor测量的绝对误差很大程度上取决于生产校准. 专门设计用于准确测量的sensor是在生产时通过若干严格校准的点的值来修正测量结果,最终实现高准确度([size=15.008px]accuracy)和高精密度([size=15.008px]precision)的. 而这些往往直接影响到芯片的最终成本.
CH571/573 其内部温度sensor设计的目的,是满足内部模块受温度影响时校准使用的, 具备比较一致的线性度, 这也正符合绝大多的校准只关心温度变化量,而并不关心测量结果的绝对误差这一特点.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分