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所示。