卢伟,周永强
(武汉大学电气工程学院 湖北武汉 430072)
1 铁电存储器技术原理、特性及应用
美国Ramtron公司铁电存储器(FRAM)的技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取记忆体(RAM)和非易失性存储器的特性。铁电晶体的工作原理是:当在铁电晶体材料上加入电场,晶体中的中心原子会沿着电场方向运动,达到稳定状态。晶体中的每个自由浮动的中心原子只有2个稳定状态,一个记为逻辑中的0,另一个记为1。中心原子能在常温、没有电场的情况下,停留在此状态达100年以上。铁电存储器不需要定时刷新,能在断电情况下保存数据。由于整个物理过程中没有任何原子碰撞,铁电存储器有高速读写、超低功耗和无限次写入等特性。
铁电存储器和E2PROM比较起来,主要有以下优点:
(1)FRAM可以以总线速度写入数据,而且在写入后不需要任何延时等待,而E2PROM在写入后一般要5~10 ms的等待数据写入时间;
(2)FRAM有近乎无限次写入寿命。一般E2PROM的寿命在十万到一百万次写入时,而新一代的铁电存储器已经达到一亿个亿次的写入寿命。
(3)E2PROM的慢速和大电流写入使其需要高出FRAM 2 500倍的能量去写入每个字节。
由于FRAM有以上优点,其特别适合于那些对数据采集、写入时间要求很高的场合,而不会出现数据丢失,其可靠的存储能力也让我们可以放心的把一些重要资料存储于其中,其近乎无限次写入的使用寿命,使得他很适合担当重要系统里的暂存记忆体,用来在子系统之间传输各种数据,供各个子系统频繁读写。从FRAM问世以来,凭借其各种优点,已经被广泛应用于仪器仪表、航空航天、工业控制系统、网络设备、自动取款机等。
在设计的碳控仪系统中,由于对控制碳势适时性的要求较高,而且系统由2个子系统构成,每个子系统都要频繁读写存储器,所以我们把原来的X25045换成FM24C16以满足要求。如图1及表1所示。
FM24C16是串行非易失存储器,存储容量为2 048×8 b,共分8页,每页256 B;工作电压为+5 V;接口方式为工业标准的2线接口:SDA和SCL;功能操作和串行E2PROM相似,有读和写两种操作状态,读、写时序和I2C总线类似。
FM24C16的写操作可以分为2种:字节写和页面写。字节写就是每次写入单个字节,页面写可以写入整页(256 B)的数据。而且,由于没有写延时,数据写入速度很快(一般为μs级),特别是在页面写的时候,不需要数据缓冲,可以写入256 B的数据,真正实现页面写,这是其他E2PROM做不到的,比如AT24C16,在页面写的时候,每次多能写入16 B数据。
FM24C16的写操作时序中可分为起始位(START)、数据位、从应答位、停止位(STOP),其中,从应答位(因为FM24C16为从器件,MCU为主器件,所以称为从应答)是FM24C16在每接收一个字节数据后发出的应答信号,是检验数据写入是否成功的惟一标志。写入过程为:MCU通过SDA,SCL发出起始位,然后从SDA输出从器件固定地址位:1010,再输出3 b页选择位(选择写入数据到FM24C16的哪一页),再输出写控制位0(读为1,写为0),然后接收来自FM24C16的从应答位,如果没有收到从应答,则退出操作。在接收到从应答后,MCU从SDA串行输出8位FM24C16字节地址以确定写入数据的字节单元,并在收到从应答后发送1 b数据写入到FM24C16,然后等待从应答信号确认数据写入成功。如果是字节写,则由MCU发出停止位,结束写操作。如果是页面写,MCU输出第2个字节数据,FM24C16判断出MCU要继续写入数据后,自动使其内部的地址指针加1,并把数据写入到加1后的字节单元,然后给出从应答,MCU就继续写入数据到FM24C16。页面写操作时,当地址指针到7FH(页尾地址)单元的时候,在下一个写入周期时自动翻转到00H,写入的数据覆盖掉00H单元原来的数据。
具体写操作时序图和后面的读操作时序图比较繁琐,在这里不给出,如果需要,可以登录到Ramtron公司网站:http://www.Ramtron.com查阅技术资料,或者登录到其在大陆的代理商网站:http://www.ramtron.com.cn/china/product/data.asp去查阅技术资料,也可以仿I2C总线时序图。
FM24C16读操作比写操作较为复杂,相应也可以分为2种:字节读和页面读,相应于字节写和页面写,两种读的功能也是单字节和整页的区别。读操作的另一种分法可分为:立即读和任意读(包括连续读),其区别在于立即读是在写入数据后马上读数,而任意读和连续读则是随时读,所以,在他们操作时,必须先执行伪写,然后再读数。所谓伪写,是指执行写操作到写入数据之前,其目的是确定要读出的字节单元地址。下面对任意读的操作过程给予说明:执行写操作到写入数据前,也就是在收到输入字节单元地址后的从应答后,MCU再发送起始位,然后发送从器件固定地址(1010)、3 b页选择位和读控制位1,在收到从应答后,MCU从FM24C16里面读出1 B的数据。如果只读1 B的数据,则MCU发送一个无需应答信号,然后发送停止位结束读操作。如果是页面读,MCU就发一个主应答信号,继续读下一个字节数据,直到读出一个字节数据后,MCU发出无需应答信号和停止位结束读操作。
在对FM24C16进行读、写操作的过程中,应该注意以下2个问题:
(1)时序问题,这主要是指SDA,SCL的高低电平的时序。如果在读、写过程中时序不对或者不稳定,都会引起读、写失败,所以为了保证稳定,可以在程序中适当加入NOP语句延时,但不要过多,以免影响读、写速度。
(2)SDA数据只能在SCL为低期间变化,在SCL82为高期间,SDA数据要保持不变,否则会被错误地认为是控制位而不是数据位,导致读、写失败。
3 应用接口及程序
FM24C16与单片机接口电路非常简单,下面以碳控仪系统中的应用为例给予说明,并给出部分子程序。应用接口图如图2所示,系统中采用2片AT89C55单片机,用其P2.0和P2.1口与SDA,SCL相连接,在SDA和SCL引脚接1.8 kΩ的上拉电阻到+5 V,工作电源也为+5 V,WP引脚接电源地以保证可以任意写入数据。2片AT89C55用P1.0,P1.1作为通讯口,来确定谁操作FM24C16:片1操作前,检测P1.0口,如果为高,则置低P1.1口,向片2发出占用FM24C16信号,然后再检测P1.0口,还为高,则进入操作,若为低,则退出操作并把P1.1口置高;如果P1.0口为低,则说明片2占用FM24C16,片1就放弃操作,等待下次查询和操作。片2的操作相对应于片1。这样,FM24C16不仅作为了公共数据区,而且也成为了2片MCU的一个模拟的通讯口,而且理论上来说,1片FM24C16上可以挂很多MCU,而可以省去不必要的MCU间的通讯。这就需要FM24C16承受快速、频繁读写,这是其他E2PROM望尘莫及的。
下面给出FM24C16的页面写和任意字节读汇编子程序。程序经过应用验证,效果良好(为保证稳定性,可以在相应地方加入空语句以延时)。
页面写子程序:
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。