新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM的嵌入式多路信号数据采集系统

基于ARM的嵌入式多路信号数据采集系统

作者:时间:2012-09-10来源:网络收藏

GPRS无线终端嵌入了TCP/IP协议和UDP协议(用户可选),本采用TCP/IP协议,实际上GPRSDTU上实现的协议栈是TCP/IPOverPPP。

GRPS无线数据采集终端

图1 GRPS无线终端

2 硬件组成

2.1 传感器及放大器

理论上,该可以同时进行16路数据的采集,但在实际的调试中,只选用了2路来做模拟。

一路选用温度传感器,表面/液体热电偶NR281530,获取实时现场的温度,另一路采用压力传感器,PPM241BY油井专用型压力传感器,此在油田油井中具有较好应用。

在前端处理单元,由于各种传感器的输出参数不同,输出不仅电平低、内阻高,而且有共模电压以及现场恶劣环境的影响,因此,在选用放大芯片时要综合考虑以上因素。选取常用的MCP6S2X可编程增益放大器对原始进行放大,OP07CP做后续滤波芯片。

2.2 微处理器

微处理器是系统工作的核心,其性能的好坏直接决定了系统性能的优劣。本采集系统对数据实时性和精度的要求,以及易操作性方面的考虑,选择32位的7系列处理器,它具有以下特点:

·体积小、低功耗、低成本、高性能;

·支持Thumb(16位)/(32位)双指令,能很好兼容8位/16位器件;

·大量使用寄存器,指令执行速度快;

·指令长度固定;

·寻址方式灵活简单,执行效率高

本系统采用PHILIPS公司的单片32位微控制器LPC2134,它是一个支持实时仿真和跟踪的16/32位7TDMI2STMCPU,含有128KB的FLASH,该存储器用作代码和数据的存储。

LPC2134拥有两个异步串行口UART0和UART1,本系统中将UART0与GPRS终端相连,实现数据传输。它采用16字节收发FIFO,内置波特率发生器,包含使能实现软件控制的机制。

硬件SPI接口是一个同步、全双工串行接口,最大数据位速率为时钟速率的1/8,可配置为主机或从机。本系统中SPI接口作为主机,根据不同的中断,控制多个从机,包括可编程增益放大器MCP6S2X,使用SPI总线访问SD卡,以及控制开发板上的数码管显示。

A/D转换器是2个8路10位逼近式模/数转换器,测量范围是0~313V,10位转换时间大于或等于2144μS,一个或多个Burst转换模式。

2.3 GPRS终端

GPRS终端选用的是南京傲屹电子有限公司的AYG285C,它是采用GPRS模块专为工业集成设计的,在温度范围、震动、电磁兼容性和接口多样性等方面均采用特殊设计,保证了恶劣环境下的工作稳定性,GPRS公网的数据传输具有通信范围广,传输稳定可靠等特点。通过按键可以进行模块参数设置或者进行网络数据通信,串口波特率在300~115200bps可调,校验位可选:无校验,奇校验,偶校验。支持协议PPP、IP、TCP、UDP、DNS、PING的客户端功能。另外,电源、工作状态有LED指示,方便现场查看MODEM运行情况。

3 系统软件实现

3.1 μC/OS2Ⅱ操作系统

当需要进行多任务处理和调度时,一个实时操作系统就必不可少。为此系统中采用源码公开的μC/OS2Ⅱ操作系统,它具有执行效率高、占用空间小、实时性能优良以及可扩展性强等特点,最小内核可编译至2K字节。

μC/OS2Ⅱ的移植需要满足以下要求:

·处理器的C编译器可以产生可重入代码;

·可以使用C调用进入和退出临界区代码;

·处理器必须支持硬件中断,并且需要一个定时中断源;

·处理器需要能够容纳一定数据的硬件堆栈;

·处理器需要有能够在CPU寄存器与内核和堆栈交换数据的指令。

本系统使用的LPC2134ARM7处理器满足以上所有条件,因此可以对其进行移植。根据μC/OS2Ⅱ的要求,移植μC/OS2Ⅱ到一个LPC2134ARM7体系结构上需要提供2个或3个文件:OSCPU.

H(C语言头文件)、OS-CPU-C.C(C程序源文件)及OS-CPU-A.ASM(汇编程序源文件)。

任务中,采用C语言进行编程,但对于系统的初始化,仍然采用汇编来制作启动代码,它可以实现向量表定义、堆栈初始化、系统变量的初始化、中断系统初始化、I/O初始化、外围初始化、地址映射等操作。

芯片复位后,系统初始化流程如图2所示。

系统初始化流程图

图2 系统初始化流程图

3.2 接口程序及SD卡驱动的实现

在实时内核下,接口程序读取A/D采样数据的方法通常有三种:程序延时法、ADC转换完毕时产生中断法和程序循环等待的方法。其中循环等待的方法CPU开销小,不需要中断服务,比较适合系统中采用。

循环等待A/D读取数据的伪代码如下:

之间通过串口相连,采集数据先通过开发板串口UART0发送到无线数据终端AYG285C的缓冲区,然后缓冲区将数据打成一个个数据包,通过GPRS网络发送到远程数据处理中心。因此,在μC/OS2Ⅱ下LPC2134的UART底层接口驱动显得尤为重要。

UART0初始化函数片断如下:

在本系统中,串口通信采用8位数据位,1位停止位,奇校验,无流控制。在实际使用中为接收数据稳定波特率设置为9600bps效果较好。在测试系统中,测量到的数据范围为10-6~101,有效数字为4位,所以在发送数据时采用每帧数据由3个字节组成,第1个字节为数据指数部分,高四位为0,低四位中的第四位表示指数符号,0表示正数,1表示负数;其余三位表示指数的数值部分。

后续两个字节为数据底数部分,采用压缩的BCD码编码方式,高位在前,低位在后,即一个字节表示两位十进制数,则两个字节表示四位十进制数。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