APP下载

FM25L256在配网监测系统中的应用

2011-03-14牟学文徐禄勇李尚柏

电子设计工程 2011年2期
关键词:存储器字节时钟

牟学文,徐禄勇,李尚柏

(四川大学 辐射物理及技术教育部重点实验室,四川 成都 61005)

随着科技的发展与仪器仪表的自动化、智能化。设备要求更短的读写周期,更低的功耗。特别是在数据采集系统或高要求的工业控制领域,传统EEPROM具有较长的访问周期,数据由于外界干扰而失真、丢失;当系统故障或其他原因掉电时,有限次擦除可能造成状态数据丢失,达不到实时反馈和有效控制的目的。FRAM是利用铁电晶体的铁电效应存储数据的。铁电晶体中心原子在外加电场的作用下运动,达到一种稳定状态,当电场移走后,中心原子会保持在原来的位置。中心原子在没有获得外部能量时不能越过晶体中间层的高能阶到达另一稳定位置,从而达到掉电数据保护目的[1]。

1 FM25l256简介

写、掉电数据存储和低功耗。读写频率可达25 MHz,而EEPROM读写频率为kHz量级,工作电压2.7~3.6 V,旁路电流为1 μA。另外,能掉电保存数据达10年之久,工作的温度范围为-40~+85℃,还提供软件、硬件的双重写保护。FM25L256有8-pin SOIC和8-pin DFN两种环保封装,其引脚功能说明如图1所示[2]。

图1 FM25L256封装Fig.1 Package of FM25L26

FM25L256B是存储结构为32 768×8 bit的串行铁氧随机存储器,可通过标准SPI接口访问其32 K空间,其操作和串行EEPROM相似,主要优点是快速读写功能、可无限次读

各引用却功能如下:

/CS:片选。低电平有效。高电平时为低功耗模式,无输入,输出为三态;下降沿跟操作字。

/WP:写保护,低电平有效,只禁止状态寄存器写操作。

/HOLD:保持,输入引脚。CPU必中断存储器操作去执行其他任务,将它置低,挂起当前操作,器件忽略SCK或/CS的变化。

SCK:串行时钟。可同步所有I/O动作,上升沿输入,下降沿输出。因设备是静态的,时钟频率在0~25 MHz间,在任何时候可被中断。

SI:串行输入。时钟上升沿采样,其他时间被忽略。被驱动到有效逻辑电平以满足电流供应规范。(在单引脚数据接口中,可直接和SO连接)

SO:数据输出引脚。在读期间被驱动到有效电平,其他时间(包括/HOLD低电平时)保持三态,数据传输在串行时钟下降沿被驱动。

VDD:电源供电(2.7~3.6 V)。 VSS:接地端。

FM25L256还有1个8位的状态寄存器,如表1所示。当WPEN为0,/WP被忽略;WPEN为1,/WPEN可以写状态寄存器。例如:WPEN为1,/WP为0时,硬件写保护,禁止任何写的操作;WPEN为1,/WP为1时,写状态寄存器的 BP1、BP0位设置软件写保护,其值和对应的保护区域如表2。WEL是写使能的标志位,送完允许写命令WREN,该位自动置1,当送完禁止写命令WRDI,该位又清零,直接修改将视为无效。因此,CPU可以读寄存器命令,查寄存器的值,得出FM25L256写保护模式和工作状态。

表1 状态寄存器Tab.1 Status register

表2 块存储器Tab.2 Block memory write protection

2 配网监测系统

随着电力供应的日趋充足和经济的快速发展,人们对供电质量和安全要求更高。传统放射式网状结构的配电系统线路具有结构简单、自动化程度低、可靠性低、线损率高、故障排查困难等缺点。配网监测系统[3]是由配网监测终端构成的分布式电网参数监测系统,可实现随时在线监测,控制电气设备的运行状态,为配网的科学管理提供信息和决策依据(根据电网的运行情况进行预防性的定期检修计划,既可减少工作量又可防止设备的损坏)。从而实现电力调度自动化,管理科学化,提高了可靠性,方便了维护,增加了经济效益。

2.1 配网监测终端结构

监测终端装于电力系统的末端,一般工作在野外无人值守的恶劣环境下,实时记录电站供电或用户用电的各项重要参数,如供电时间、停电时间、停电时刻、供电峰值、供电谷值以及日统计数据和月统计数据,并最少保持3个月以上。记录的数据可通过无线或相应的接口送入计算机,作为配电网统一管理和电力调度的参考。配网终端整个硬件结构可简单的分为处理器、数据采集、LCD显示、时钟、数据存储、GSM通信、其他通信接口8个功能模块,其硬件连接都是以SPI总线和相应的片选连接,结构和软件实现都比较简单。配网终端的总体设计框图如图2。

