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的时钟精度高,功耗低,掉电时可自动切换供电电源,并具有掉电时间自动锁存、时间标定、时钟校准等功能,因此该器件可广泛应用于电力系统、工业控制、智能仪器仪表、消费类电子产品。