带RTC的I2C总线铁电存储器FM31256

发布者:yuehui最新更新时间:2014-08-21 来源: eefocus关键字:RTC  I2C总线  铁电存储器  FM31256 手机看文章 扫描二维码
随时随地手机看文章
  FM31256是由Ramtron公司推出的新一代多功能系统监控和非易失性铁电存储芯片。与其他非易失性存储器比较,它具有如下优点: 读/写速度快,没有写等待时间;功耗低,静态电流小于1 mA,写入电流小于150 mA;擦写使用寿命长,芯片的擦写次数为100亿次,比一般的EEPROM存储器高10万倍,即使每秒读/写30次,也能用10年;读/写的无限性,芯片擦写次数超过100亿次后,还能和SRAM一样读/写。

  铁电存储器(FRAM)的核心技术是铁电晶体材料。这一特殊材料使铁电存储器同时拥有随机存取存储器(RAM)和非易失性存储的特性。本文介绍了FM31256的主要功能,并具体给出了基于嵌入式C语言编写的存储器读/写程序。

1 FM31256的基本结构及原理

  FM31256由256 KB存储器和处理器配套电路(processor companion)两部分组成。与一般的采用备份电池保存数据不同,FM31256是真正意义上的非易失(truly nonvolatile)存储器,并且用户可以选择对不同的存储区域以软件方式进行写保护。

  FM31256 器件将非易失FRAM与实时时钟(RTC)、处理器监控器、非易失性事件计数器、可编程可锁定的64位ID号和通用比较器相结合。其中,通用比较器可提前在电源故障中断(NMI)时发挥作用或实现其他用途。采用先进的0.35 μm制造工艺,这些功能通过一个通用接口嵌入到14个引脚的SOIC封装中,从而取代系统板上的多个元件。存储器的读/写以及其他控制功能都通过工业标准的I2C总线来实现。

  图1为FM31256的原理图。其中,SDA和SCL引脚用于与CPU进行数据交换和命令写入,数据输出部分均具有施密特触发器,以提高抗干扰性能;同时,SDA作为二线接口中的双向信号线,集电极开路输出,可与二线总线上其他器件进行“线或”。A1~A0为器件地址选择信号,即总线上可同时使用4个同类器件。正常模式下,PFI引脚分别为比较器的输入(不可悬空),CAL/PFO引脚输出PFI引脚的输入信号与1.2 V参考电压之间的比较结果;校准模式下,CAL/PFO引脚将输出512 Hz的方波用于时钟校准。CNT2~CNT1是通过备份电池支持的事件计数器的两路输入端,通过边沿触发启动计数器,触发沿由用户自由选择。


图1 FM31256原理图

2 FM31256功能及使用方法

  在FM31256中,有25个特殊功能寄存器(SFR)00H~18H。通过对这些功能寄存器进行操作,可以实现各种功能。

2.1 特殊功能寄存器

(1) 实时时钟和比较器

  实时时钟包括晶体振荡器、时钟分频器和寄存器系统。它分割32.768 Hz的时基信号以提供1 s(1 Hz)的分辨率,寄存器(02H~08H)以BCD格式提供秒、分、时、星期、日、月、年信息,用户可对其进行读/写访问。启动时钟前须将SFR中01H地址的OSCEN位(D7)置位,振荡器起振;同时将00H地址的R位(D0)置位,可将时钟数据写入寄存器用于读出。若此时正处于时钟刷新阶段,则由于刷新操作优先于写入寄存器的操作,因而保证了时钟的准确性。重新设置时钟时,只须设定00H地址的W位。

  FM31256的时钟精度可通过软件校准,将00H地址的CAL位(D2)置位,时钟进入校准模式,比较器输出512 Hz的频率信号,并可通过设置01H地址的CAL4~CAL0位(D4~D0)确定校准值。当00H地址的CAL位(D2)为0时,进入比较器模式。

