基于SPI总线接口的FRAM设计
2013-07-16房健
房健
摘要:文章的研究内容是对数据读取和存储基于SPI总线接口的FRAM设计。文章采用了C8051F系列单片机作为微处理器,存储芯片采用的是FM25V10芯片,并且都具有SPI总线接口,经过多次实验得出的结果是以SPI为总线接口的FRAM设计能够满足其要求,并且传输速度快。
关键词:SPI总线;单片机;总线接口;FRAM设计
中图分类号:TP333 文献标识码:A 文章编号:1009-2374(2013)14-0011-03
随着科技的进步,电子技术的发展,在电子、工程控制、通信等行业内,单片机的应用范围也越来越广,而它的外围芯片接口应用也变得越来越重要。针对于一些记录测控的数据,记录通信的数据,都需要不掉电存储方式,所以不掉电存储也成为了控制系统中不可或缺的一个部分。在存储芯片的发展过程中,有很多产品诞生,如E2PROM或闪速存储作为存储介质,则速度较慢;在实时性要求较高的场合常采用电池支持的SRAM,它既有RAM的读写速度,又有ROM掉电数据不丢失的特性,但是电池支持的SRAM在实际使用过程中数据不可靠,容易丢失,且电池容易受到环境因数的影响;而RAMTRON公司研制的铁电存储成功解决了电池的问题,由于具有几乎无限次数擦写、高速读写、低功耗、数据能掉电保持等特点而广泛地应用在各种控制系统中。本文采用C8051F单片机对FRAM芯片的读写操作,从而完成了对于系统的参数及数据保存功能。
1 C8051F单片机的SPI总线接口
C8051F单片机微处理器具有SPI接口,所以可以和FM25V10直接通过SPI总线进行连接,并且SPI总线的速度完全可以达到要求。SPI总线只需四条线就可以完成MCU与各种外围器件的通讯,分别为:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线(CS)。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。传输完一个字节之后,该字节便会进入到接收器件的移位寄存器中,这样就可以完成了两个器件之间的数据交换,SPI总线的主机的时钟信号来确保本次传输的同步,当SPI被配置为主器件时,最大数据传输率(位/秒)是系统时钟频率的二分之一。当SPI被配置为从器件时,如果主器件与系统时钟同步发出SCK、NSS和串行输入数据,则全双工操作时的最大数据传输率(位/秒)是系统时钟频率的十分之一。
2 FM25V10的工作原理及其特点
FRAM是靠材料特性来保存数据,这种材料并非磁性材料,所以从原理上讲,磁场对数据是没有影响的,在实际中,电场对数据也没有影响,所以其抗干扰能力强。在复杂环境中可以记录一些重要的数据,由于它的擦写次数多,所以可以记录每一个数据脉冲。
铁电存储器FRAM的特点:(1)具有非易失性,掉电后数据可以保存45年左右;(2)擦写次数很多,5V供电的FRAM的擦写次数多达10000亿次;(3)速度快,串口总线的FRAM的CLK的频率最高可达20M,没有等待写周期,并口的访问速度70ns;(4)功耗较低,静态电流小于10uA,读写电流小于150uA。
电路的工作环境会涉及到强电和弱点之间的转换和一定的电磁干扰,设计选用Ramtron公司的FM系列铁电存储器。
FM25V10为2M位的非易失性铁电随机存储器,结构容量为256K×8位,无限次的读写次数,掉电数据保持10年,写数据无延时,采用快速SPI串行协议,最高速度可以达到40M的总线速度。硬件上有完善的写保护,同时软件也可以进行写保护。工作电压:2.7~3.6V,静态工作电流:5uA。
3 FRAM与C8051F单片机的SPI硬件设计
由于FM25V10与其他的SPI设备一样,可以直接挂在SPI总线接口上,本文采用的是SPI的四线接口,因此需要额外的片选信号NSS,/HOLD和/WP直接连接到高电平上,所以不进行硬件保护操作和暂停操作,硬件连接如图1、单片机相应的端口分配如表1所示。
4 软件流程及其程序的编写
数据存储及读取模块软件的程序设计主要对象是铁电存储器FM25V10,通过对单片机内部集成的A/D采集模块进行数据的采集,并将数据进行实时的存储在铁电存储器FM25V10中,并且在存储结束后将数据读取出来,通过通信模块将数据传输给上位机。
数据的存储及读取过程中是通过SPI总线方式进行传输的,该方式可以有效地对数据进行快速、准确的存储及读取。C8051F单片机中的SPI提供了一个灵活的四线全双工串行总线,SPI所使用的4个信号分别是:MOSI、MISO、SCK、NSS。
该程序的编写主要分为两部分:一部分是对FM25V10的数据存储程序的编写;另一部分是对FM25V10的数据读取程序的编写。在对FM25V10的操作过程中,我们要根据FM25V10手册中所提供的操作码来操作,而且还要根据手册中提供的程序时序图来编写程序。表2是FM25V10手册所提供的操作码。
对于软件的编程之前,首先要把要编写程序的基本流程画出来,可以更清晰地了解程序的主要内容及其工作流程,图2就是本文中的读写数据软件流程。
下边是用到的最基本的程序块,包含了三个方面:数据的写入、数据的读取、地址的自动加一。
(1)将R0数据写入到SPI端口寄存器:
SPI_write:
CLR SPIF
MOV SPI0DAT,R0
JNB SPIF,$
CLR SPIF
RET
(2)读取SPI端口寄存器中的数据到R0:
SPI_read:
CLR SPIF
MOV SPI0DAT,#00H
JNB SPIF,$
CLR SPIF
MOV R0,SPI0DAT
RET
(3)地址自动加1:
DPTR_INC:
INC DPTR_LL
MOV A,#00H
CJNE A,DPTR_LL,DPTR_RET
INC DPTR_HL
MOV A,#00H
CJNE A,DPTR_HL,DPTR_RET
INC DPTR_HH
DPTR_RET:
RET
5 结语
通过对硬件电路进行设计及相对应的软件编程实现了数据的存储和读取功能,完成了基于SPI串口总线的单片机对FRAM存储芯片的读写操作,完成了实时参数及其数据保存功能,通过实验可以说明数据通信稳定可靠。由于FM25V10存储芯片具有重复擦写、非易失性等特点,所以目前采用SPI总线接口的芯片越来越多,在仪器仪表、工业控制、数字家电等方面普遍得到应用。本文采用的C5051F单片机SPI接口,该方法也可以适用于其他带SPI接口电路的微处理器。
参考文献
[1] 洪亮,鄢萍,易润忠.基于SPI和单片机的嵌入式系统扩展方法[J].微型电脑应用,2008,24(9).
[2] 汪永琳,丁一.一种3线制半双工SPI接口设计[J].集成电路设计与开发,2010,35(5).
[3] 宋晔,蔡慧,赵荣祥.采用SPI接口实现TMS3230F240DSP之间的通信[J].机电工程,2005,22(5).
[4] 杨瑞帆,郭晓鹏,崔顺.基于C8051F330D单片机的多路数据采集系统设计[J].电子测试,2010,(4).
[5] 冯金霞,张轮,熊天圣.基于SPI接口的异步串口扩展技术研究[J].微型电脑应用,2009,25(12).
[6] 贾伟,邵左文,张玉猛.基于SPI总线的高速串行数据采集系统设计[J].国外电子测量技术,2007,26(4).
(责任编辑:周加转)