基于DSP 高速外扩FLASH 的高精度数据采集系统*
2012-12-22周晓玲沈恺煜吴校生王天洋陈文元张卫平
周晓玲,沈恺煜,吴校生 ,王天洋,陈文元,张卫平,崔 峰,刘 武
(上海交通大学微纳科学技术研究院,微米/纳米加工技术重点实验室,上海200240)
本设计是面向微固体模态陀螺的数据采集应用而设计的,微固体模态陀螺具有抗冲击、抗震动能力强、稳定性好,长期工作可靠性高等优点[1-2],具有很大的研究价值。首先微固体模态陀螺共有8 个感应电极,当振动模态产生时,陀螺按固定的振动方式运动,当陀螺位于角速度旋转环境中时,其振动方向垂直方向上产生了科氏力,在压电材料的作用下,这部分力转换为了电荷分布的变化。经前端的检测电路检测感应电极的电压值,8 路信号经过前端的差分检测电路后剩下4路信号,需要4 路转换通道[3]。其次因为由科氏力感应出的信号很微弱,因此对信号采集的精度要求很高。最后因为前端检测电路为模拟电路,信号通过解调滤波后噪声干扰依然很明显,为了使信号处理的效果更加显著,需要的采样速率相对要高一些。综合以上几点考虑选择了高精度模数转换芯片AD7656。为实现微固体模态陀螺长时间的精度漂移测量,还要求数字型的检测系统能够完成大容量的数据存储,以便后续的数据处理。数字检测系统具有抗干扰能力强,可预测性和重复性强,灵活性强便于修改等诸多优势性能,从而能大大提升系统的检测精度[4]。数据采集是数字检测系统的开始,如果实现的不好则会影响整体的系统性能,所以非常重要。本设计的数据采集系统具有高精度AD 转换及高速大容量存储的性能,并且接口简单,操作方便,简洁实用。
近年来,DSP 以其体积小、功耗小、使用方便、数据处理量大以及处理精度高以及计算能力不断增强等优点,被大量的用来设计自动控制系统[5]。TMS320F2812处理器是TI 公司的一款用于控制的高性能、多功能、高性价比的32 位定点DSP 芯片,最高可在150 MHz 主频下工作,具有多达56 个独立编程的GPIO 引脚,可作为控制端口还可进行大容量外扩,片上带有18 k×16 bit SRAM 和128 k×16 bit FLASH,存储空间很小[6]。本设计所选择的AD7656 芯片具有6 路数据转换通道,转换精度为16 bit,当输入为±5 V 时,理论分辨率(LSB)为0.152 mV[7],还具有低功耗、高抗噪性能、宽带宽等性能优势。在采样频率为250 kHz/s[8],每秒钟4 通道的采集量为1 MHz,为了实现微固体模态陀螺长时间的精度漂移测量,至少需要采集10 s,即需要10 MHz 的存储空间,而DSP2812 片上的存储资源远远不能满足要求,因此需要外扩一个大容量并且满足高速写入性能的存储器,而需要对大量数据进行非易失性存储时,FLASH 存储器相对有很高的性价比[9],基于以上要求选择了市面上较常见的三星公司生产的FLASH 芯片K9F1G08UOB。K9F1G16UOB 是具有超大容量的FLASH 存储器,其存储容量为128 M×8 bit,读写速度与SRAM 相差无几,其内部开辟的的高速缓冲区,连续写入的周期可达50 ns[10]。K9F1G16UOB 芯片具有接口简单、操作方便、扩展容易以及大容量存储等特性。满足系统需求并且在速度上满足与高速DSP 相匹配。
1 系统概述
本设计的系统框图如图1 所示。系统分为3 个部分,即控制单元、高精度数据转换单元、大容量数据存储单元。本系统主要是将前端检测后的数据进行进一步的数字处理,使数据分析更加准确,本研究的侧重点是寻找最为合适的信号处理方法,考虑到软件实现效果简单可靠而且分析方便,所以系统采集到的数据将通过串行口经RS232 串口输送给PC机。在PC 机中使用MATLAB 软件进行数据处理及分析。因此现阶段还没有考虑到系统的实习性的实现问题,这也是今后要研究的主要内容。本系统要实现四路通道的同时转换,转换操作及数据读取和存储操作由TMS320F2812 采用外部中断控制,当BUSY 引脚值为0 时,触发外部中断,进行数据读取。将数据读取到TMS320F2812 的外设2 存储空间Zone2 中,如此循环读取170 次后Zone2 中将存储2040(12×170)Byte 数据,之后再次启动中断控制,将此2040 Byte 数据一次写入到外扩FLASH 芯片 K9F1G16UOB 中。 这 样 的 话 只 需 要 对K9F1G08UOB 进行一次寻址,顺序将数据写入一页,降低寻址次数可以大大提高写入操作的速度。之后重复此操作,实现高精度转换以及大容量存储。
图1 高精度大容量数据采集系统的原理框图
2 高精度数据采集模块的设计
本设计控制单元采用的是开发板之家生产的的Study-2812 开发板。AD7656 与DSP 芯片的连接关系如图2 所示。
图2 AD7656 外围电路及其与TMS320F2812 芯片的连接
AD7656 内置6 个SAR ADC、6 个采样保持放大器。如图2 所示,H/S SEL 引脚接低电平说明此系统中AD7656 采用硬件控制模式。SER/PAR SEL 引脚接低电平表示选择并行输出模式,同时W/B 引脚接高电平,DB7/HBEN 引脚接低电平,表示数据选择并行字节模式输出,即每通道的转换结果通过两次读取操作来获取,每次先读取每个转换通道的低八位。与RD 同时为低电平时,AD7656 执行读取操作,本设计用XZCS2 控制片选CS。利用XRD 引脚来控制RD引脚,来实现数据读取。RESET 信号由GPIOB0/T3CMP 口控制,芯片通电后,首先要输入一个100 ns的复位高脉冲,确保读取转换结果时指针指向第1 个数据位。本设计需要对6 路信号进行同步采样转换,所以将3 路CONVST 信号接在一起统一由GPIOB0/PWM7 口来控制,可以实现对6 个ADC 进行同步采样。通过脉冲激活CONVST 输入来启动AD7656 的转换,在CONVST 信号上升沿,6 个ADC 的采样保持放大器进入到保持模式,并开始转换。GPIOB4/PWM11 口与BUSY 信号相连,查询转换是否完成,当CONVST 引脚到上升沿即启动转换后,BUSY 信号变为高电平,表示正在进行转换,转换采用内部时钟,时间为3 s,BUSY 恢复低电平时,表示转换完成,可以进行读取操作。读取操作由CS 和RD 信号控制。当CS 为高时,并行输出引脚会处在高阻态,所以CS 要处于低电平,AD7656 芯片才能进行正常的读取。当CS 为低电平时,在RD 信号的下降沿,AD7656 中输出寄存器的内容将被更新。所以在每个读序列之前RD信号必须被触发,将RD 引脚置低,保存输出寄存器中的数据,然后再将RD 引脚置高,来更新输出缓存器。所以在SER/PAR SEL 引脚为低选择并行接口,并且CS 和RD 信号同时为低时,就会产生一个45 ns读取脉冲,启用输出总线,将数据读出。在此系统中,第1 个读取脉冲读取的是转换通道V1 的低8 位数据,紧接着是高8 位,然后是转换通道V2 的低8 位,以此类推,需要产生12 个读取脉冲来读取转换生成的数据,完成一轮的转换以及读取。将数据存储到片上存储器中。
相关的逻辑脉冲时序如图3 所示。值得一提的是CONVST 引脚在RESET 脉冲期间保持低电平的话,在RESET 脉冲之后,AD7656 需要接受一个完整的CONVST 脉冲来启动首次转换,这个脉冲要包括一个高至低的CONVST 下降沿,随后是一个低至高的CONVST 上升沿。
图3 逻辑脉冲时序图
3 大容量数据存储模块的设计
K9F1G16UOB 是三星公司生产的NAND 结构的FLASH,是一种高密度、非易失性的电可擦写存储器,存储量大,使用方便,适用于低功耗、高性能的系统。它分成1024 个块,每块又由64 页组成,一页有2 kbyte。该片的8 bit I/O 总线是命令、地址、数据复用的。K9F1G08UOB 容量为128 M×8 bit,需要一个27 bit 的地址,但是只有8 bit I/O 口,所以在寻址的时候采用地址分时复用的方式,用4 个字节对K9F1G16UOB 进行寻址。前两个周期输入页地址,寻址空间是4 kbyte,后两个周期输入块地址,寻址空间是64 kbyte。K9F1G16UOB 芯片写操作的实现是先写入页写指令80h,然后分四个字节写入地址,最后写入数据,FLASH 根据写入的地址自行寻址将数据写入到指定地址中。读取操作与写操作类似。,发出命令后,后面要紧跟着写入4 个地址序列。表1 为其地址序列。
表1 FLASH 芯片K9F1G08UOB 的地址序列
TMS320F2812 芯片与FLASH 芯片K9F1G08UOB的硬件接口连接如图4 所示。其中R/B 为状态查询引脚,与GPIOA0/PWM1 口相连,当R/B 引脚为低电时,说明有程序正在运行,当变为高电平时,说明运行结束。CE 为片选信号,由DSP 片选信号XZCS6 口控制,RE 是读有效信号,由GPIOA2/PWMS 控制,在RE的下降沿触发8 bit I/O 口的读操作。WE 是写有效信号,由GPIOA6/T1CMP 口控制,在WE 的上升沿触发8 bit I/O 口的写操作。包括指令、地址以及数据的写入。CLE 是命令锁存信号,由GPIOA8/QEP1 口控制,ALE 是地址锁存信号,由GPIOA10/QEP11 口控制,PRE 是上电读使能信号,如果接高电平,则上电以后FLASH 自动进行读数据操作,本设计中将其做接地处理。I/O0 ~I/O7 是地址数据复用I/O 口线,与DSP 的数据总线D0 ~D7 相接。该模块要将经AD 转换后已经读取到DSP 中的数据存储到FLASH 芯片K9F1G08UOB 中,软件部分流程图由图5 所示,程序分为几个子程序模块,初始化子模块,坏块查询模块,块擦除模块,写指令模块,写地址模块,写数据模块以及状态查询模块。
图4 K9F1G08UOB 与TMS320F2812 芯片的连接
图5 FLASH 写数据流程图
写数据流程如图5 所示。首先是初始化FLASH,然后判断即将写入的块是否为有效块,检测标准就是检测块的第1 页或者第2 页是否在2048列被标记了非FFH 的数据,因为每个出厂芯片的无效快,都会在其第一页或者第二页的2048 列被标记了非FFH 的数据,如果没有检测到,则证明是有效块。判断为有效块后往FLASH 中写入块擦除模块,首先写入指令60 h,开始块擦除操作,之后写入要擦除的地址,即A12 ~A27 的地址,随后写入确认擦除指令D0h,完成块擦除操作。随后写入FLASH 头程序,即写入页写指令80h,随即写入地址,地址输入之后将存储在DSP 片上FLASH 中的2040 byte 数据顺序写入,然后写入确认写入数据指令10h,完成一轮的写操作。下一轮即将页数加1 继续写入,如此循环操作不断将数据写入FLASH 中,写入64 次后,一块写满,则块数加1,继续写入。这种将一页的数据一次写入FLASH 中的操作可以提高系统的工作效率。并且K9F1G08UOB 内部高速缓冲区连续写入的周期可达50 ns,满足了高速大容量存储的需求,且接口简单,操作方便。
4 结论
已经对搭建的测试电路板进行了模拟输入测试,测试结果显示当通道V1输入电压为5.2 V 时,存储到系统中的数组1 结果为1010 0010,数组2 显示结果为1000 0101,经过计算后V1通道采集到的数据值为5.199 92 V,误差为0.000 08 V,能够满足系统需求。该系统稍后会应用到微固体模态陀螺中,进行系统级的测试以及后续数据处理和分析。
[1] Xiaosheng Wu,Wenyuan Chen,Yipeng Lu.Vibration Analysis of a Piezoelectric Micromachined Modal Gyroscope(PMMG)[J].J.Micromech. Microeng. 19 125008 doi:10. 1088/0960 -1317/19/12/125008.
[2] 吴校生,卢奕鹏,陈文元. 压电型微固体模态陀螺的模态及谐振分析[J].传感技术学报,2008,(12):2014-2019.
[3] 何程鹄.压电型微固体模态陀螺的微弱信号检测与降噪技术研究[D]:[硕士学位论文]. 上海:上海交通大学微纳科学技术研究院,2011.
[4] 余亮琴.石英音叉微机械陀螺的微弱信号数字检测技术的仿真与系统误差研究[D]:[硕士学位论文]. 长沙:国防科学技术大学机械电子工程系,2005.
[5] 谢青红,张筱荔.TMS320F2812 DSP 原理及其在运动控制系统中的应用[M].北京:电子工业出版社,2009.
[6] 苏奎峰,吕强,耿庆峰. TMS320F2812 原理与开发[M]. 北京:电子工业出版社,2005.
[7] 马高印.转子式静电微陀螺悬浮与旋转测控系统相关技术研究[D]:[博士学位论文]. 上海:上海交通大学微纳科学技术研究院,2010.
[8] Analog Devices,Inc.AD7656 Data Sheet[S].2008.
[9] 伍美俊,吴迺陵.TMS320VC5509 应用flash 存储数据的接口电路设计与编程[J].电子器件,2007,30(2):675-678.
[10] SAMSUNG Electronics CO.,LTD. K9F1G08UOB Data Sheet[S].2001.