(2) 处理器伴侣

  处理器伴侣包括CPU通常需要的功能。系统监测由低电平状态或看门狗计数溢出的中断输出信号。

  当系统电源电压低于设定的阈值或看门狗计数器溢出时,FM31256将输出低电平复位脉冲,复位信号持续100 ms。改变0BH地址的VTP1~VTP0位(D1~D0),可以设定电平检测的阈值;改变0AH地址的WDT4~WDT0位(D4~D0),看门狗的溢出时间可以在100 ms到3 s之间选择,其中0AH地址的WDE位(D7),用于看门狗启动或停止;09H地址用于监视复位信号来源(看门狗计数器、上电复位或后备电源电压)以及控制看门狗计数器清零。系统软件须在要求的时间周期内,向09H地址的WR3~WR0位(D3~D0)写入1010,使计数器清零。

(3) 事件计数器

  FM31256有2个独立的后备电池支持的16位事件计数器CN1和CN2,位于寄存器0DH~10H中。若将SFR中0CH地址的CC位(D2)置位,则可以组成一个32位的计数器。CIN1和CIN2是事件计数器信号输入端,在32位计数器模式下CIN2无效。计数采用可编程边沿触发方式,若0CH地址的C1P位(D0)置位,则CIN1采用上升沿触发,否则是下降沿触发;0CH地址的C2P位(D1)用于控制CIN2。

(4) 串行数据标识区

  FM31256的SFR中的11H~18H地址串行标识区中可以保存8字节(64位)数据。该存储区为非易失性存储区,可对其进行无限次的读/写操作,但如果将0BH地址的SNL位(D7)置位,则不能再对该存储区进行操作,且这种操作是不可逆的。

2.2 FM31256的读/写操作

  FM31256作为从机,集成了两个功能不同的部件,每个部件都可以被独立访问。一个是存储器,访问时从机地址的位7~4必须被设置为1010B;若要访问实时时钟/处理器伴侣,则从机地址的位7~4必须被设置为1101B。该器件采用二线制的I2C接口,二线协议由SDA和SCL两个引脚的状态确定。共有4种状态: 开始、停止、数据传输及应答。其通信基本格式如图2所示。


图2 I2C总线通信基本格式

  FM31256严格按I2C总线的时序和数据格式操作,其访问操作过程可描述为如下步骤: 启动—从机地址—应答—目标地址—应答—(启动—从机地址—应答)—数据(单或多字节)—应答—停止(注: 从机地址中包含了读写命令;括号中的步骤为当前地址读和连续地址读命令所特有的)。这里对应答信号作些说明。应答脉冲发生在第8个数据位传送之后。在这个状态下,发送方须释放SDA让接收方驱动;当接收方发出低电平时,表示正常应答,当发出高电平时,表示无应答。不应答有两种情况: 一是数据传送出错,无应答使发送方终止当前操作,以便重新寻址;二是接收方有意不作应答,以结束当前操作。

  在对SFR操作时,首先发送的命令字节为“1 1 0 1 X A1 A0 R/W”,目标地址为单字节范围(00H~18H)。FM31256的32 KB存储单元地址为0000H~7FFFH,对其进行操作时,首先发送的命令字节为“1 0 1 0 X A1 A0 R/W”,目标地址长度为双字节,即RAM区的寻址能力为0~65 535。FM31系列存储器具有内部地址锁存和自动累加功能,当对连续地址区进行读/写操作时,只须发送存储区首地址。

3 FM31256在电磁铸轧电源控制中的应用

  将FM31256应用在电磁铸轧电源控制装置当中,实现主控系统的看门狗复位、给定参数、实时时钟及故障记录保存的功能。

  作为一种解决微处理器因干扰而死机问题的有效方法,看门狗的作用是必不可少的。针对控制对象,需要对A、B、C三相控制装置进行调节,包括设定正弦波的频率和幅值、反馈系数、PID参数、过流延时、开放延时和关断延时等;将这些给定的参数及时写入铁电存储器FM31256的存储单元中,使之掉电后仍能保存。当系统发生故障时,例如控制装置中晶闸管周围温度超过额定温度,装置就会发出报警信号,并将发生故障的准确时间、实际温度值记录在FM31256的存储单元中,以便系统查询;同时,FM31256的事件计数器加1计数。同样,利用串行标识区可锁定的功能,可将电磁铸轧电源控制装置的序列号写入其中,非常安全可靠。 [page]

3.1 硬件原理

  电磁铸轧电源控制装置应用FM31256的硬件接口电路如图3所示。从图3中可以看出,系统以超低功耗MSP430系列芯片MSP430F149作为控制器;FM31256作为参数存储单元,与处理器之间采用I2C总线进行通信。由于MSP430F149没有I2C总线接口,所以任取2个I/O口模拟。实时时钟在VDD掉电以后自动切换到后备电源VBAK。