图2 配网终端整体设计框图Fig.2 Whole block diagram of distribution terminal

微处理器采用C8051f340高性能处理器,流水线结构的CIP-51高速控制器内核、4352B的数据RAM、硬件增强型SPI等丰富的片内资源,且有与标准51单片机基本相同的指令集、软件设定端口配置,可通过JTAG接口和USB Debug接口在线调试,设计方便。与DSP(Digital Signal Processor)相比,价格更便宜,成本更低。

配网终端采用高精度三相电能计量芯片ATT7022A(内部集成了6通道16位ADC和高性能的24位DSP),减轻单片机的计算负担。作为数据采集模块,ATT7022A集成了功率、能量、有效值、功率因数以及频率测量的数字信号处理等电路,能够测量各相以及合相的功率、能量、电流电压有效值、功率因数、相角频率等参数,充分满足三相多功能电能表的需求。ATT7022A内部的电压监测电路可以保证加电和断电时正常工作,还提供一个SPI接口方便与MCU进行数据交换。

LCD按键显示模块由按键开关、简易键盘和液晶屏LCM12864ZK45组成,可实现选择、查询、方向键、设定、确定和相关显示,查看监测的统计数据,调节绝对时间。

监测终端不采用自带的定时器编程的软件时钟,因为繁琐的程序不利于其他模块的实现,且当系统复位,也会失去系统绝对时间。MT41T94是一款高精度、多功能、低功耗实时时钟器件,除了具备日历时钟、闹钟等功能外,自带有44字节的非易失性RAM,提供更精确的时间标定、掉电时间锁存、看门狗等功能,与MCU实现数据通讯的SPI接口。当检测到系统掉电,自动切换到电池供电,锁存当前的掉电时间,保持绝对时间。上电时,单片机首先读取上次掉电时间,并记录来电时刻。总之,MT41T94在监测系统中提供供电时间、停电时刻、停电时间、来电时间、来电时刻等重要信息[4]。

通信模块有无线通讯和有线通讯模块。前者用西门子推出的TC35i无线模块,可以快速、可靠、安全地进行数据、语音、短消息和传真的传输,在物理连线无法到达的地方可方便地通讯。通过USB接口,可将记录的数据转存到移动存储设备(如U盘)。RS232/RS485复用的串行通讯接口可以通过串口线同PC机通讯,适合无线服务盲区,或近距离的物理连接的本地设备之间。

存储系统由FM25L256(256 Kb)和Flash存储器M25P80(8 M)2部分组成,在停电时重要的系统设置和采集的数据能够保存下来而不需电池供电,监测系统的成本降低累了,可靠性提高了。它们都支持SPI接口,各施其职:FM25L256用于存储CPU运行所需的重要设置信息 (如运算的比例系数、密码等),采样数据和中间计算结果。M25P80单位成本低,用于存放历史的监测数据和统计文件,既减少它的磨损又有利于减少系统的成本。

2.2 配网终端数据存储系统实现流程

配网终端的数据包括原始监测数据的记录、任务操作记录和统计文件。按照要求系统要保存三个月内监测的日统计数据和一年内各个月的月统计数据,包含运行时间、合格时间、合格率、超上限时间、超上限率、超下限时间、超下限率、停电次数、停电总时间以及停电的详细信息。如图3所示,ATT7022A采集的数据和MT41T94时间记录,是数据的来源。如时间异常,数据不参加统计,送M25P80保存以便能追溯原始监测数据记录,生成正确的统计数据;反之送FM25L256,一天结束时生成日统计文件,存在M25P80供以后查询。然后将一天里停电信息附加在日统计文件里。一天数据处理结束,天数加1、时钟清零。一个月满,日统计文件生成月统计文件并存入M25P80。这样,FM25L256以环形的方式存储(从0地址存储到整个存储器满,然后又循环从0存储并覆盖前面内容,周而复始),数据可任意修改。M25P80只是存相对少得多而且变化慢的统计数据、异常数据和掉电信息,节省了存储空间,减少了擦除的次数,延长使用时间。

图3 数据系统流程Fig.3 Flow chart of data-system

2.3 FM25L256在配网终端的作用

FM25L256扮演的是数据缓存器,真正存储数据的是大容量的Flash存储器M25P80。如果定义一个如下结构体NetworkState,其所占字节数就可以确定[5]。

typedef struct NetworkState

{ unsigned char year;//日期:年、月、日

unsigned char month;

unsigned char date;

unsigned char hour;//时间:时、分、秒

unsigned char minute;

unsigned char second;

float voltage_RMS;//有效电压

float reserved;//预留

}NetworkState;

