第l7卷第2期 鄂州大学学报 2010年3月 Vo1.17 No.2 Journal of Ezhou University Mar.2OlO 基于ARM的嵌入式温度采集系统设计 潘勇刚 (鄂州职业大学电子电气工程系,湖北鄂州436000) 摘要:该文以Phmps公司LPC2210 ARM7微处理器和嵌入式操作系 ̄uC/OS—II为平台,构建了通 过网络实现多路温度数据的以太网远程传输与监控系统。该系统利用数字化温度传感器DS18B20将温度 模拟量转化成数字信号通过“一线总线”方式送A-LPC2210再将处理后的数据通过TCP协议上传到 Interneto 关键词:DS18B20;LPC2210;uC/OS-II;TCP 中图分类号:TP368.1 文献标识码:A 文章编号:1008—9004(2010)02—0017—04 上世纪90年代以来,随着因特网的高速发展, 度要达到l℃,测量温度范围一55℃一125oC。 使得更快捷、更方便、更经济地获取并交流信息成 1温度采集系统的硬件设计 为可能,测控系统也因此而变成这种全球化网络的 1.1总体设计 客户端。基于Internet的远程测控系统具有信息传递 温度采集系统的总体硬件框图如图l所示,除 快捷、交互性强、经济方便等特点,能实现数据共 了以LPC2210为核心的最小系统外.还包括 享。本系统将多个测温点的温度数据每隔1s采集一 DSI8B20应用电路、以太网接口电路。 次,通过公用互联网将数据传输到上位机。温度精 下 P0.14 -LPC2210 t太RT网L8接01口9A电S路FA lDS18B20 DS18B2O MCU 一ITCP }F== 一一n一一一 lI P c机’ Il 图1总体硬件框图 本设计采 ̄Philips公司的LPC2210 ARM7微处 KBSRAM,通过外部存储器接口配置成4组,每组的 理器为核心。被测温度经数字化温度传感器 容量达16 MB。LPC2210采用144脚封装,功耗极低, DS18B20转换成数字信号以“一线总线”送人 具有多个32位定时器、8路l0位ADC、PWM输出,最 LPC2210,经过数据处理后根据TCP协议经Intemet 多可提供76个GPIO以及多达9个外部中断引脚:采 网络送到上位机显示。 用3级流水线技术,极大地提高了指令执行效率,通 ARM核处理器LPC2210基于支持实时仿真和 过可编程的片内锁相 ̄(PLL)z--I实现最大60 MHz的 嵌入跟踪的32/l6位ARM7TDMI—S CPU。片内有16 CPU操作频率。 收稿日期:2009—10—10 作者简介:潘勇刚(1976一),湖北鄂州人,鄂州职业大学电子电气工程系讲师,硕士,研究方向:计算机应用。 18 鄂州大学学报 第17卷 以Philips公司的ARM核处理器LPC2210为核 源供电方式、寄生电源强上拉供电方式及外部电源 供电方式。 心来实现嵌入式Web服务器;网络接口芯片采用 Reahek公司的NE2000兼容芯片RTL8019AS,它内 置了10BASE-T收发器。通过HR901170A器件接入 以太网。[11 1.2 DS18B20应用电路 要想使DS18B20进行精确的温度转换, 线必 须保证在温度转换期间提供足够的能量。由于每个 DS18B20在温度转换期间工作电流达至0lmA。当几 个温度传感器挂在同一根I/O线上进行多点测温 美国Dallas半导体公司的数字化温度传感器 DS18B20是“一线总线”接口的温度传感器.在其内 时,只靠4.7kfl上拉电阻就无法提供足够的能量,会 造成无法转换温度或温度误差极大。外部电源供电 方式是DS18B20最佳的工作方式,工作稳定可靠, 抗干扰能力强,而且电路也比较简单,可以开发出 稳定可靠的多点温度监控系统。因此本系统选用了 部使用了在板(ON—BOARD)专利技术。全部传感元 件及转换电路集成在形如一只三极管的集成电路 内。现在。新一代的DS18B20体积更小、更经济、更 灵活。同时可传送CRC校验码,具有极强的抗干扰 纠错能力。测量范围一10 ̄C-+125。C,精度为 .5。C。 DS18B20可以程序设定9—12位的分辨率,它还支持 多点组网功能,实现组网多点测温。它与微处理器 外部电源供电方式,其典型接法如图2所示。在外部 电源供电方式下,DSl8B20工作电源由VDD引脚接 入,此时I/O线不需要强上拉,也不存在电源电流不 足的问题。可以保证转换精度.同时在总线上理论 连接时仅需要一条口线即可实现微处理器与 DSl8B20的双向通讯。其应用电路有三种:寄生电 VCC 上可以挂接任意多个DS18B20传感器,组成多点测 温系统 DSl8B2O DS18B20 DS18B2O _=三・VCC VCC VCC 图2多路DS18B20的外部电源供电连接方式 1_3以太网接口电路 舢019AS是一种高度集成的全双工即插即 用的以太网控制芯片,它在一块芯片上集成了 RTL8019内核和一个16KB的SDRAM存储器。 能兼容RTL8019控制软件和NE2000 8bit或 这种方式要耗费系统资源。采用哪种方式由 RTL8019AS的65脚0P)决定。本系统采用第一种即 跳线方式,这时JP要接高电平;第三种方式一般用 于PC机中,未用第二种方式又可以省掉一片93C46 芯片,不但简化了硬件电路设计,而且降低了成本。 RTL8019AS芯片内部集成了DMA控制器、 ISA总线控制器和集成16KSRAM、网络PHY收发 器。用户可以通过DMA方式把需要发送的数据写 16bit的传输。支持UTP,AUI,BNC和PNP自动 检测模式.其接口符合Ethernet2和IEEE802.3 (1OBase5,10Base2,10BaseT)标准。 哪019AS支持三种工作方式:第一种为跳 入片内SRAM中,让芯片自动将数据发送出去:而 芯片在接收到数据后,用户也可以通过DMA方式 将其读出。RTL80l9AS与ⅡIC2210一般通过外部总 线方式。网络控制器的I/O地址和中断都由跳线决 定;第二种为免跳线方式,I/O地址和中断由外接 的E2PROM 93C46里的内容所决定:第三种为即插 线进行连接。RTL80l9AS与LPC220o其硬件连接如 图3所示,限于篇幅RTL8019AS有些引脚未画出。 根据地址总线的接线方式nCS3参与片选.则 即用方式(PNP),I/O地址和中断都由软件或操作系 统自动进行管理和配置,用户不必过多干预,当然 第2期 潘勇刚:基于ARM的嵌入式温度采集系统设计 NET_19 可知RTL8019AS使用LPC2200外部存储控制的 Bank3部分,而RTL8019AS的IO地址为0x00300~ 0x0031F,所12RTL8019AS在SA8=I;)SA5=0的时候 RST为LPC2200输出引脚,RTL8019AS中断信 号为中断输入信号,且为外部中断。RTL8019AS的 SD0一SD15串了一个470欧姆电阻连接到LPC2200 选通,其数据地址:0x83400000~0x83400001F。 的DO~D15。 ‘ 图3 RTLS019AS的应用电路 RTL8O19AS通过网络变压器HR9Oll70A和目 2.2 uC/OS—II移植【2】 前市场上广泛使用的RJ45接口接人Intemet,隔离 uC/OS—II是一种免费公开源代码、结构小巧、 网络上的干扰信号,而且价格也很低廉.保证系统 具有可剥夺实时内核的实时操作系统。对uC/OS— 的正常工作,而且降低了成本。 II的移植实际上就是对与处理器有关的代码进行 2温度采集系统的软件设计 重写或修改,移植工作包括以下三部分内容: 2.1系统的初始化 (1)OS_CPU.H文件中,设置1个常量的值,声 为了能够进行系统初始化.采用一个汇编文 明10个数据类型和3个宏。 件做启动代码,用它实现向量表的定义、堆栈初始 (2)OS_CPU—C.C文件中,用C语言编写1O个简 化、系统变量初始化、中断系统初始化、I/O初始化、 单的函数。 外围初始化、地址重映射等操作。系统的初始化流 (3)OS_CPU_A.s(os_CPU_A.ASM)文件中,编 程如图4所示 写4个汇编语言函数。 2.3应用任务的设计 reset 系统的应用任务设计包括DS18B20转换和以 1 r 太网数据传输。在main函数里面建立了一个任务 ● 初始化系统各部分时钟 void TASK—START(void*pdat ̄专门用来建立任务。 设置程度入日指针PC 2.3.1 DS18B20转换任务(DS18B20Task) 1 r ● 根据DS18B20的通讯协议,主机(ARM)控制 设置中断向量表 初始化存储器和加速模块 DSI8B20完成温度转换必须经过三个步骤:每一次 1 r 读写之前都要对DS18B20进行复位操作,复位成功 1r 初始化片内外端口 后发送一条ROM指令,最后发送RAM指令。这样才 初始化cPu堆栈及寄存器 能对DS18B20进行预定的操作。所以首先要完成对 r 1r 初始化应用程序内存空间装 DS18B20初始化、DS18B20写、和DS18B20读的三 初始化存储系统 载空问、数据空间、零初始 个子程序的编写。 I 化空间 完成了以上这三个基本函数编写之后就可以 实现对DSI8B20的操作。完成一个温度的转换与读 图4系统的初始化流程 取需要经过以下流程f图5): 鄂州大学学报 第17卷 下函数: Wr D¥1820(OxS5) (】)SOCKET socket(uintl6 af,uintl6 type, 匹配命令 uintl6 protoco1) 功能描述 创建一个SOCKET 、 (2)int bind(SOCKET S,struct sockaddr h蠢_J'sl∞O‘黼f 他 Wr_DS1820(Oxbe)发送暂 存器命令 ◆ w 矗l船叩 c,t过多 。静●曩赣掰 {Rd._DS18200 ̄t取慨位 name,uint l 6 namelen) ◆ 功能描述 .)Il:mill gd_DSlS200 ̄g取青位 对已创建的SOCKET绑定本地 w£ ¥l l FI●羲囊令 l IP地址和本地端口 (3)int closesocket(SOCKET s) ◆ 晦 sl。2.(期慵亿 { 薮据处理得科十选翻 度 值,保存辫全局变量中 功能描述 backlog) 功能描述端口连接数量 删除已建立的SOCKET ◆ Wr_DS1120(颤静》复囊备 曩黄●in) l(4)int listen(SOCKET s,uint8*buf,uintl6 __一N— 有通道匹配完毕? ◆ &酣 .曩0隧《潦备麝传 ●豢m霸鼍蠢羹存入金 冀变量 Y 用于TCP服务器定义监听SOCKET OSSemPost(SendStr)发送信 号量麓发以太同传 任务 OSTImeDlyHMSM(O,O,I.0) (5)uintl6 send(SOCKET s,uint8书buf, uintl6 len,int flags) 廷时l0 功能描述 图5 DSI8B20温度转换流程 用于TCP连接建立后的数据发 送 2.3.2以太网数据传输任务(TcpTransmitTask) 这部分主要完成的功能有:实现以太网芯片 RTL8019AS的收发数据驱动、在目标系统中运行 (6)uint8 accept(SOCKET S,struct sockaddr addr,int addden) 功能描述 用于TCP服务器确认客户机的主 动连接 3结束语 TCP,IP,从而实现以太网数据的收发功能而使采 集处理完的数据通过Intemet上传到远程PC机。PC 机上显示采用Internet explorer浏览器。全速运行系 统后在地址栏内SH入armJ] ̄务器的IP地址.就可以 远程监控到温度。SOCKET接口函数是TCP/IP的 本文所设计的以太网数据传输系统.很好地 满足了设计的要求,温度采集准确。运行比较稳 定。除用于温度监测外,在系统中的ARM外围可接 API。这部分设计采用ZLG/IP协议栈软件包。ZLG/ IP是广州周立功单片机发展有限公司开发的面向 嵌入式系统开发的TCP/IP协议栈,是zLG系列中 间件的重要成员之一。TCP通信用到的API包括以 人控制电路、其他性能的传感器甚至摄像头等,还 可以实现多种其他特殊需要的远程监测及控制,如 水位监测、视频监控等,具有十分广阔的应用前景。 【参考文献】 【1凋立功.ARM嵌入式系统基础教程【M】.北京:北京航天航空出版社,2007:88. [2]Jean.Labrosse.嵌入式实时操作系统uC/OS—II(第2版)[M】.邵贝贝译. E京:北京航天航空出版社,2006:283.