(1)读写速度快。串口FRAM的时钟速度可达20 MHz,并口FRAM的访问速度达70 ns,几乎无须任何的写入等待时间,可认为是实时写入,所以不用担心掉电后数据会丢失;
(2)擦写次数多。一般认为FRAM的擦写次数为100亿次,而最新的铁电存储器的写入次数可达一亿亿次,这几乎可以认为是无限次;
(3)超低功耗。FRAM的静态工作电流小于10μA,读写电流小于150μA。
目前,铁电存储器的主要生产商Ramtron公司的FRAM主要包括串行FRAM和并行FRAM两大类。而串行FRAM由于可节省大量的管脚而得到更为广泛的应用。实际上,串行接口FRAM又分为I2C和SPI两种接口。经过多方比较,本设计选择带有SPI接口的FM25640来进行说明。
1 FM25640芯片介绍
1.1 FM25640的主要特性
FM25640为64Kb的非易失性铁电存储器,结构容量为8192×8位,具有100亿次的读写次数,掉电数据可保持10年。该器件支持SPI的模式0&3,最大可达到5 MHz的总线速度,采用8脚SOP或DIP封装。
1.2 引脚功能
FM25640的引脚图如图1所示。各引脚的具体功能如下:
CS:片选,低电平有效。当它为高电平时,所有的输出处于高阻态,芯片忽略其它输入;当它为低电平时,芯片功能开启,并根据SCK的信号而动作。
SO:串行输出。数据输出引脚。
WP:写保护,低电平有效时,将阻止向状态寄存器进行写操作。
VSS:电源地。
SI:串行输入。数据输入引脚。
SCK:串行时钟。
HOLD:保持端口,低电平有效。当SCK为低电平且该脚亦为低电平时,暂停当前的操作。而当SCK为低电平而HOLD为高电平时,则恢复被暂停的操作。
VDD:5 V引脚电源。
1.3 SPI接口
FM25640带有高速SPI(Serial Peripheral Interface)接口。在通过它来进行串行通信时,其最大可以达到5 MHz的操作速度。
SPI接口是一种时钟和数据同步的串行接口,应使用SO、SI、SCK、CS四个引脚,可与任何具有SPI接口的MCU直接连接。对于没有SPI接口的MCU,SPI可以与普通I/O口相连。然后用软件模拟SPI接口,当然,也可以选择其它带有I2C总线接口和并口的FRAM产品。
SPI有四种工作方式。分别为方式0、方式1、方式2和方式3,FM25640支持其中的方式0(CPOL=0,CPHA=0)和方式3(CPOL=1,CPHA=1),等两种方式,数据可在时钟的上升沿移进FM25640,而且数据一般出现在CS有效后的第一个时钟的上升沿。因此,如果时钟从高电平开始,将不能产生第一个有效的上升沿而导致数据传输失败。数据传输时,所有移进和移出FM25640的数据都是8位为一组,它们与时钟信号同步,最高有效位(MSB)在前,串行数据在时钟的上升沿移进,并在时钟的下降沿移出。FM25640在SPI方式0和SPI方式3时的操作时序如图2所示。
SPI接口是通过操作指令来控制的,FM25640的操作指令集如表1所列,该指令集共有6条指令。当有效后,第一个传输的字节就是操作指令,紧跟着操作指令之后的是两字节的地址,该地址共16位,其中高三位不起作用,后13位则指定了一个唯一的地址。地址后面为所要写入的数据,若数据多于1个,则第一个数据之后的数据存储地址由FM25640自动按顺序增加。如果地址到达最高地址1FFFH,地址计数器将重新置为0000H。
2 FM25640在电表数据存储中的应用
2.1 FM25640与MCU的连接电路
本设计中的单片机选择MOTOROLA公司的MC68HC908LJ12,这是一款适用于电表设计的MCU,内含12KBFlash存储器并可在线编程。同时还具有一个带有红外功能的串行通信接口SCI,一个高速SPI,8个键盘输入中断,以及内部LCD驱动模块,因而节省了外挂液晶驱动芯片。系统中的电能计量芯片则选择美国ADI公司的三相电能计量芯片ADE7758,该芯片精确度高,可以提供有功功率、无功功率、视在功率、电压有效值和电流有效值等多项数据,具有两路脉冲输出,同时也带有SPI串口。由于SPI接口可支持多个器件挂在同一个总线上,并可通过片选信号区分每一个器件,因此,将FM25640和ADE7758都通过SPI接口与单片机MC68HC908LJ12相连,并将MC68HC908LJ12的两个I/O口PTA4、PTA5分别与FM25640和ADE7758的片选端CS相连接,就可以实现片选。其具体的连接电路如图3所示。
2.2 工作过程
本电表系统上电复位后,首先将进行一系列的初始化操作,包括单片机MC68HC908LJ12的时钟发生模块CGM的寄存器设置、系统时钟的选择、I/O口输入输出的设置、SPI的两个控制寄存器SPCR和SPSCR的初始化、以及开中断允许等。然后再进行ADE7758的模式设置。在这些初始化工作完成后,ADE7758便开始将检测到的各个电能数据存放在相应的内部寄存器中。单片机通过I/O口PTA4给ADE7758的CS端一个低电平,即可选中ADE7758,之后再由ADE7758乎电能数据通过SPI接口传输到单片机MC68HC908LJ12的RAM中。单片机在对数据进行处理后,再通过I/O口PTA5给FM25640的CS端一个低电平,以选中FM25640,同时调用FM25640写数据子程序,并将数据存储到FM25640中。然后每隔一分钟,MC68HC908LJ12便发出一次更新数据的命令,并重复上述过程。由于每隔一分钟更新一次数据,这样,一年365天的擦写次数为1×60×24×365,即525600次,而FM25640的擦写次数达100亿次,这样计算,FM25640可以工作的年数为19025年!因此,如果系统要求更高的实时性,则完全可以缩短更新数据的周期,而FM25640出色的擦写性能完全可以满足要求。另外,也不必担心数据传输过程中掉电时数据的丢失,因为FM25640几乎可以认为是实时写入,无须任何等待时间,从而保证了系统具有很高的可靠性。
3 软件设计
通过FM25640的硬件SPI接口可极大地方便其软件程序的编写。
在对FM25640写数据时。首先需要送WREN指令,因为FM25640上电后的初始状态为禁止写操作,故应发送WREN指令以允许写操作。下一个执行的指令是WRITE指令,它包括指令码、地址以及所要写入的数据。对FM25640读数据的过程与写数据类似,只是在读操作之前不需要再先送WREN指令。限于篇幅,这里只给出FM25640写数据的子程序:
4 结束语
本文介绍了FM25640的主要特性和使用方法,着重讨论了它在电表数据存储中应用。由于铁电存储器在数据存储方面的出色性能,它不仅可以用于电表的数据存储,而且可以应用在大量的现代仪器仪表中(如水表、煤气表、门禁系统、医疗设备、自动取款机、汽车记录仪、工业仪器等等)。随着时间的推移和铁电存储器自身的发展,我们完全有理由相信,这种存储器必将得到越来越广泛的应用。