图3 FM31256与MSP430F149的硬件接口电路

  32.768 kHz晶振等效于6 pF电容。若将SFR的01H单元对应的OSCEN位设为0,同时置00H单元的CAL位为1,使CAL引脚输出512 Hz的脉冲信号,则可检测晶振工作是否正常,因为512 Hz是晶振频率的64分频。制PCB板时须注意: X1和X2晶振引脚均为高阻引脚,两引脚之间的距离须小于5 mm;即使信号位于板内层,也不允许信号线靠近X1和X2引脚。在晶振引脚周围使用接地保护环,内部或板反面使用接地保护敷铜。

3.2 存储区访问程序设计

  对FM31256存储器访问操作过程中,微处理器处于主机地位,器件始终处于从机地位。根据上述对FM31256的分析,可以把所有的通信过程归纳为3种类型: ① 单脉冲,如Start、Stop、Ack、Nack;② 字节发送,如从机地址、目标地址和数据传送;③ 字节接收,如读操作中的数据传送。因此只要把这些操作以子程序的形式编写好,所有的通信操作就可通过调用这些子程序来完成。这里以MSP430F149微处理器的嵌入式C语言编写。设微处理器端口P6.6为数据线(SDA);P5.4为时钟线(SCL)。

  限于篇幅,本文不作详细介绍,只给出模拟I2C总线及字节写入、读出的部分C语言程序:

  #defineRTC_SDABIT6
  #defineRTC_SCLBIT4
  void FM31256_Start(void) {/*FM31256启动程序*/
    P6OUT |=RTC_SDA;// SDA=1
    P5OUT |=RTC_SCL;// SCL=1
    delay(IIC_DELAY);
    P6OUT &=~ RTC_SDA;// SDA=0
    delay(IIC_DELAY);
    P5OUT &=~ RTC_SCL;// SCL=0}
  void FM31256_Stop( void ) {/*FM31256停止程序*/
    P6OUT &=~ RTC_SDA;// SDA=0
    delay(IIC_DELAY);
    P5OUT |=RTC_SCL;// SCL=1
    delay(IIC_DELAY);
    P6OUT |=RTC_SDA;// SDA=1
    delay(IIC_DELAY);}
  void FM31256_Send_Ack( void ) {/*FM31256应答程序*/
    P5OUT &=~ RTC_SCL;// SCL=0
    P6OUT &=~ RTC_SDA;// SDA=0
    P5OUT |=RTC_SCL;// SCL=1
    delay(IIC_DELAY);
    P5OUT &=~ RTC_SCL;// SCL=0}
  void FM31256_Send_noAck( void ) {/*FM31256不应答程序*/
    P5OUT |=RTC_SCL;// SCL=1
    delay(IIC_DELAY);
    P5OUT &=~ RTC_SCL;// SCL=0}

  说明:SCL线是高电平时,SDA线从高电平向低电平切换,表示起始条件;当SCL是高电平时,SDA线由低电平向高电平切换,表示停止条件。相关的确认时钟脉冲由主机产生,在确认的时钟脉冲器件发送方释放SDA(高电平),在此期间接收方须将SDA拉低。

  void FM31256_transfByte_to_IIC( unsigned char tran_byte ) {/* CPU字节发送程序*/
    unsigned char i , current_bit =0x80;
    P5OUT &=~ RTC_SCL;
    delay(IIC_DELAY);
    for( i=0; i <=7; i++ ) {
      if ( tran_byte & current_bit )
      P6OUT |= RTC_SDA;
    else
      P6OUT &=~ RTC_SDA;
    current_bit >>=1;
    delay(IIC_DELAY);
    P5OUT |=RTC_SCL;//SCL=1
    delay(IIC_DELAY);
    P5OUT &=~ RTC_SCL;//SCL=0
    delay(IIC_DELAY);
    }
  }
  unsigned char FM31256_receByte_from_IIC( void ){/*CPU字节接收程序*/
    unsigned char mvalue, i, rece_data =0;
    P6DIR &=~ RTC_SDA;//设置为输入方向
    P5OUT &=~ RTC_SCL; //SCL=0
    delay(IIC_DELAY);
    for(i=0;i<8;i++) {
      rece_data = rece_data<<1;
      P5OUT |=RTC_SCL;//SCL=1
      delay(IIC_DELAY);
      mvalue = P6IN & RTC_SDA;//当前位的值
      if( mvalue )//接收位为高
        rece_data = rece_data | 0x01;
      else//接收位为低
        rece_data = rece_data & 0xFE;
      P5OUT &=~ RTC_SCL;//SCL=0
      delay(IIC_DELAY);
    }
    P6DIR |=RTC_SDA;//P6.6输出
    return(rece_data);//返回收到的字节
  }

  说明:发送到SDA线上的每个字节须为8位。tran_byte为CPU要发送的字节,CPU读入的数据存储在rece_data中。对FM31256存储器可以直接对当前地址进行“读”操作,也可以连续“读/写”多个字节而无须逐一指定地址。依据上述一般步骤,对存储器的访问操作可归纳为3种基本操作: ① 设置当前操作目标地址; ② 写入数据; ③ 读出数据。

  访问存储器操作有多种,如内存“写”、当前地址或顺序连续“读”和随机地址“读”操作。在控制程序中,需要向FM31256内存中写入并读出给定参数、故障信息等数据。内存读/写的方法如下:

  内存写操作,首先由CPU发送从机地址,然后是内存16位地址,主机通过设置从机地址字节的最低位为0声明一个写操作;接收应答信号后,CPU向FM31256发送数据的每个字节,之后器件又产生应答信号,任何数量的连续字节可以被写入,以停止信号结束传输。有两种类型的读操作:当前地址读操作和随机地址读操作。读操作同样先由CPU发送从机地址,主机通过设置从机地址字节的最低位为1声明一个读操作。当要进行随机读操作时,还要在读取数据之前,发送16位内存地址之后读取任意个字节,每个字节后应跟随应答信号,以停止信号结束传输。

  在电磁铸轧电源控制装置的主控程序中,还将调用时钟刷新函数Flash_time()、时钟写入函数Write_time()、寄存器写入函数Register_write()和寄存器读出函数Register_read()。

  启动RTC和WatchDog的流程图如图4所示。

图4 启动RTC和WatchDog的流程图

结语

  将铁电存储器用于电磁铸轧电源控制装置中,与MSP430系列单片机相结合,充分发挥了其强大的功能;同时取代了传统的EEPROM和实时时钟芯片,既降低了硬件成本,又简化了软件设计。实践证明,FM31256具有良好的推广应用前景。

参考文献

[1] Ramtron International Corporation. FM3104/16/64/256 Integrated Processor Companion with Memory.2002.
[2] 胡大可.MSP430系列单片机C语言程序设计与开发.北京:北京航空航天大学出版社,2003.
[3] 孙树印.铁电存储器原理及应用比较.单片机与嵌入式系统应用,2004(9).

关键字:RTC  I2C总线  铁电存储器  FM31256 引用地址:带RTC的I2C总线铁电存储器FM31256

上一篇:单片机对AT24C512中数据的处理管理
下一篇:DDR SDRAM在嵌入式系统中的应用

推荐阅读最新更新时间:2024-03-16 13:40

一种基于WinCE6.0的数字调频收音机的设计
本设计利用数字收音机芯片Si4730,为基于WincE6.0的智能系统集成FM功能提供了一种很好的解决方案,该方案实现了全频手动与自动搜台等功能。 1 基于WinCE6.0的系统设计流程 如图1所示,基于WinCE 6.0的系统设计一般分为3个过程:针对不同的硬件平台设计BSP包,BSP包括Boot-loader、OAL和驱动程序;针对系统的需求,利用Platform Builder for CE 6.0选择合适的组件,构建操作系统并导出SDK;在SDK的支撑下开发应用程序。 WinCE 6.0与其早期版本相比,开发工具有了较大的变化。Platform Builder已经不是一个单独发行的工具,Platform B
[单片机]
一种基于WinCE6.0的数字调频收音机的设计
基于I2C总线接口的AD芯片PCF8591设计
1 引言 I2C总线是Philips公司推出的串行总线,整个系统仅靠数据线(SDA)和时钟线(SCL)实现完善的全双工数据传输,即CPU与各个外围器件仅靠这两条线实现信息交换。I2C总线系统与传统的并行总线系统相比具有结构简单、可维护性好、易实现系统扩展、易实现模块化标准化设计、可靠性高等优点。 在一个完整的单片机系统中,A/D转换芯片往往是必不可少的。PCF8591是一种具有I2C总线接口的A/D转换芯片。在与CPU的信息传输过程中仅靠时钟线SCL和数据线SDA就可以实现。 2  芯片介绍 PCF8591是具有I2C总线接口的8位A/D及D/A转换器。有4路A/D转换输入,1路D/A模拟输出。这就是说,它既可
[嵌入式]
STM32开发 -- RTC详解
一、RTC实时时钟特征与原理 查看STM32中文手册 16 实时时钟(RTC)(308页) RTC (Real Time Clock):实时时钟 实时时钟是一个独立的定时器。 RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。 系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问: ● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,
[单片机]
STM32开发 -- <font color='red'>RTC</font>详解
用Verilog HDL实现I2C总线功能
摘要:简述了I2C总线的特点;介绍了开发FPGA时I2C总线模块的设计思想;给出并解释了用Verilog HDL实现部分I2C总线功能的程序,以及I2C总线主从模式下的仿真时序图。 关键词:I2C总线 FPGA Verilog HDL 时序 开发FPGA时,利用EDA工具设计芯片实现系统功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。在软件设计过程中,越来越强调模块化设计。I2C总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。把I2C总线设计成相应的模块,有利于相关FPCA的开发。 目前有一些介绍相关开发的资料,但都是利用VHDL语言或AHDL语言实现的。本文给出利用Veri
[半导体设计/制造]
stm32专题三十三:RTC实时时钟
RTC功能描述 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。 系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操作。执行以下操作将使能对后备寄存器和RTC的访问: 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟; 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问; 为什么时间不能超过1秒?
[单片机]
stm32专题三十三:<font color='red'>RTC</font>实时时钟
STM32F0xx_RTC实时时钟配置详细过程
Ⅰ、概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下。 STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。 STM32F0的RTC模块和F1的RTC模块最大区别在于F0模块中有“DATE”和“TIME”寄存器,也就是可以直接读取寄存器里面的值,而F1是秒计数寄存器的值,需要通过相关算法下才能得到时间的值。 本文提供的软件工程里面还包含一个BKP模块,主要是用于掉电保持RTC数值(第一次上电初始化RTC,后面就不用初始化)。例程是在第一次初始化RTC值为:2016年6月5日 周七 12
[单片机]
STM32F0xx_<font color='red'>RTC</font>实时时钟配置详细过程
AT89S52单片机并行端口模拟I2C总线协议读写AT24C04的设计
I2C总线是2条线总线。数据线SDA,时钟线SCL.结构简单。 AT24C04是具有I2C总线接口的EEPROM.大小为512*8bit.单片机AT89S52本身不具有I2C总线结口,所以可编写程序用并行端口模拟I2C总线协议读写AT24C04. 多个设备通信的重点(1.电平的区别,如串口通信中PC与单片机通信,PC机串口电平值为+12V~-12V,单片机为TTL电平0V~+5V.,所以要用电平转换芯片转电平.2,通信协议。(串口通信协议))具体的协议内容与数据格式可查资料。 代码如下: #include #define WriteDeviceAddress 0xa0 #define ReadDeviceAddress 0
[单片机]
智能卡数据传输协议I2C总线
  由于串行时钟同步数据传输是不复杂而通用的,它们就被用的比较频繁。使用I2C(Inte-Integrated  Circuit)总线的元件首先由Philips开发,从1990年就可以使用了。这个总线立足于一根串行的双向数据引 线和一根串行的时钟引线,Pc总线的规定包括了硬件(两条引线)和软件两方面,具有数据传输格式化的意 义。每个在总线上的器件可以取得对总线的控制并能对在总线上的其他器件发出请求。   由于存储卡也是被同步时钟控制的,Pc总线很快就得以立足于芯片卡行业之中,大量的存储器可以在卡中 使用。下面的例子是基于SGS-ThornsON ST 24C04存储器芯片的,它有512字节的可自由读出或写人的EPROM 。对EEP
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved