摘要:介绍具有SPI接口的多功能实时时钟器件M41T94,它具有精度高、功耗低等特点。提出一种M41T94在配网监测终端中的应用设计。结合单片机C8051F340的控制,给出配网监测终端实时时钟模块的软硬件设计。
关键词:实时时钟;M41T94;配网监测;SPI接口
1 引言
在单片机应用和智能仪器仪表中,尤其是分布式控制系统,实时时钟已成为不可或缺的一部分。实时时钟器件不仅提供系统时钟,而且还附带其他功能,服务于应用系统。一般时钟器件存在精度低,功耗大,功能少,操作繁琐诸多不足。复杂系统采用高性能多功能的时钟器件,可减少分立元件,提高系统集成度和稳定性。因此,基于实时时钟的功能特点,提出一种基于M41T94在配网监测终端应用的设计方案。
2 M41T94简介
M41T94是一款高精度、多功能、低功耗实时时钟器件,使用SPI串行总线与外部单片机MCU传输数据。M41T94除具有大多数时钟器件的时钟和日历、闹钟设置功能外,还提供更精确的时钟(十分之一秒、百分之一秒),以及掉电时间自动锁存、时间标定、看门狗等功能。M41T94实时时钟器件采用SOIC封装,具有16引脚和28引脚两种版本类型,其引脚配置如图1所示。其中28引脚版本内部封装电池和晶体振荡器,而16引脚版本则需外接电池和品体振荡器。
以16引脚版本为例,其主要引脚功能为:
SDO(Serial Data Output):串行数据输出引脚。该引脚通过SPI接口输出时钟、日历、控制及状态信息。
SDI(Serial Data Input):串行数据输入引脚。该引脚输入命令字及数据信息。E(Chip Enable):器件使能引脚。当E为高电平时,器件禁止,SDO保持高阻状态;器件操作前,须先将E置为低电平。
VBAT(Battery Support Voltage):外部电池供电引脚。系统掉电时,M41T94自动切换至电池供电。
RST(Reset Output):复位输出引脚。当监测到掉电或其他复位输出时,RST输出复位信号用于控制器的复位源。
M41T94采用SPI接口,便于与单片机通信;并具有64字节带电保护RAM,其中20个8位寄存器供内部时钟系统使用,44字节通用NVRAM供用户使用。通过SPI接口,主机发送不同的命令字选择相应的寄存器,实现对M41T94的读写及控制操作。
3 配网监测终端的实时时钟系统
配网监测系统是南配网监测终端构成的分布式电网参数监测系统。监测终端实时测量并计算电压、电流、有功功率、无功功率、功率因素等电网参数;统计和记录供电时间、停电时刻、停电时间、来电时刻、日供电合格率、月供电合格率、正点电压值等信息。因此,时钟是监测终端不可或缺的部分。由于监测终端长时间的挂网运行,且记录的参数都与时间有关,要求时钟具有较高的走时精度。M41T94时钟计时可达百分之一秒,并具有掉电时间锁定,时钟标定等功能,能够满足配网监测终端的要求。M41T94在配网监测终端中主要实现系统掉电、上电时间记录、自身时间标定、系统定时校时等任务。在配网监测终端中,记录配网停电、来电时刻是配网运行状态的重要参数。正常运行状态下,M41T94内部时钟寄存器数据不断刷新,实时记录当前时刻时间,当M41T94自动监测VCC下降到监测点VCC时,寄存器0Ch单元的HT位硬件置为1,阻止时钟寄存器刷新,此时时钟寄存器的数据就是准确的掉电时间。当发生掉电时,M41T94能够自动切换电源,利用外部电池供电,时钟保持正常运行,这样就保证时间的准确性和实时性。因此,当C8051F340单片机上电复位时,它首先读取实时时钟的时间,即为掉电时刻的时间值,然后由软件将HT位清零,M41T94用当前实时时间刷新时钟寄存器,再次读取,就可得到上电时刻时间。为了保证读取的上电时间准确,要求在上电复位后尽快完成上电时间的读取。
配网监测终端是在外界环境下运行,要求测量终端具有较高的时间精度,M41T94本身具有高走时精度,但在长时间的运行中,产生时间漂移,造成时间的累积误差。通过时间标定,进一步提高M41T94的精度,从而大幅减少这种累积误差。M41T94的分级校正是以每64 min为一个校正循环,每个调级刻度将对每64 min的前62 min产生校正。而M41T94的外接晶体振荡器为32768 Hz。因此,每个调级刻度,即是对每125 829 120(64分×60秒/分×32 768周期/秒)个实际的晶振周期中,增加512个,或减少256个振动周期,即+4.068 ppm或-2.034 ppm。通过实际测试,得到各个温度段的晶振校正系数,建立每个温度段的时钟校正系数表。根据当前温度,设定相应的校正系数,从而得到精确时钟。通过标定后,在25℃温度下,时钟的精度优于±2 ppm。
终端实时时钟的定时校时能够消除由于累积误差造成的时间漂移,保证实时时间的准确性。在配网监测终端中,实时时钟M41T94本身具有较高精度,经时间标定后,可进一步提高精度,使其一年的时钟累积误差约±1 min。因此在满足系统要求的同时,可设定每半年进行一次时钟校准。M41T94有闹铃定时功能,利用此功能定时时钟校准,通过向0Ah~0Eh寄存器写入准确时间值,并置AFE位为1。当时钟时间与该时间匹配时,标志位AF置1,且激活IRQ/FT/OUT引脚产生中断,通知MCU校时时间到,MCU通过向时钟服务器请求获取当前准确时间进行实时时钟校准。同时,重新设置0Ah~0Eh寄存器的数值,为下次校时作准备。根据M41T94的特点和功能,适用于配网监测终端时钟系统。
4 M41T94在配网监测终端中的应用
4.1 硬件设计
采用增强型的51单片机C8051F340作为控制器,图2为C8051F340与M41T94的接口电路。单片机C8051F340平均每个时钟周期执行1条单周期指令,在相同时钟下,大大提高了指令运行速度。该设计系统上电后,要求在软件控制下快速读取掉电和上电时间,C8051F340的快速运行能够保证读取时间的准确性;C8051F340还具有64 K字节的Flash和SPI接口,便于与M41T94数据通信和存储;C8051F340具有多路A/D转换,在电网测量系统中可减少A/D转换的分立元件,增加系统的集成度和稳定性;C8051F340具有可编程数字I/O和交叉开关,允许将片内数字系统资源映射到端口I/O引脚,用户可根据特定应用选择通用I/O端口和所需数字资源的组合;同时C8051F340具有与标准51单片机相同的指令集、软件设定I/O端口配置、可通过JTAG接口在线调试等特性,因此,C8051F340适合用作系统控制器.
M41T94使用SPI串行通信接口,易于实现与具有SPI接口单片机C8051F340的数据通信。SPI接口通信是通过SDI、SDO、SCK和E等引脚实现。图2中R54-2,R54-3和R54-4为SPI总线的上拉电阻,M41T94片选信号E引脚与C8051F340的P4.4引脚连接;M41T94的复位输出RST引脚与C8051F340的RST连接,将C8051F340的RSTSRC.1(PORSF位)清零,禁止C8051F340内部VDD监视器作为MCU的复位源,这样当掉电时,M41T94输出复位信号使MCU复位,防止MCU对M41T94读取数据错误。
4.2 软件设计
C8051F340通过串行通信接口SPI控制M41T94。通信时,C8051F340选用主模式作为主机,M41T94作为从机。为了与M41T94相对应,C8051F340采用3线连接模式,不使用NSS。控制位CPHA(SPI0CN.5)=1,SCK时钟第2个边沿采样数据,CPOL(SPI0CN.4)=1,空闲状态时,SCK引脚为高电平。只有片选信号E置为低电平,C8051F340才能控制M41T94,当E变高时,通信结束。首先时钟器件E引脚置为低电平,紧接着单片机通过SPI接口发送命令字,然后对M41T94读取或写入数据。对内部RAM的读写各有两种方式,单字节读写和多字节连续读写。前者发送一次操作命令只读/写1个字节数据,后者发送1次命令可连续读写多个字节数据。SPI的数据传输是从每一个字节的最高位(MSB)开始。C8051F340对M41T94的连续读取模式中命令字包括一个8位字节,该字节的最高位(D7)为读/写选择位,D7=1时,表示对M41T94写操作,D7=0时,表示读M41T94数据;该字节低7位为M41T94的地址选择位,在连续读写模式下,该地址为连续读/写的起始地址,在读/写过程中,地址指针自动递增,当递增到3Fh后,指针自动返回到首地址(00h)。当对时钟、日历寄存器(00~07h)读写,或掉电时,M41T94停止对这些寄存器(00~07h)的刷新,以保证读写数据的准确性。
4.2.1 初始化
C8051F340对M41T94的控制就是读写M41T94的寄存器和NVRAM。在M41T94读写前,C8051F340首先要对其初始化,即对M41T94寄存器初始化,其程序代码如下:
4.2.2 实时时钟掉电、上电时间
当系统掉电时,M41T94自动锁存掉电时间,上电后读取掉电时间和当前实时时间。其相应程序代码如下:
5 结束语
M41T94的时钟精度高,功耗低,掉电时可自动切换供电电源,并具有掉电时间自动锁存、时间标定、时钟校准等功能,因此该器件可广泛应用于电力系统、工业控制、智能仪器仪表、消费类电子产品.