文献标识码: A
文章编号: 0258-7998(2013)08-0037-03
利用MEMS加速度计、陀螺仪、磁强计等惯性器件研制的微型姿态测量系统具有体积小、价格低、功耗低、抗冲击力强等优点,广泛应用于现代武器制导系统、人体姿态测量系统、无人机飞行控制系统等方面。微型姿态测量系统需要将传感器信息、控制信息等资料进行存储以用于后期的数据分析与处理,大量信息的存储需求使得大容量的存储芯片在系统中的使用变得更加必要[1-3]。Flash存储器因其存储容量大、掉电数据不丢失以及可多次擦写等优点在军事、商业、工业等需要进行信息存储的多种操作系统中发挥着重要作用[4-8]。AT45DB系列Flash存储器是ATMEL公司生产的串行接口可编程闪速存储器,具备操作方便、数据存储量大、安全性好、封装尺寸小、集成度高、功耗低等优点,几乎无需外接元器件即可与单片机或微处理器进行通信,实现数据的实时存储[9-10]。本文以MEMS姿态测量系统中Flash存储芯片单元AT45DB321D为例,阐述了存储芯片与微处理器的硬件接口电路、软件操作流程以及I/O口模拟SPI协议的具体程序实现,是对Flash存储器在系统信息资料存储设计方面的有益探讨。
1 AT45DB321D芯片介绍
AT45DB321D是串口可编程Flash芯片,目前主要有MLF、SOIC、CARD、TSOP 4种封装形式。本文选用的芯片封装形式为SOIC,管脚简单,连接方便。AT45DB321D中数据按页存放,主存共8 192页,每页528 B,共32 MB容量,存放在主存中的数据掉电不丢失。除主存以外,该芯片还有2个容量为528 MB的数据缓存,可暂存一些临时数据。缓存读写方便迅速,读写操作多通过缓存完成。
2 MEMS姿态测量系统
随着MEMS技术的迅速发展,MEMS姿态测量系统的精度、鲁棒性、动态响应等性能都得到了巨大的提高,在多种场合得到应用[1-3]。在本系统中,微处理器选用的是C8051F系列单片机,其功耗低,运算速度快,具有24个I/O口,同时支持多种类型标准数字接口。MEMS传感器模块包括三轴加速度计、三轴陀螺仪和三轴磁强计,MEMS传感器均采用数字接口设计,使用I2C总线与单片机通信。传感器数据信号被采集到微处理器C8051F中后,利用基于SPI协议的无线数据传输模块将数据上传到上位机进行数据融合姿态解算,同时将数据存储到存储芯片中,以应用于之后的仿真、计算、数值分析。存储器在整个系统中的连接如图1中微存储器所示。
3 存储芯片在姿态测量系统中的应用
3.1 接口电路硬件设计
AT45DB321D数据传输采用SPI格式,其外围电路简单,无论单片机是否有SPI接口,均可与其连接。若单片机有SPI接口,存储器读写程序相对简单;若没有SPI接口,可用软件仿真SPI接口与存储器通信。在本系统中,数据传输模块已占用微处理器的SPI接口,所以存储操作用I/O口模拟SPI协议来实现数据存储。图2为该芯片应用于姿态测量系统中的部分电路图,SO、SI、SCK、CS、WP、RESET分别与微处理器通用I/O口相连, 利用软件模拟实现SPI协议。
3.2 模拟SPI总线设计
典型的SPI接口有4种操作模式,分别为0、1、2和3。SPI操作模式决定了设备接收和发送数据时的时钟相位和极性。AD45DB系列存储器仅支持SPI模式0和3。在这两种模式下,SCK信号上升沿触发数据输入,下降沿触发数据输出,如图3所示。二者的区别是SCK信号的起始电平不同。在本系统中采用SPI模式0来实现C8051F与Flash之间的通信,用以下C程序模拟实现SPI协议模式0,用数据移位操作实现移位寄存器功能,同时规定时钟上升沿输入数据,下降沿输出数据。其中定义单片机的I/O口P2.1为存储器的片选信号,P2.0为存储器时钟信号,P0.6作为从输入、主输出口,P0.7为主输入、从输出口。程序中Out_Byte函数实现1 B的移位操作,Out_Word函数实现2 B的移位操作。
(1)void Out_Byte(unsigned char Byte)
{unsigned char Cyc,Out_SI;
for(Cyc=0; Cyc<8;Cyc++)
{ SCK=0;delay(20);
Out_SI = Byte & 0x80;
if(Out_SI==0){ MOSI=0; }
else {MOSI=1;}
Byte = Byte<<1; delay(20);
SCK=1;delay(20);}}
(2)void Out_Word(unsigned int Word)
{unsigned char Cyc;
unsigned int Out_SI;
for(Cyc=0; Cyc<16;TempCyc++)
{SCK=0; delay(20);
Out_SI = Word & 0x8000;
if(Out_SI==0){ MOSI=0;}
else{MOSI=1;}
Word = Word<<1; delay(20);
SCK=1; delay(20);}}
3.3 软件设计
存储芯片与微处理器之间的数据传输包括数据读和数据写操作,存储器配置片选管脚CS使能,由串行时钟(SCK)对读写进行控制,执行微处理器的指令,通过串行输出(SO)和串行输入(SI)进行数据读写操作。
3.3.1 程序指令实现
AT45DB321D的数据命令格式是在SPI总线上传输8 bit操作码后,再输入13 bit页地址和9 bit缓存器地址或指定页起始地址,如图4所示。因给出的页面地址和起始地址都是2 B的int数据类型,共32 bit数据,存储器并不识别,所以需要进行移位操作,使所传输的页面地址和起始地址是存储器识别的地址码。本文首先将包含13 bit页地址的字节左移1位,使其最低边位闲置,完成存储器识别的页地址操作;然后将包含9 bit缓存器或起始地址的字节右移8 bit后,余下的最高字节加到左移后闲置的最低位地址上,同时低字节的8 bit地址保持,通过Out_Word和Out_Byte两个指令依次将经过移位操作的总共22 bit地址传输给存储器,实现存储器程序指令的传输操作。具体的C程序实现如下:
Out_Address_1=(Page_Address<<1)|(Start_Address>>8);
Out_Address_0=(Start_Address&0x00ff);
Out_Word(Out_Address_1);
Out_Byte(Out_Address_0)。
3.3.2 写操作
单片机写程序在Silicon laboratories IDE环境下对程序进行编译烧写和在线调试。对该芯片的写操作有两种方式:一种是直接写指令,通过微处理器模拟SPI移位寄存器直接向存储芯片指定页的指定地址写数据。在这种方式下,要存储一段连续的数据必须用一个循环来实现,故执行时间较长。另一种方式是先把指定数据依次通过移位寄存器存储到缓存器1,在写完缓存后一次写到Flash指定页中去,通过缓存间接完成Flash的数据写操作。本文中采用间接法进行数据写操作,写操作数据流程如图5所示。
3.3.3 读操作
对存储芯片的读操作也分为两种方式:可以直接从Flash中将给定起始页的数据连续读到微处理器中,也可以通过将指定页数据传到缓存间接读取。本系统读操作采用间接方式,先把Flash指定页数据依次通过移位寄存器存储到缓存器1,再通过缓存间接完成Flash的数据读操作,整个数据读取流程如图6所示。
3.4 存储数据分析
通常数据按照指定数据协议在存储器中按照二进制格式表示,处理器先对数据进行归一、转换等操作,使之变成符合使用要求的数据,再对数据进行分析处理。本姿态测量系统中某次测量的传感器数据和姿态数据如图7所示,后期数据处理采用Kalman滤波算法对姿态数据进行运算处理。
本文主要介绍了大容量Flash存储器AT45DB321D在姿态测量系统中的应用,阐述了该存储器与单片机的硬件连接与软件实现,重点对模拟SPI协议和数据操作指令的具体实现进行了讨论。文中设计了程序模拟实现SPI协议,解决了系统自带SPI接口被占用时的数据传输问题;采用了移位操作将页面地址和起始地址转换为存储器可识别的数据命令格式,实现了数据的读写操作。该系列存储芯片具有存取速度快、可靠性高、数据有效时间长等优点,在计算机外部设备、通信设备、自动化控制和各种消费电子产品中都将会有越来越广泛的应用。提供的程序全部经过调试,运行稳定可靠,可重复操作性强。
参考文献
[1] 朱荣,周兆英.基于MEMS的姿态测量系统[J].测控技术,2002,21(10):6-9.
[2] 陈新隽,刘晓平,戴若梨,等.多MEMS传感器的嵌入式姿态测量系统设计[J].单片机与嵌入式系统应用,2011(10):58-61.
[3] Zhu Rong,Zhou Zhaoying.A small low-cost hybrid orientation system and its error analysis[J].IEEE Sensors Journal,2009,9(3):223-230.
[4] 徐春生,王太勇,邓辉,等.串行DataFlash在便携式片上数采系统中的应用[J].机械与电子,2005(7):74-76.
[5] 申河卿,张崇巍.基于C8051F320的便携式心电监护仪设计[D].合肥:合肥工业大学,2008.
[6] 陈颖.存储器AT45DB161及其在安全监控记录装置中的应用[J].计算机应用,2009(2):51-54.
[7] 范爱华,周越.电动车测速报警系统[J].微计算机应用,2011,32(5):76-80.
[8] 王霞,李淑民,裴培,等.基于ADS8364的数据采集系统设计[J].电子技术应用,2009,35(7):95-97.
[9] 黄秋,丁卫撑,方方,等.SPI接口的Flash ROM与C8051-F340的接口设计[J].自动化技术与应用,2010,29(4):99-102.
[10] 扶小飞,郑善贤.一种Flash文件系统的设计和实现[J].微计算机信息,2010,26(2-2):174-176.