随着国家电网公司(以下简称国网)智能电表的招标,电表厂商之间的竞争日趋激烈,生产成本成为他们最关心的问题之一,只有降低成本才有可能在低价竞争中占据有利地位,逐步提高利润。这使得SoC成为关注的焦点。
从目前国网单相智能电能表整体方案来看,电子物料中成本较高的分别是实时时钟芯片、ESAM安全芯片、MCU、计量芯片、LCD驱动。ESAM安全芯片由于安全需要为国网指定使用,不具备集成条件;计量芯片虽然在趋势上最终要被集成到SoC芯片,但由于国网对此态度较为审慎,短时间难有突破。所以目前比较务实的SoC方案是将LCD驱动和实时时钟芯片集成进去。LCD驱动大部分IC厂商均有类似产品,并不存在技术难度。而实时时钟方面,单相智能电表使用的芯片主要为EPSON的8025T、Intersil 12020M、美信DS3231,单价均在7元以上,价格较贵,但其性能指标较高,-40℃~85℃范围内,精度优于0.432s/d,远高于国网要求的-25℃~60℃,1s/d的要求。要在SoC芯片中实现外置实时芯片接近的性能,虽有难度,但也并非完全不可能。
实时时钟的计时精度主要取决于时钟源的特性,以及如何根据时钟源的特性做出补偿机制。下面就这两个方面来做简单的介绍。
由于实时时钟芯片需要在电池供电情况下工作,所以功耗成为一个很重要的考虑因素,通常采用高ESR的音叉晶振。音叉晶振精度受到以下几个方面的影响。
生产工艺的偏差导致常温下的频率发生偏移。频率偏移量一般在±20PPM左右,精度稍高的在±5PPM;
温度的影响:这部分影响最大,频率偏移与温度近似成抛物线特性;
老化:晶振精度会随着工作时间的增加而发生变化。第一年晶振精度最大会有±3PPM变异,整个使用寿命期间会有±10PPM的变化;
激励功率的影响:过高的激励功率会影响时钟源的精确性和寿命,所以激励功率应控制在晶振可接受的范围内,对于常用的32768音叉晶振,激励功率应小于1μW;
负载电容:包括外接的负载电容和PCB杂散电容。负载电容对频率的影响称为牵引率,可用以下公式表示:
其中,CM为晶体的动态等效电容,C0为晶体的静态电容,CL为外接负载电容。
常见的补偿机制分为模拟方法和数字方法
模拟方法主要原理是利用负载电容对频率的影响来实现,通过增加和减少负载电容来达到补偿频率偏移的目的。这种方法的优点在于补偿的实时性,补偿后的每个32768kHz时钟都是准确的。但缺点也很明显,补偿的范围有限,电容太大或太小都将带来稳定性问题;补偿的非线性以及补偿效果与晶体本身的CM有关,这将带来批量调节的复杂性。
常用的数字补偿机制为TTF(数字脉冲吞吐法),通过吞吐时钟的个数来达到对计时精度的补偿。比如,对于32768Hz时钟源,通常只需要数32768个脉冲,就可输出精确的1Hz信号,但当时钟源振荡频率由32768Hz变大为32769Hz时,仍按32768个脉冲计数输出1Hz信号显然会偏快。这时可以通过增加1个脉冲即数32769个脉冲再输出1Hz,这时的1Hz就是精确的了。补偿的精度为1/32768=30.5PPM。如果需要提高补偿精度可以有两种办法:1) 增加吞吐脉冲数的周期时间,如由1s增加至60s,此时调节精度变为1/32768/60=0.51PPM,但实时性降低;2) 提高吞吐脉冲的频率,如内置100倍频的PLL电路,这样增加1个脉冲改变的宽度仅为原32768Hz的1/100,此时补偿精度可达到0.305PPM,但这样会带来功耗的增加。数字补偿方法的优点是不需要改变振荡器本身,其补偿范围大,又不会带来稳定问题,补偿效果确定,与晶体特性无关。缺点是补偿的实时性和功耗难以同时保证。
目前市面上的实时时钟芯片出于电池应用场合功耗考虑,大多采用模拟方法与数字低频时钟方法相结合的方法来实现实时性和功耗平衡,其缺点是工厂调校较多。而在智能电表特定应用场合,在电池供电情况下无需输出1Hz秒脉冲,此时对校正的实时性要求不高,可以使用低频脉冲补偿方法,同时满足功耗的要求。而在市电供电情况下要求输出稳定精确的1Hz秒脉冲,但此时对功耗要求不高,因此可采用高频脉冲方式来进行输出补偿,这便使得全数字补偿成为可能。
该系统采用的是中颖电子为国网量身定制的SoC芯片SH79F6431。
SH79F6431主要资源如下:
工作电压2.4V~3.6V(部分IO支持5V,用于PLC接口);
JTAG在线调试;
64KB FLASH程序存储空间;
256B IRAM,2816 XRAM;
3路UART接口,一路内置红外调制电路;
3路定时器,2路PWM,可用来产生ESAM和CPU卡时钟;
硬件IIC接口,方便与LCD,EEPROM通讯;
内置4通道10 bit ADC,可内部直接测量电池电压;
带补偿低功耗硬件实时时钟;
内置高速PLL;
内置掉电检测基准源,方便准确检测外部掉电;
内置电源切换电路;
内置4*39 LCD driver;
支持ISP。
从资源上看,SH79F6431完全可以满足国网单相电能表的应用,比较特别的是其RTC为硬件RTC,其运行独立于CPU,不受各种复位电路的影响,并可提供两种供电模式下的功耗兼顾和实时性补偿机制。在保证市电供电情况下,每个秒脉冲都准确稳定,而且用户接口统一,非常简单易用,用户只要将需要校正的频率偏差除以2.03并取整后写入校正寄存器(RTCDATA)即可。
图4中Rref,Rntc和C1组成测温电路,用于晶体环境温度的测量。考虑到功耗和自热问题,Rref和Rntc的阻抗较大,这里Rref选用100kΩ/0.1%电阻,Rntc采用50kΩ,C1为1000pF,用于满足ADC输入动态电阻的要求。
振荡器选用Seiko VT-200F及12pF,电容应采用温漂较小的C0G电容。
对于前文提到的各种影响时钟精度的因素,补偿方法如下:
工艺和负载电容的影响:
在常温(25℃左右)下测量出频偏B(单位PPM),将B/2.03写入RTCDATA即可。
老化的影响:
根据晶体实际工作时间和老化率,将老化引起的频偏除以2.03可得到老化补偿值,与常温补偿值和温度补偿值代数求和后,写入RTCDATA,每年补偿一次。
温度的影响:
用测温电路测量出当前的温度值,根据温度和晶振频率随温度变化的曲线,找到对应温度下由温度影响引起的频偏A。全温度范围内,要补偿满足国网要求,需确保温度控制在±1℃以内。
晶振的温度特性并非理想的抛物线,各厂商的温度特性均不相同,需要大量的温度实验来获取温度特性,工作量巨大。实践表明,每5℃一个点进行描绘,既可以保证精度,又可以使工作量得到较大的减轻。
补偿动作在市电供电下,可一分钟进行一次;在电池供电下,考虑到功耗,一般十五分钟一次即可。一次补偿的软件流程如图5所示。
本文小结
基于SH79F6431的内置RTC补偿SoC方案,简单易行,无需复杂运算,相比较独立RTC芯片成本得到大幅降低。目前该方案通过批量试产验证,性能可优于国网要求,全温度范围内,达到±0.3s/d,补偿效果关键取决于测温精度和物料的一致性。