基于ARM的便携式数据采集与处理系统设计

2016-04-12 00:00:00陈建种健刘剑
现代电子技术 2016年13期

摘 要: 针对嵌入式系统在数据采集与处理中的应用,研究了一种新的方案进行系统的软硬件设计、调试和实现,完成了一个集多路数据采集与处理、实时显示和USB通信于一体的便携式数据采集系统。在硬件方面,利用微处理器的外围设备,结合Atmel公司提供的微控制器开发板原理图和客户实际需求,设计了5路模拟量输入通道,锂离子电池充电电路,SDRAM,NAND FLASH存储器电路,SPI通信方式的LCD接口电路,USB设备接口和DBGU接口电路。在软件方面,利用IAR集成开发环境设计了多路模拟量输入定时采集,LCD显示,按键设置,NAND Flash读写和USB大容量存储设备驱动等程序模块,并实现了一些简单的数据采集处理和FFT频谱分析功能。最后,为分析、处理NAND FLASH中模/数转换的数据,分别进行了基于Matlab的数据处理编程和Matlab与VC++的混合编程。

关键词: 嵌入式系统; 数据采集; USB大容量存储设备; ARM

中图分类号: TN431.2⁃34; TP274.2 文献标识码: A 文章编号: 1004⁃373X(2016)13⁃0167⁃04

Abstract: For the application of embedded system in data acquisition and processing, a new scheme is studied to perform the software and hardware design, debugging and implementation. A portable data acquisition and processing system integrating multichannel data acquisition and processing, real⁃time display and USB communication was implemented. For the hardware, 5 analog input channels, lithium⁃ion battery charging circuit, SDRAM, NAND Flash storage circuit, LCD interface circuit with SPI communication, USB device interface and DBGU interface circuit were designed based on the peripheral unit of microprocessor, microcontroller development board schematic diagram made by Atmel Company and actual customer demand. For the software, the program modules of multichannel analog input timing acquisition, LCD display, key configuration, and driver of NAND FLASH read⁃write and USB mass storage device were designed by means of IAR integrated development environment, and then some simple data acquisition and processing, and FFT spectral analysis function were realized. In order to analyze and process the analog⁃to⁃digital conversion data in NAND FLASH, the data processing programming based on Matlab and mixed programming based Matlab and VC++ were performed respectively.

Keywords: embedded system; data acquisition; USB mass storage device; ARM

当今,嵌入式系统的发展方兴未艾,软硬件技术日趋成熟,应用也越来越普遍。ARM是业界领先的32位嵌入式微处理器,成本低、低功耗、可扩展性强、支持实时多任务处理。在这一背景下,本文结合便携式数据采集与处理这一具体应用进行嵌入式系统的开发,按照结构化、模块化的方式进行系统软硬件的设计、调试和最终实现[1]。

1 系统的硬件电路设计

本设计系统的核心是Atmel公司的ARM7微控制器AT91SAM7SE256,这是一款基于ARM7TDMI内核的16/32位嵌入式RISC微控制器,在极限条件下(1.65 V,85 ℃)主频能到达55 MHz。ARM7TDMI内核使用了取指、译码、执行3级流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储系统连续操作。

1.1 硬件电路设计

为了实现采用极化阻抗法进行石油管道的腐蚀分析过程中的数据采集与处理,硬件电路上需要有5路采集频率为1 kHz的模拟量输入通道,能够实现大容量数据存储功能,具有实时显示和USB通信功能[2]。

硬件电路功能框图如图1所示。

1.1.1 电源与复位电路

(1) 数字电源设计。可充电锂离子电池输出4.2 V电压,经过多功能电池充电器芯片LTC4080输出3.3 V供CPU、时钟芯片、NAND FLASH、SDRAM和DBGU接口芯片等使用。LT4080是凌特公司推出的具有独立线性电池充电器和高效率同步降压型转换器的多功能集成电路,该USB兼容的电池充电器能以高达500 mA的电流为单节锂离子电池充电,而且没有使器件或周围组件过热的风险,而高达300 mA的降压型稳压器具有可选工作模式和同步整流功能,以实现高达96%的效率,该器件用来与高达5.5 V的电源一起工作,包括那些符合USB规格的电源,特别适合应用于便携式设备中[3]。

