基于MSP430单片机时钟芯片RTC-4553温度误差软件补偿
扫描二维码
随时随地手机看文章
1、前言
目前新型的电子式多费率电能表已逐渐取代老式电子电能表。多费率电能表计量不同时间段的用电量,根据不同的电能费率计算出用户使用电能费用。本文基于德州仪器的MSP430F435单片机,结合EPSON公司推出的高精度时钟芯片RTC-4553芯片,对多费率电能表的工作时间进行测量。由于电能表在不同地域及不同季节使用,温差很大,存在一定的温度漂移,造成一定的时间累积误差。因此必须进行适当的误差补偿,本文将基于MSP430单片机采用C 语言编程进行温度补偿方法,提高计时精度。
2、系统介绍
电能表的采用什么MCU有多种方案,不少已经投入实际使用。但是基于MSP430 单片机作为电能表主控模块还没有广泛投产使用。用于系统时间计量的串行时钟芯片很多,如DS1302、DS1307、PCF8485等时钟芯片。
图1是多费率三相电能表的时间计量部分,合理的把TI 的MSP430单片机和EPSON的 RTC-4553集合,发挥各自的优势,避开复杂的外围电路的设计,采用现成的高精度时间计量芯片。
2.1、硬件部分:
MSP430F435
T1公司的MSP430系列单片机是一种具有超低功耗的功能强大的单片机。新开发的F系列具有Flash存储器,在系统设计,开发调试及实际应用上比其他MCU都有比较明显的优势。
1、超低功耗
MSP430F系列运行在1MHZ时钟的条件下时,工作模式不同为0.1~400uA,工作电压为1.8~3.6V。
2、 超强处理能力
8MIPS的CPU内核,16位×16位的硬件乘法器。
3、灵活的配置方法
MSP430 F系列具有丰富的寻址方式,只需要27条指令;片内寄存器数多,可以实现多种运算;有高效的查表处理方法。这一切保证了可以编译出高效的程序。许多中断,可以嵌套,使用方便。
4、片上集成外围功能模块
MSP430 F系列集成了较多的片上外围设备。这些外围设备功能相当强大:12位A/D,精密模拟比较器,硬件乘法器,2组频率可以达到8MHZ的时钟模块,2个带有许多捕获比较的16位定时器,看门狗功能,2个可实现异步和同步及多址访问的串行通信接口,数十个可实现方向的设置及中断功能的并行输入,输出端口,拥有 SPI和UASRT通讯端口。
5、 高效的开发方式。
MSP430FX系列具有FLASH存储器,这一特点使得它的开发工具相当简便。利用单片机自身带有的JTAG接口或片内BOOT ROM内固化的默认的加载程序载入器Bootstrap可以进行串口或并口,通过UART将程序代码装入Flash 存贮器中。
可以在一台PC及一个小JATAG控制器的帮助下实现程序的下载,方便的完成在线程序调试。
RTC-4553
EPSON公司推出的RTC-4553时钟芯片。该芯片采用内置晶振和独特的数据方法,大大提高了时钟精度和可靠性。 RTC-4553配有串行通信接口,另有30×4bit SRAM,有2000~2099的百年日历,采用14脚SOP封装,电池耗电2μA,时钟误差<3 min/年且无需调整,是仪器仪表高精度时钟的理想芯片。
RTC-4553内部结构和引脚
串行RTC-4553时钟芯片的内部结构如图2所示。内置32.768khz晶振,它包含I/O控制器、移位寄存器、命令及逻辑控制器,表态RAM、实时时钟、计数器等部分。CS0为片选脚,低电平选中;WR为读写使能口,高为读,低为写;L1~L5为出厂调整精度和测试用,使用中悬空;CS1为芯片掉电检查口,可直接与系统电源连接,芯片测到该口为低时,自动进入低功耗状态;SCK为时钟口,SIN为数据输入口,SOUT为数据输出口。另外,芯片还有1 个时钟信号输出口TPOUT,该口可输出1024Hz或1/10Hz的信号,以供检测芯片的时钟精度所用。其中RTC-4553共有46×4bit寄存器。这些寄存器分3页,第1页共16个,分别为时钟寄存器和控制寄存器,用来存放秒、分、时、日、月、年、星期和3个特殊寄存器;第2页、第3页各有15 个,共30个SRAM寄存器,页面的选择通过操作控制寄存器3的MS1、MS0位来实现。
具体如表一所示:
地址 寄存器名 D3 D2 D1 D0 记数范围 说明
0 S1 s8 s4 s2 s1 0-9 1秒寄存器
1 S10 0 s40 s20 s10 0-5 10秒寄存器
2 MI1 mi8 mi4 mi2 mi1 0-9 1分寄存器
3 M10 0 mi40 mi20 m10 0-5 10分寄存器
4 H1 h8 h4 h2 h1 0-9 1小时 寄存器
5 H10 PM/AM 0 h20 h10 0-2 10小时寄存器
6 W 0 w4 w2 w1 0-6 星期寄存器
7 D1 d8 d4 d2 d1 0-9 1天寄存器
8 D10 0 0 d20 d10 0-3 10天寄存器
9 MO1 mo8 mo4 mo2 mo1 0-9 1月寄存器
A MO10 0 0 0 mo10 0-1 10月寄存器
B Y1 y8 y4 y2 y1 0-9 1年寄存器
C Y10 y80 y40 y20 y10 0-9 10年寄存器
D C1 TPS 30ADJ CNTR 24/12 - 控制寄存器1
E C2 BUSY PONC ------- * - 控制寄存器2
F C3 SYSR TEST MS1 MS0 - 控制寄存器3
RTC-4553时钟芯片各寄存器表一
其中C1寄存器的D0位用于设置显示时间的方式,置1为24 小时方式,置0 为12小时方式显示,C2寄存器的BUSY为0时芯片为正常状态,可读可写,当为1时,芯片的时钟寄存器禁止读写。
上电时PONC=1,所有寄存器被初始化,时钟指向00/01/01/12:00:00,星期日。并且所有其他寄存器清零。
寄存器C3用于设定工作方式和系统复位标志。其中MS1和MS0设置工作方式,00、01
表示选中时间寄存器和C1 、C2、C3寄存器,10和11时表示选中用户RAM和C3寄存器。
对于时间寄存器和功能寄存器有不同的写操作方法。RTC-4553采用特殊的写指令数据写入,对第0页的0D~0FH及第1页、第2页的寄存器的操作采用常规写法,地址后面的数据将原样写入寄存器中,而对时间寄存器写操作指令只能将内部的内容加1,并自动完成转换,不能直接写入数据。芯片这种独特的设计,防止了时钟区数据被意外干扰出现非法数据的可能,这正是该芯片高可靠性的原因所在。图3为时间寄存器写时序。
WR 和CS0为0时,芯片为写状态。SIN的前4位是寄存器地址,随着SCK脚上的时钟变化,内部寄存器的数据将出现在SOUT输出端口上。数据在SCK上升沿输入,在下降沿输出。前4位是所选寄存器的地址,后4位是寄存器的数据,即时间值。一次操作完成后其内部的内容加1,这是该款时钟芯片的特殊操作所在。
在片选择中芯片,WR置高时,芯片处于读出状态,输入需要8个时钟,4个用来输入地址;输出数据也需要8个时钟,包括4个地址位4个数据位。数据在 SCK上升沿输入,在下降沿输出。寄存器的地址由SIN脚输入,页面由MS0、MS1决定。图4为读时序图。
2.2、软件部分
对于MSP430单片机,由TI 公司自带的嵌入式软件开发平台IAR EMBEDDED WORKBENCH。该软件可对开发系统进行在线调试,带有C 编译器,可采用编程效率很高,维护方便的C语言编程。
1、 MSP430单片机端口功能设置
通过MSP430的P1.1-P1.4和P3.0端口对RTC-4553时钟芯片进行控制和数据传递,其中P1.1端口用于 SIN,P1.4 用于SCK,P1.2用于CS,P1.3用于SOUT,P3.0用于WR。这些端口的设定是基于多费率电表其他功能模块的安排而确定。
2、 主控程序解析
在该时间控制系统中在程序设计上主要涉及到数据的发送、接收、数据补偿。
第一、 数据发送程序流程图
第二、 数据接收程序流程图
第三、 时间数据补偿
其中α参量与温度的平方有关系的量。由温度传感器获取当前温度,与标准温度25℃相差平方 其中θΤ是当前检测到温度,MSP430 单片机有检测温度传感器,可检测当前温度;θx为标准温度25℃,在此温度下芯片可认为没有误差。根据多费率电表在
环境中实际温差,可取五分钟为一个时间间隔对芯片的误差进行累计,程序设计比较简单,把当前温度值代入上面的表达式中即可,设定一个变量存放误差,每24 小时补偿一次,当然,如果误差很小那么误差就忽略不计。对于多费率电能表对时间还有其他操作,比如时间校对,以及时间写许可等一些操作。这些都是软件必须的考虑的问题,以对时钟芯片正确操作。
从整个系统设计过程中发现,如何使用MSP430 单片机控制RTC-4553时钟芯片关键所在是程序算法的设计,数据采用BCD码,对十位和个位有着不同的操作方法,对于小时寄存器的操作又有不同的方法,这些都是必须考虑的问题。其温度误差补偿在测量系统尤其是计时的电能表中也是必须要考虑的温度,涉及到许多问题。否则将影响电表的计时精度,甚至是错误。
3、 结语
时钟集成芯片有很多种,可与许多种单片机组合用于测量时间系统,大多数电能表存在时间误差补偿问题。该测量系统有机的结合了MSP430 单片机、RTC-4553时钟芯片及C语言编程,基于MSP430 单片机已开发出性价比很高的三相多费率电能表,目前已正式投产。当然计量电能的三相多费率多功能表还涉及其他许多功能模块,包括诸如数据处理、数据显示,数据存储,数据通讯等模块。