基于ARM数据采集系统的设计
2010-05-03刘锐,王林
刘 锐,王 林
(中国测试技术研究院,四川 成都 610021)
1 引 言
随着数字技术的飞速发展,数字化仪器已经成为观测技术领域的主流仪器,因而数据采集技术也成为观测技术中十分重要的技术环节。数据采集技术主要指从传感器输出的微弱电信号,经信号调理、模数转换到存储、记录这一过程所涉及的技术。随着科学技术的进步,特别是以传感器技术、通信技术和计算机技术为基础的现代信息技术的发展,数据采集技术的发展也是日新月异。该文所设计的系统仅仅将模拟的电压量转换成数字量,不过其应用领域非常广泛。
随着网络与通信技术的飞速发展,嵌入式系统的应用已进入到一个高、低端并行发展的阶段,其标志是近年来32位微控制器的发展。ARM是嵌入式系统应用比较广泛的一种32位微处理器核,具有体积小、功耗低、硬件调试方便等适合现场操作的优点,而且32位机移植操作系统比较方便,有利于系统的后续开发和升级。到目前为止,ARM微处理器及其技术的应用已经深入到国民生产的各个领域。
2 系统硬件设计
2.1 微控制器部分
该系统所选择的ARM微控制器是PHILIPS公司生产的ARM7系列的LPC2138芯片。它包含一个支持仿真的ARM7TDMI-S CPU、与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB、ARM AMBA总线的兼容超集)。
模拟信号从J2处输入,然后通过LPC2138自带的ADC进行模数转换,采集到的数据经过LPC2138处理后通过串行口把数据发送到PC机上。系统参考电压由Vref引脚提供,参考电源由电阻R2和电位器W2分压得到,其电压范围为0~3V,J0为测量点。系统的系统时钟电路使用了外部11.0592MHz晶振。微控制器部分电路如图1所示。
2.1.1 工作原理
A/D转换器的基本时钟由VPB时钟提供。每个转换器包含一个可编程分频器,可将时钟调整至逐步逼近转换所需的4.5MHz(最大)。完全满足精度要求的转换需要11个这样的时钟。
2.1.2 功率控制
LPC2138支持两种节电模式,即空闲模式和掉电模式。在空闲模式下,指令的执行被挂起直到发生复位或中断为止。外设功能在空闲模式下继续保持并可产生中断使处理器恢复运行。空闲模式使处理器、存储器系统和相关控制器以及内部总线不再消耗功率。在掉电模式下,振荡器关闭,这样芯片没有任何内部时钟。
2.1.3 实时时钟
实时时钟(Real Time Clock,RTC)提供一套计数器在系统上电和关闭操作时对时间进行测量,RTC消耗的功率非常低,这使其适合用于电池供电、CPU不连续工作(空闲模式)的系统。在使用内部时钟时,必须外加电源。否则,断电后RTC将会停止工作,开机后需要重新设置时间。
2.2 JTAG接口电路
采用ARM公司提出的标准20脚JTAG仿真调试接口,JTAG连接图如图2所示。在RTCK引脚接一个4.7kΩ的下拉电阻,使系统复位后LPC2138内部JTAG接口使能,这样就可以直接进行JTAG仿真调试了。一般来说,当使用JTAG调试时,P0.14脚必须接上拉电阻(P0.14脚为开漏输出),让其保持高电平状态;而使用ISP下载程序时,则要使P0.14脚保持低电平状态。
2.3 复位电路
LPC2138有两个复位源,即RESET管脚和看门狗复位,如图3所示。外部复位一旦有效,复位状态将一直保持到外部复位撤除,振荡器开始运行为止。当/MR输人信号低至0.6V时触发一个复位脉冲,在/MR端接一个按键,按键另一端接地,则按键按下时,会产生一个低电平脉冲送到复位发生器中,从而产生200ms复位脉冲输出。当VCC低于域值电平或/MR保持为低时,/RESET输出低电平。
2.4 串行接口电路
由于系统是3.3V系统,所以使用了SP3232E进行RS232电平转换,SP3232E是3V工作电源的RS232转换芯,如图4所示。
当要使用ISP功能时,将PC口(如COM1)与开发板的CZ2相连,使用UART0进行通信。同时还要把J1短接,使ISP的硬件条件得到满足。在系统复位时若P0.14口为低电平,则进入ISP状态。
2.5 电源电路
微控制器的内核和I/O口使用同一电源电压,只需单电源3.3V供电。如图5所示,由USB CZ1接口输入5V直流电源,二极管D2用于限制电源的导通方向,经过C1、C9滤波,然后通过SPX1117M-3.3将电源稳压至3.3V。LPC2138具有独立的模拟电源引脚V3A、VSSA,图5中的L1和L2就是用于电源隔离的元件(将数字电源的高频噪声隔离)。
3 系统软件设计
3.1 主函数设计
系统的软件设计采用的是模块化设计方法,主函数包括系统的初始化、A/D转换设置。串口初始化以及数据传输则是通过调用子程序的方式来完成。
主程序代码结构如下:
3.1.1 ADC模块设置
首先将测量通道引脚设置为AIN3功能,然后通过ADCR寄存器设置ADC的工作模式,ADC转换通道,转换时钟(CLKDIV时钟分频值),并启动ADC转换。源程序如下:
3.1.2 向串口发送数据
该模块的作用是使用查询方式向串口发送字节数据,并等待数据发送完毕,其中Data是要发送的数据。工作流程中,首先向UART0发送字节数据,接着向发送寄存器写入数据并判断是否发送完成,若没有发送完成则返回继续发送,直到发送完毕为止,程序流程图如图6所示。
3.1.3 从串口接收字节数据
该模块的作用是使用查询方式,从串口接收字节数据。工作流程中,首先从UART0接收字节数据,判断是否有数据进来。若有新数据则从接收寄存器读取数据,直到接收字节数据完成;若没有新数据,则返回继续判断,程序流程图如图7所示。
3.2 综合程序介绍
首先设置I/O连接到UART0,P0.30连接到AD0.3,然后初始化UART0,即设置数据位、停止位、有无奇偶校验、波特率;接着进行AD转换设置并启动ADC,从AD0.3读取转换结果并把结果转换成电压值发送到UART0,并由PC机显示结果。综合程序流程图如图8所示。
图6 向串口发送字节数据流程图
图7 从串口接收字节数据流程图
图8 综合程序流程图
4 结束语
在设计中,主要是针对ARM数据采集系统进行研究与设计。系统以32位ARM7TDMI-S处理器LPC2138为核心,以其自带的ADC作为模数转换器件,提高了转换效率以及系统的实用性,克服了传统数据采集系统受环境制约的因素,不过在转换精度方面还有待提高。
设计系统相对比较简单,LPC2138的很多功能没有体现出来,在此基础上还可以增加其他的扩展功能。例如,采集数据可以改为多通道循环采集,并且可以外接一个液晶显示屏,这样的话测得的电压值不但能通过PC机显示,而且在液晶屏上也能显示。数据的传输不仅可以依靠串口,而且可以利用USB进行数据的传输。而此次设计的系统仅利用了USB的供电功能,还可以外接CAN控制器,实现CAN的一系列功能。
[1]周立功.深入浅出ARM7-LPC213x/214x(上)[M].广州:广州周立功单片机发展有限公司,2005.
[2]周立功.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005.
[3]刘天时,强新建,王 瑞,等.ARM7嵌入式开发基础实验[M].北京:北京航空航天大学出版社,2007.
[4]付海艳,韩 山,郭 云.ARM微处理器应用开发技术详解与实例分析[M].北京:清华大学出版社,2007.
[5]范圣一.ARM原理与嵌入式系统实战[M].北京:机械工业出版社,2007.
[6]周春来.ARM开发工具ADS原理与应用[M].北京:北京航空航天大学出版社,2006.
[7]丁 峰,鲁 立.ARM系统开发从时间到提高[M].北京:中国电力出版社,2007.
[8]周立功.ARM嵌入式系统软件开发实例(二)[M].北京:北京航空航天大学出版社,2006.
[9]李 佳.ARM系列处理器应用技术完全手册 [M].北京:人民邮电出版社,2006.
[10]三恒星科技.ARM7易学通[M].北京:人民邮电出版社,2006.
[11]马文华.嵌入式系统设计与开发[M].北京:科学出版社,2006.
[12]周立功.ARM嵌入式系统实验教程(三)——扩展实验[M].北京:北京航空航天大学出版社,2005.