(2) 模拟电源设计。A/D电路的供电需要模拟电源,数字电源3.3 V通过100 μH电感作为电荷泵电压反相器芯片XC6351A120的输入,XC6351A是一系列电荷泵电压反转器,内置4个开关MOSFET,外围只需要3个陶瓷电容就可组成一个正电压输入,负电压输出的高效率、低功耗电压反转器电路,模拟电路电源与数字电源需要电感隔开。

(3) 复位电路设计。复位电路使用了AT91SAM7SE256的复位控制器,复位控制器是基于上电复位单元的,能处理系统的所有复位而不需要任何外围器件并给出最近发生的一次复位情况,复位控制器可以独立的或同时驱动外部复位和外设及处理器复位,而掉电检测能阻止处理器进入不可预知的状态[4]。

1.1.2 时钟电路

时钟电路由两路时钟输入组成,分别为处理器工作时钟和芯片FM3116时钟。处理器工作时钟为18.432 MHz的无源晶体,需要外部电容。AT91SAM7SE256的两线接口(TWI)由一根时钟线及一根传输速度达到400 Kb/s的数据线组成,以字节为单位进行传输。它适用于任何的Atmel两线总线串行E2PROM中,与FM3116的二线制串行接口兼容,TWI可编程作为主机进行连续或单字节访问,电源管理控制器向TWI接口提供主时钟(MCK),因此必须先配置电源管理控制器使能TWI时钟,TWI接口有一条与高级中断控制器(AIC)连接的中断线,如果TWI接口通信采用中断的方式,必须对高级中断控制器配置使能TWI接口的中断。

1.1.3 LCD接口

这里采用的LCD型号是HGO12864A,这是一款由清达光电技术有限公司生产的FSTN型串行外设(SPI)串口液晶,集成了背光电路和NT7532液晶控制器,从而简化了外部电路设计和编程设计。

1.1.4 按键处理电路

利用并行输入/输出控制器(PIO),将I/O口配置为通用功能I/O线实现按键处理电路。

1.1.5 A/D电路

(1) 输入信号调理电路。由于各通道或各参数送入测量放大器的信号大小并不相同,但都要放大至ADC输入要求的标准电压,因此各个通道要求测量放大器的增益就每个通道的数据采集而言,可实现自动控制增益或量程自动切换,因此这里采用了程控增益放大器LTC6915。

(2) 模/数转换器(ADC)。这里用的是AT91SAM7SE256内置的ADC,是逐次逼近型的10位模/数转换器,它还集成了一个8选1模拟多路复用器,可实现8路模/数转换,转换电压范围为0 V~A/D基准电压,ADC支持8位或10位分辨率模式,并且转换结果都送入一个所有通道可用的通用寄存器中,即通道专用寄存器,可配置为软件触发、外部触发A/DTRG引脚上升沿或内部触发定时计数器输出。

1.1.6 NAND FLASH接口

AT91SAM7SE256的外部总线接口(EBI)集成了NAND FLASH器件接口电路,微控制器留给NAND FLASH的地址空间为:0x40000000~0x4FFFFFFF。这里采用的是SAMSUNG公司的K9F1G08U0M,NAND FLASH用于大容量存储设备保存采集的数据[5]。

1.1.7 SDRAM接口

这里使用SDRAMC芯片HY57V561620与微控制器的SDRAM控制相连[5],数据宽度为16 b,容量为32 MB。

1.1.8 USB设备接口

PC机是通过USB接口与本采集系统进行通信的,此时,本采集系统是作为基于USB接口的大容量存储设备出现在通信过程中;PC机在给锂离子电池充电时,也是通过USB接口来实现的。

1.1.9 DBGU接口