由前面可知,月统计文件是以日统计文件为基础的,日统计文件是以小时统计信息为依据的,同理,小时和分钟的统计数据来源则分别是分钟统计和每次测量的数据。本监测系统只简单地测量电压,参数累计求和做平均作为该参数分统计值。与此同时,可以统计运行时间、超上限时间、超下限时间、停电时间、各参数最大值、最小值等作为日统计和月统计的内容。日统计和月统计有相同的数据结构:

typedef struct Statistics

{ unsigned char year;//日期

unsigned char month;

unsigned char date;

unsigned long runtime;//运行时间

unsigned long uplmttime;//超上限时间

unsigned long dnlmttime;//超下限时间

float meanvoltage;//平均电压

unsigned long powercuttime;//掉电时间

unsigned long maxmoment[3];//最大电压时刻:时、分、秒

unsigned long minmoment[3];//最小电压时刻:时、分、秒

unsigned char powercutcount://停电次数

unsigned char reserve;//保留

}Statistics;

日统计文件和月统计文件都占49个字节,其中掉电时间是CPU上电时直接从MT41T94中读取的掉电时间。由于日统计和月统计文件有相同的数据结构,就要一个文件头来表征它们的属性:文件类型(月文件还是日文件),文件建立的时间、文件名等,以示区别。

struct header

{ char filetype;//文件类型

unsigned long createtime;//文件建立时间

char name[namesize];//文件名

unsigned char reserve;//保留

}

就测量单相电压来说,必须包括:单次测量的14字节,最大及最小电压各14字节,分统计的14字节及1小时60分钟的分统计60×14,时统计的14字节及一天的时统计24×14,日统计文件49字节,一天共要1 253个字节。FM25L256有32 K(32 768字节)的空间可以利用,足够存下生成日统计文件所需的数据。由此看出,分、时统计数据耗费大部分的存储空间,如果要测量更多的参数,存储器空间不够。其实,有问题的单次测量才有存下来以备后用的必要,所以记录分钟、小时统计和时间错误的数据代替全部的数据,可以满足要求,并节约更多空间。单次数据依次在FM25L256中环形存储,下次轮到写该地址时,以前的数据将被覆盖掉,日、月统计和时间错误数据就存于Flash存储器M25P80。另外,如果任务被打断了,系统复位后如何处理上次未完成的任务,特别是数据未保存或保存操作中断,处理不好会导致数据的丢失。于是基于FM25L256掉电后能保存数据的特性,其内建立一个任务记录文件,每当单片机完成任务的一个阶段就以文件的方式记录下来。单片机复位后,首先读取任务记录文件的最后一项,就知道上次停电正在完成的任务在什么阶段,这样就可以接着上次的任务继续运行。

随着时间的推移,Flash存储器M25P80里的统计文件和原始监测数据越来越多,这给查找带来了极大的不便。统计文件是按时间顺序存储在Flash中的,要查找一个特定的文件就要顺序读取整个Flash块,这就会花费大量的时间,效率低下,而且影响CPU的数据采集。如果预先在FM25L256里建立一个以环形存储方式组织的目录索引表,20字节的目录项包括文件的名称、生成日期、时间是否过时、开始地址。由于记录文件的目录项是按时间顺序排列的,要索引文件,只要根据查找的时间计算和当前时间的时间差,然后换算成数据目录数之差就可以找到目录项。要找哪一天的数据,只需在里面调出它的地址,并访问它就行了。索引表要和统计文件的更新保持一致,才能索引到正确的位置,文件的快速更新要求索引表内容也不断变化,FM25L256也发挥了它的易写,无限读写次数的优点。

3 硬件设计

由于FM25L256支持SPI接口通信,直接将它和单片机C8051F340 的 SPI 引 脚 SCK、MOSI、MISO 相 连 ,R1、R2、R3作为上拉电阻,图4是具体的SPI连接电路[6]。

图4 C8051F340和FM25L256连接电路图Fig 4 Connection circuit of C8051F340 and FM25L256

采用三线主机模式:C8051F340为主机,FM25L256为从机,P4端口的第3引脚为从器件FM25L256的片选信号。因为SPI接口要与多个器件连接,每次只能选择一个从器件,且NSS是受时钟信号控制的,如果连接上了,主机SPI就只能控制一个器件,实现主从一对一通信,所以片选引脚NSS悬空。被NSS选择的从器件只能以字节,而不能多字节进行通信,大大降低了通信的速率。现NSS悬空,用通用I/O口做片选,从而一个SPI可以分时控制多个器件,SPI接口就充分利用了。因为要对FM25L256进行即时读写,/WP通常被R5上拉成高电平,禁止硬件写保护。/HOLD和VCC都连在电源上,禁止其保持功能。

4 软件设计

