- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于嵌入式技术的温度测量系统设计
利用MSComm控件实现计算机通信的关键是正确设置MSComm控件的属性和方法。以下是用VB编写的部分设置程序:
Private Sub Form_Load()
Me.Show
MSComm1.CommPort = 1 //选择串口com1
MSComm1.Settings = "9600,n,8,1" //设置MSComm的连接属性
MSComm1.RThreshold = 2 //定义阀值为2
MSComm1.InBufferSize = 2
i = 0
Picture1.Visible = False
On Error Resume Next
End Sub
连接属性"BBBB,P,D,S"中,BBBB 为波特率,P为奇偶校验,D为数据位数,S为停止位数。阀值定为2,则在接收缓冲区中的字节数超过"2"时,就转入OnComm()事件处理程序执行。
3. 嵌入式系统软件
采用了嵌入式操作系统uC/OS-II,它是专门为计算机的嵌入式应用而设计的。 uC/OS-II是基于优先级的占先式多任务实时内核。由于在多任务实时操作系统中,应用程序是以任务形式运行的,操作系统的一个重要的作用就是任务的调度,所以要在操作系统下实现应用程序的执行,就必须建立任务,在任务中实现测温和串行通信等操作。建立任务如下:
#include "config.h"
#define TASK_STK_SIZE 64 //定义任务栈的大小为64字节
OS_STK TaskStartStk[TASK_STK_SIZE]; //定义任务栈
void TaskStart(void *data); //声明任务
int main (void)
{
OSInit(); //操作系统初始化
OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0); // 建任务
OSStart(); //启动操作系统
return 0;
}
在TaskStart任务循环开始前,先进行初始化工作,如调用中间件函数URAT0Init(9600)初始化串口、设置P0.8为GPIO等。然后,在任务循环中调用温度测量函数Measure_Temperature()和串口发送函数URAT0Putch(uint16 data),实现温度的测量并将温度值传送到上位机。嵌入式系统程序总流程见图4。
基于嵌入式操作系统的应用中,还有一项重要的工作就是操作系统的移植和裁剪。
所谓移植,就是使一个实时内核能在某个微处理器或微控制器上运行。 uC/OS-II的移植工作主要包括:OS_CPU.H 文件中与微处理器类型及相应硬件有关的常数定义、宏定义和类型定义;分别用汇编语言和C语言编写相关函数,特别是OSTaskStkInit(),在任务创建初期,将由其初始化任务堆栈。
实时嵌入式操作系统的裁剪,就是只嵌入用户程序需要的函数,这样可以减少软件所需的存储器空间。由于uC/OS-II采用的是条件编译。即当条件满足时编译相应的代码,否则不编译,故只要对编译条件进行控制就可以控制编译后文件的大小,从而实现对操作系统的裁剪。
4. 系统调试及结果
JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。目前,大多数比较复杂的器件都支持JTAG协议。作为ARM的典型调试手段,JTAG除了可以设置ARM的断点以外,还可以对ARM的内核进行控制,从而实现对外围设备的读写(比如:下载程序到RAM或者FLASH空间)。
ADS是ARM公司为方便用户在ARM芯片上进行应用开发而推出的一整套集成开发工具。
在保证电源电路、晶振电路和复位电路正常工作的前提下,可通过JTAG接口来调试以LPC2104为核心的目标板。在系统上电前,首先应检测JTAG接口的TMS、TCK、TDI、TDO信号是否已与LPC2104的对应引脚相连。在保证LPC2104已正常工作的情况下,可用ADS通过JTAG接口对片内的部件进行访问和控制。图5为调试系统的硬件连接。
采用 ADS 下的工具集来进行系统调试:首先建立工程,即将用户文件、操作系统文件、中间件以及目标板的启动代码依次加入到工程中;然后编译程序和链接目标代码;再下载并调试程序。
经调试,当用手握住DS18B20对其加温时,由上位机显示的温度变化曲线如图6所示。
5. 结语
本文构造了一个温度测量系统。该系统用可编程数字式温度传感器DS18B20作为检测元件,以嵌入式芯片LPC2104为核心,除了实现温度测量及相关的数据处理外,还能与上位机通信。实验结果表明,测量精度和速度都符合要求。下一步的工作是,增加温度控制功能并扩充测控点数,构造一个集中监控的分布式温度测控系统。
来源:维库开发网