AT91SAM7SE256内置的调试单元(Debug Unit)为处理器访问基于Atmel的ARM内核系统的所有调试功能提供了一个单入口点,调试单元集成的2引脚通用异步收发器(UART)可用于多种调试与追踪目的,它为调试监控通信提供了理想媒介。调试单元通过MAX3232实现RS 232通信,收发器MAX3232配备专有的低漏失电压发射器输出状态,通过双电荷泵,在3.0~5.5 V供电下,表现出真正的RS 232协议器性能,这些器件只需4个0.1 μF的外部电容,用于电荷泵。在保持RS 232协议输出电平的前提下,可确保120 KBPS的数据传输速率。

2 基于IAR的软件设计与实现

软件设计主要包括:LCD显示程序、按键设置程序、A/D数据采集程序、数据处理及FFT程序和基于NAND FLASH的USB大容量存储设备驱动程序。软件的编程均是基于Windows下的集成开发环境IAR,同时借助于J⁃Link仿真器实现程序烧写和在线仿真,借助于DBGU调试接口与PC机实现RS 232调试通信,PC机通过终端仿真程序SecureCRT实时显示调试信息。

2.1 程序模块设计与调试

2.1.1 LCD显示程序

LCD驱动芯片NT7532驱动128×64点阵的液晶,将64行从上至下分为0~7共8页,每页由0~127共128个纵列构成,每列是8个点,与显存中的一个字节对应,用户只需要向NT7532的显示RAM中传送数据,NT7532就会自动扫描将显示RAM的数据自动在LCD液晶上显示出来,显示数据的内容和大小由字库决定,微处理器AT91SAM7SE256是通过串行外设接口(SPI)与NT7532实现通信、控制LCD显示的,图2为LCD显示程序层次框图。

2.1.2 按键设置程序

A/D转换数据文件存储时间及文件名的修改和NAND FLASH的格式化都是通过按键设计程序处理的,按键电平的定时扫描是通过AT91SAM7SE256的周期间隔定时器(PIT)中断方式ISR_Pit()实现的,在PIT中断处理程序中对与按键相关的I/O端口电平进行扫描,获得电平状态的变化,根据电平变换实现相应功能,图3为按键扫描流程图,按键处理程序如下:

2.1.3 A/D数据采集程序

ADC对连续的模拟信号进行采样,得到离散化的数字信号,由微处理器读取该数字信号并进行相应的处理。采样频率过高,采样点数过多,会占用大量的计算机内存,降低数据处理速度;采样频率过低,又会使采样数据失真而无法恢复原始连续信号。因此,必须根据信号的频率范围设置采样频率,同时又要满足采样定理的要求。当采样频率一定时,增加采样点数可以提高频率分辨率,但数据存储空间和计算量也相应增大。一般可根据实际需要进行采样点数的选取,通常设置为2的整数次幂,以便于进行后续的FFT频谱分析。

首先,初始化微控制器的ADC,配置为软件触发,工作模式为正常模式的10 b模/数转换器,然后使能本课题需要的5路模/数转换通道,设定程控增益预算放大器LTC6915的放大倍数,设置微控制器的TC2定时时间(采样频率),启动TC2使其工作在中断方式下,在TC2的中断处理程序中,启动A/D转换,读取A/D转换结果,判断A/D转换数据Buffer是否已满,如果已满停止A/D转换并将Buffer中的数据以FAT16文件系统管理的方式写入NAND FLASH中,继续A/D转换,否则继续向Buffer写入A/D转换结果[6]。

2.1.4 数据处理及FFT程序

(1) 时域参数检测

为了消除干扰,对转换数据进行滑动平均滤波;再求最值和平均值,结合模拟输入范围进行电压的标度变换,可以计算出输入信号的峰峰值和平均值。

对于周期性信号,通过计算相邻前向过零点之间的数据点数,根据采样频率得到模拟输入的周期(频率)。此外,还可以通过相关函数计算信号周期的估算值。

(2) FFT程序及其优化

(3) 基于NAND FLASH的USB存储设备驱动程序

在编写USB大容量存储设备的固件程序时,是借鉴Atmel公司提供的AT91 USB 大容量存储设备软件开发包,参照技术手册AT91 USB Framework和AT91 USB Mass Storage Device Driver Implementation完成的。