单片机控制从器件之前,要对C8051F340进行配置。首先,关闭看门狗以防止复位。然后,系统时钟采用最高内部时钟12 MHz,经SPI0CKL寄存器分频使SPI总线时钟可达6 MHz。 其次,SPI采用模式 0,即控制位 CPHA(SPI0CN.5)=0,SCK时钟前沿采样数据,CPOL (SPI0CN.4)=0,SCK时钟低电平为空闲状态。并且将SPI配置到相关端口,使能交叉开关。接下来就可以进行控制操作了[7]。

当片选信号/CS为低时,送操作命令进行相关操作,控制操作结束时将/CS置为高电平。操作应遵循一个命令对应一次有效片选,即一次操作之前片选拉低,以拉高片选结束操作。始终保证/CS的一次拉低和拉高对应一次操作,有利于操作命令有序地切换。FM25L256提供了6个操作命令:写使能命令字(WREN)、写禁止命令字(WRDI)、写命令字(WRITE)、写状态寄存器命令字(WRSR)、读状态寄存器(RDSR)和读命令(READ)。其中前两个是单操作命令,即是不跟任何操作数的命令,后面的4个命令都要紧跟像地址和数据这样的操作数。

读(写)数据步骤:送读命令,2字节数据地址,SPI0DAT返回一字节或是多字节数据,并赋给定义的变量或是数组变量,拉高片选结束操作。(拉低片选,写使能、写命令、送写数据的2字节地址和紧跟一字节或是多字节的数据)。多字节数据读写时,地址自动增加,满7FFF则置0。软件操作流程图如图5所示。

图5 软件操作流程图Fig.5 Flow chart of software operation

5 测试结果

A/D转换器每秒采集3次数据,当总线频率为200 kHz,ATT7022A可与C8051f340无延时数据传输,Flash擦除时间为0.64 ms,而FM25L256频率最大为6 MHz,读写周期为49×1/6 000 000≈8.2 μs, 减少了写时间。 Flash能擦除 100 000次,不用FM25L256,数据变化对应着flash擦除,一天就3×60×60×24=259 200次,反之,只需存储一个日统计数据和不正常的数据(留有余量10次),延长了使用寿命。在总线为200 KHz的情况下,至少要访问文件的头文件(20个字节)。最差的情况下,可能所有Flash的文件(如1 000个)才能找到所需要的文件,则要 0.000 005×20×1 000=0.1 s,因为很多器件都通过SPI总线和单片机相连,一个时刻只允许一个器件通讯,很多任务都要独占SPI资源,这0.1 s的时间超过了ATT7022A数据采集的等待极限时间,势必给系统带来时间误差,甚至造成数据不完全。而用索引文件,只需访问一个头文件和数据时间,计算出差值和相对地址之差,然后直接访问该地址,共用时 0.000 005×(20+1+1)=0.000 11 s ,检索时间减少到原来的0.11%。

6 结束语

FM25L256是一块具有无限次擦写﹑高速读写﹑低功耗,在掉电的情况下能把数据完整地保存起来的铁氧存储器芯片。使用它可避免其他的非易失性存储器带来的复杂操作(如写前必须擦除、块擦除)和提高系统的可靠性。FM25L256在配网监测终端中的使用,不仅简化了设计,也提高了系统的可靠性。配网监测终端的现场长期运行,也证明了这一点。正因为其操作简单,性能卓越,也广泛地应用于水表﹑煤气表﹑汽车﹑多功能影印机﹑风速测量仪、打印机和其他在掉电情况下需要保留可靠数据的产品中。

[1] 马良.铁电存储器工作原理和器件结构 [J].电子与封装,2008,8(64):37-38.MA Liang.The work principle and device structure of feram[J].Electronics&Pakaging,2008,8(64):37-38.

[2] Ramtron International Corporation,FM25L256 Datasheet.[EB/OL].(2005-04).http://data.eeworld.com.cn/part/198276_RAMTRON_FM25L256.html.

[3] 毛竹林.配网无线分布监测系统智能终端的研制[D].成都:四川大学,2008.

[4] 杨波,徐禄勇,钟睿,等.实时时钟器件M41T94在配网监测终端中的应用[J].电子设计工程,2009 6(6):17-19.YANG Bo,XU Lu-yong,ZHONG Rui,et al.Application of real-time clock M41T94 in monitor terminal of network distribution [J].Electronic Design Engneering, 2009, 6(6):17-19.

[5] 谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999.

[6] 郝文化.Protel DXP电路原理图与PCB设计 [M].北京:机械工业出版社,2004.

[7] 童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航空航天大学出版社,2005.

猜你喜欢

存储器字节时钟
No.8 字节跳动将推出独立出口电商APP
别样的“时钟”
静态随机存储器在轨自检算法
古代的时钟
No.10 “字节跳动手机”要来了?
简谈MC7字节码
有趣的时钟
时钟会开“花”
存储器——安格尔(墨西哥)▲
基于Nand Flash的高速存储器结构设计