遥控器等低功耗设备上的定时校准方法
2021-11-09伍衍亮梁炯辉
伍衍亮 梁炯辉
珠海格力电器股份有限公司 广东珠海 519070
1 引言
一般来说,MCU只需用到一个主时钟源,但遥控器等低功耗设备的MCU不同,需要用到主时钟源和副时钟源,两个时钟源是相互独立的。传统空调器等用的遥控器都采用外部32.768 kHz晶振作为副时钟,随着芯片技术的逐步发展,芯片内部低速振荡器的质量可靠性已经变得很好,从产品的成本要求和质量隐患等方面进行考虑,用芯片内部低速振荡器来取代外部32.768 kHz晶振已经成为趋势。
遥控器一般采用干电池供电,最核心的技术就是低功耗,芯片处于休眠阶段时,高速振荡器和其它部件均不工作,只有副时钟可以运行,所以可以把功耗降到很低。晶振的精度可达±20 ppm,而芯片内部低速振荡器的精度只有±15%左右,若遥控器设定了定时功能,传统遥控器采用外部32.768 kHz晶振,定时时间的精度则可达到±20 ppm。但采用芯片内部振荡器时,遥控器定时精度会由±20 ppm变为±15%,这会直接影响用户的使用舒适感。
本文将以瑞萨遥控器RL78芯片为例,探讨一种采用芯片内部高速振荡器来对芯片内部低速振荡器进行定时校准的方法。
2 系统框图
2.1 芯片本身特性
RL78芯片本身特性:内置高精度高速振荡器(1~24 MHz),精度±0.5%;内置低功耗低速振荡器15 kHz,精度±15%;STOP模式下RTC(实时时钟)可以选择15 kHz工作。其参数如表1所示,芯片内部高速振荡器精度-温度曲线如图1所示。
图1 芯片内部高速振荡器精度-温度曲线
表1 RL78芯片内部振荡器参数
2.2 芯片时基
MCU时钟源选择如图2所示:主时钟源选择内部高速振荡器,在芯片工作时运行;副时钟源由传统的外部接晶振的方案改为使用内部低速振荡器,在芯片休眠时工作。
图2 MCU时钟源选择框图
举例:内部高速振荡器选择4 MHz,用外部32.768 kHz晶振时,32.768 kHz在经过振荡器特定数目n的脉冲后得到一个0.5 s的时间脉冲,称之为RTC时钟,则采用芯片内部低速15 kHz振荡器方案时,在软硬件设置不更改的情况下,经过n个脉冲后,产生的RTC时钟为:
3 校准方案描述
遥控器设置定时时间后,要在休眠时进行计时,所用时基就是RTC时钟,用内部15 kHz低速振荡器产生的RTC时间为1.09227 s,误差为±15%,误差太大,所以要用精度为±0.5%的高速内部振荡器对定时时间进行校准。
校准原理是:内部低速振荡器精度很低,体现在产生的脉宽不能保持恒定和准确,所以每隔一定时间,就启动一次高精度振荡器,用高精度振荡器作为时间的标准量尺,来测量并校正低速振荡器的脉宽从而提高定时精度。
具体校准步骤介绍如下:
内部低速15 kHz低速振荡器作为副时钟源,产生RTC为1.09227 s;
设置定时后,芯片每1.09227 s从休眠模式唤醒,进行校准;
用芯片的一个定时器TIMER1来测量脉宽,时钟源为4 MHz高速振荡器,测量对象为15 kHz脉宽宽度,即可理解为频率为15 kHz的方波,一个方波的时间为
连续测量31次15 kHz的方波,因一直在运行,所以第一个方波是不完整的,故抛弃第一个方波,理论用时为:
计算同样2 ms内4 MHz的理论方波数为:
用定时器TIMER1在测量30个15 kHz的方波,得到实际上4 MHz的方波个数,从而得到实际误差:
以4 MHz的误差Δ代替1.09227 s的误差,每次累计,得到sum(Δ);
以15 min为一个校准基数,用15 kHz计时15 min,理论上要跑的RTC次数位:
即:休眠时运行824个1.09227 s就是15 min;
每次测量的2 ms均累计误差,如果sum(Δ)>8000,说明4 MHz多跑了一个2 ms,则RTC理论上要跑的次数C=C-1,sum(Δ)数值要减掉8000;
同理,如果sum(Δ)<8000,说明4 MHz少跑了一个2 ms,则C=824+1,sum(Δ)数值要加上8000。
当实际上RTC的运行个数等于C时,则说明15 min计时完成,其计时精度=芯片内部高速振荡器精度±0.5%。
4 实验验证
表2为定时时间误差理论值,表3为常温下的实测数据。从测试数据可以看出,芯片的计时误差范围在0.3%以内,小于内部高速振荡器的±0.5%,说明本文所述校准算法是有效的。
表2 定时时间误差理论值
表3 常温下实测数据
5 待机功耗的验证
带显示的遥控器,在休眠时,会每隔一段时间跳出休眠唤醒芯片,跑一次主循环,判断是否要更新显示。
原副时钟采用外部32.768 kHz晶振的遥控器,RTC为0.5 s,即每隔0.5 s会唤醒一次芯片。
副时钟采用内部15 kHz低速振荡器后,RTC为1.09227 s,即每隔
1.09227 s会唤醒一次芯片,相比较外部32.768 kHz晶振的方案,唤醒的间隔变长了,芯片处于休眠的时间变多了,故无需定时校准时,芯片的待机电流会比外部32.768 kHz晶振的方案要低。从这也可以看出,若对显示实时性要求不高的产品,可以适当延长唤醒的间隔,降低待机电流,延长电源寿命。
若开定时等需要计时的功能后,采用内部15 kHz低速振荡器的方案就需要进行定时校准,需在每个唤醒周期内加2 ms的校准程序,且校准期间,芯片需多打开一个计时器TIMER1对2 ms进行计时,故唤醒期间的电流是变大的。
以15 min为一个基准,理论计算待机功耗,假设校准前待机6 uA,芯片唤醒时全速运行1200 uA,则:
休眠时待机功率:900×998×6=5389200 W;
芯片唤醒期间的运行功率:824×2×1200=1977600 W;
定时校准时的功耗:(1977600+5389200)/900000 = 8.18 uA,比无校准时多2.12 uA的待机电流。
考虑到采用内部15 kHz低速振荡器后,芯片唤醒的时间间隔是采用外部32.768 kHz晶振方案时间间隔的一倍多,综合评估其待机功率是相当的。
用高精度的万用表实际测试开定时校准后的待机电流情况如表4。
表4 实测待机电流情况
从测试情况可以看出,开定时校准后,采用内部15 kHz低速振荡器方案比采用外部32.768 kHz晶振方案待机电流只升高约0.3 uA,不会对干电池寿命产生影响。
6 总结
本文介绍了用高精度的高速振荡器来对低精度的低速振荡器计时进行校准的算法,校准后使低速振荡器的计时精度等于高速振荡器的精度,解决了取消外部晶振方案的一大难题。取消外部晶振方案既降低了产品成本,又消除了产品上使用的晶振损坏隐患,降低产品的故障率。同时,此方案不会增大待机电流,可满足用户的使用需求,在遥控器等需要休眠的产品设计上有参考意义。