3 数据编程处理结果显示

在研究的采集系统中,以文件的形式存储、管理模/数转换结果,NAND FLASH中存储的数据文件通过文件名确定文件属于哪路模拟量输入通道和处于该通道的第几个采集文件。为了得到用来分析石油管道腐蚀情况的参数,需要对这些模/数转换结果进行FFT处理获得想要的两大参数:直流分量和50 Hz分量的大小。

在数据编程处理过程中,分别实现了基于Matlab的数据处理编程及VC++与Matlab的混合编程。由于Matlab集成的FFT算法和强大、易用的绘图处理功能使得在Matlab环境下实现数据处理很方便快捷,但是Matlab是一种脚本语言,需要依赖Matlab开发环境,这就大大制约了程序的可移植性和通用性;由于通过VC++实现Matlab的强大绘图功能很复杂,因此通过VC++与Matlab混合编程可以充分发挥出二者各自的优点,大大提高了开发效率。

为了测试采集系统ADC功能,基于Matlab的数据处理编程,基于VC++与Matlab的混合数据处理编程的处理效果,现用信号发生器提供特定频率和特定幅值的电压信号,每隔一段时间修改直流分量和交流分量的幅值,并对修改结果进行记录,待采集系统进行一段时间的模/数转换后,通过USB接口将采集系统的NAND FLASH中的数据读取到PC机上进行分析处理。图4为基于Matlab的编程处理效果,图5为Matlab与VC++混合编程的处理效果。

从图4和图5可以看出,Matlab与VC++混合编程处理与基于Matlab的数据处理编程达到了基本相同的效果,同调试信号发生器的记录结果进行对比,可以看出采集系统与数据处理编程的整体效果是不错的,但两幅图中都有毛刺出现,这是因为在出现毛刺的时刻没有改变信号发生器的输出信号,经过仔细分析初步将问题定位于NAND FLASH的布线问题上,严格根据NAND FLASH的布线规范说明重新做了块板子,毛刺出现的概率降低了,基本上满足了客户需求。

4 结 论

本文把嵌入式系统应用于便携式数据采集与处理中,按照新的方案进行了系统软硬件的设计、调试并最终实现。在硬件方面,根据Atmel公司提供的微控制器开发板和客户实际需求参与了硬件电路的设计,实现了5路模拟量输入通道,锂离子电池充电电路,SDRAM,NAND FLASH存储器电路,USB设备接口和DBGU接口电路。系统软件方面,在IAR集成开发环境下,借鉴Atmel公司提供的微控制器软件开发包,参与设计了LCD显示程序,按键设置程序,A/D数据采集程序,数据处理及FFT程序,NAND FLASH的FAT16管理程序和基于NAND FLASH的USB大容量存储设备驱动程序。在对NAND FLASH中存储的数/模转换的数据进行分析、处理的过程中,分别进行了基于Matlab的数据处理编程和Matlab与VC++的混合编程。

参考文献

[1] 朱应飞,罗家融,李实,等.EAST嵌入式数据采集系统设计[J].原子能科学技术,2012,46(7):893⁃896.

[2] 陈曦,蔡姗姗,王清,等.基于ARM9的模块化数据采集系统的研究[J].仪表技术与传感器,2013(12):24⁃26.

[3] 付丽辉,尹文庆.基于嵌入式系统的洪泽湖水产养殖污染环境的远程数据采集与监测[J].安徽农业科学,2012(13):7884⁃7886.

[4] 李涛,陈征,吴立恒,等.一种新型分量式钻孔应变仪数据采集单元的设计及应用[J].震灾防御技术,2014,9(1):142⁃148.

[5] 高飞,叶文华.基于嵌入式系统的OPC数据采集技术的研究与实现[J].中国制造业信息化,2012,41(5):34⁃39.

[6] 张俊涛,刘红科.基于ARM的高速公路动态计重系统的设计[J].计算机测量与控制,2012,20(1):219⁃221.

[7] 刘会令.基于.NET的嵌入式系统OPC客户端开发[D].北京:北京化工大学,2013.