基于IEEE802.11b的EPA温度变送器设计

发布者:DataExplorer最新更新时间:2006-07-11 来源: 单片机及嵌入式系统应用关键字:函数  温度  校验  内核 手机看文章 扫描二维码
随时随地手机看文章

引言
  
IEEE802.11是IEEE无线局域网标准,主要用于用户终端的无线接入。IEEE802.11只规定了开放式系统互联参考模型的物理层和介质访问子层,其MAC层利用载波监听多路访问/冲突避免(CSMA/CA)协议;定义了单一的MAC层和多样的物理层,其物理层标准主要有IEEE802.11b、IEEE80211a和IEEE80211g。IEEE802.11b标准是IEEE802.11协议标准的扩展,最高可以支持11 Mbps的数据速率,运行在2.4 GHz的ISM频段上,采用的调制技术是CCK,支持数据业务。

  本文详细分析了采用S3C2410处理器平台具体实现运用于EPA网络的IEEE802.11b无线实时温度采集器的开发流程,并对串口通信的调试手段及常见问题进行了探讨。

1 温度变送器的硬件设计

  温度变送器系统平台硬件系统功能如图1所示。该平台的核心器件是Samsung公司的处理器S3C2410,外部扩展了16 MB、16位的Flash内存和64 MB、32位的SDRAM。处理器S3C2410通过UART接口和温度变送器相连,通过USB接口和一个IEEE802.11b网络接口卡相连,通过RS232串口和外部PC相连。温度变送器采集到的温度数据输入系统缓冲区中,处理器S3C2410可对缓冲数据直接进行相关处理;处理后的数据可以通过RS232串口传送给外部宿主机PC,也可通过IEEE802.11b网络接口卡发送到无线局域网上。

  S3C2410处理器功能十分强大,资源丰富。它内部集成了ARM公司的32位微处理器ARM920T,主频最高可达203 MHz,具有独立的16 KB指令Cache和16 KB数据Cache,还有LCD控制器、RAM控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的Timer、并行I/O口、8路10位ADC、触摸屏接口、2个USB接口控制器和2路SPI。

  从外部温度传感器采集到的数据经S3C2410 CPU数据处理模块传回到IEEE802.11b USB接口卡;IEEE802.11b的无线通信模块经IEEE802.11b的接入点传到外部以太网络中。


图1硬件系统功能

2 温度变送器的软件系统设计

  温度变送器软件系统设计流程如图2所示。系统分3步实现:① 为温度变送器编写内核驱动程序;② 编写温度数据采集应用程序,通过串口获取温度数据并进行相应的EPA报文打包处理;③ 利用无线网络将处理数据发送给上位机。前面提到系统平台上运行的是ARM Linux。在启动后启用了MMU,系统进入保护模式,所以应用程序不能直接读/写外设的I/O区域(包括I/O端口和I/O内存)。这时一般要借助于该外设的驱动来进入内核态完成这项工作。


图2软件系统设计流程

2.1 串口的驱动实现

  在Linux下,设备驱动程序可以看成Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用和操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读/写以及I/O控制操作; 而驱动程序的主要任务也就是要实现这些系统调用函数。本系统平台使用的嵌入式ARM Linux系统在内核主要功能上与Linux操作系统没有本质区别,所以驱动程序要完成的任务也一样;只是编译时使用的编译器、部分头文件和库文件等要涉及具体处理器体系结构, 这些都可在Makefile文件中具体指定。当应用程序对设备文件进行诸如open、close、read、write等系统调用操作时,Linux内核将通过file_operations结构访问驱动程序提供的函数。例如,当应用程序对设备文件执行读操作时, 内核将调用file_operations结构中的read函数。在系统平台上对串口数码摄像头驱动,首先把串口驱动模块静态编译进内核,使平台支持串口;再在须使用温度采集时,使用insmode动态加载其驱动模块。这样温度传感器就可正常工作了,接着进行下一步——对温度的采集编程。

2.2 温度数据采集模块

  在温度变送器串口被驱动后,需要再编写一个采集温度的应用程序。根据嵌入式系统开发特征,先在宿主机上流程编写应用程序;再使用交叉编译器进行编译、链接,生成目标平台的可执行文件。宿主机与目标板通信采用打印终端的方式进行交叉调试, 成功后移植到目标平台。编写采集程序是在安装Linux操作系统的宿主PC机上进行的,其程序流程如图3所示。


图3温度数据采集程序

  程序运行流程如下:

  ① 初始化设备功能,发送03H给温度变送器。如果初始化失败,则重复发送初始化功能码2次,若都失败则返回;若成功则进入下一步。
  ② 进行数据查询,查询消息中的功能代码告之被选中的从设备要实现何种功能。数据段包含了从设备要实现功能的任何附加信息,即读取或修改的起始地址以及数据数量。CRC校验为从设备提供了一种验证消息内容是否正确的方法。
  ③ 如果从设备产生一个正常的响应,则响应消息中的功能代码是查询消息中的功能代码的回应。数据段包括了从设备收集的数据。如果有错误发生,则从设备将修改功能代码以表明此回应是一个异常的回应;同时数据段中包含相应的错误代码,CRC校验用于主设备判断响应帧内容的正确性。
  ④ 将从设备得到的数据运用EPA协议栈进行数据的封装,然后通过IEEE802.11b无线网卡发送到数据分析设备。
  ⑤ 根据对数据的处理,将得到返回的数据,程序再将返回数据写入从设备。如果写入失败,则连续写两次,若仍失败则跳出。

  系统采用主从通信技术, S3C2410处理器模块作为主设备,温度传感器作为从设备。主设备可以对温度传感器进行初始化,并发出查询指令;温度传感器根据主设备查询指令实现相应的功能。S3C2410处理器模块查询的格式包括功能代码、所有要发送的数据和CRC校验域;从设备回应消息也包括相应的功能代码、任何要返回的数据和CRC校验域。如果在消息接收过程中发生错误,从设备将构造一错误帧并将其作为应答回应。程序中构造的帧格式如下:

  主设备查询帧


  从设备响应帧

  当主设备查询从设备时,它希望得到从设备的正常响应,但可能有3种处理情形:

  ① 从设备收到了主设备的查询,且全部校验正确,从设备就产生正确的响应。
  ② 从设备由于通信错误等没有收到主设备的查询,因此也就无法产生响应。这时主设备将通过超时判断查询的错误。
  ③ 从设备收到了主设备的查询,但检测出通信帧内容出错(如CRC校验出错或非法的起始地址等),这时从设备将产生异常响应通知主设备相关的错误信息。

  最后将采集数据用EPA协议栈打包,并利用无线网络进行传输。

2.3 无线网络模块

  无线温度变换器的实时数据无线网络模块是将无线网卡注入内核,“插槽”驱动层通过API为PC卡服务层提供服务,编写“插槽”层驱动就是实现这些API函数。PC卡服务层维护着一张函数表,记录已登记的“插槽”驱动层的API函数,相应地提供了两个接口函数用来登记和取消登记一个“插槽”驱动层的API函数。定义如下:

  int register_ss_entry(int nsock, ss_entry_t ss_entry);
  int unregister_ss_entry(int nsock, ss_entry_t ss_entry);
  typedef int (*ss_entry_t)(u_int sock, u_int cmd, void *arg);

  ◆ 函数register_ss_entry: 用来登记一个“插槽”驱动层服务函数。
  ◆ 函数unregister_ss_entry: 用来取消指定函数的登记,表明“插槽”层不再提供该服务。
  ◆ 具体服务函数ss_sentry: 该函数的编写是核心。它包括3个参数: 第1个参数sock是插槽编号;第2个参数cmd是命令,即服务函数的编码;第3个参数是一个void类型的指针,用来传递任意的参数。

  PCMCIA“卡和插槽服务”(Card and Socket Services)软件规范要求插槽层提供的服务共有12项,Linux操作系统定义在includepcmciass.h文件里。

  enum ss_service {
    SS_RegisterCallback, SS_InquireSocket,
    SS_GetStatus, SS_GetSocket, SS_SetSocket,
    SS_GetIOMap, SS_SetIOMap, SS_GetMemMap, SS_SetMemMap,
    SS_GetBridge, SS_SetBridge, SS_ProcSetup
  };

3 测试

  首先在宿主机PC上使用交叉编译器编译、链接温度数据采集程序,使之生成可执行代码,然后移植到目标平台上。为了进一步观察采集的温度数据效果,可在目标平台带网络支持的基础上编写一个网络通信程序,把采集到并处理成浮点型的温度数据通过网络传输到PC机上进行显示。搭建无线温度变送器的测试系统如图4所示。


图4IEEE802.11b

  无线温度变送器的测试系统无线监控系统采集的基于S3C2410的IEEE802.11b无线温度变送器的实时数据如图5所示。


图5IEEE802.11b

4 结论

  实际的温度测量数据表明,基于IEEE802.11b的EPA温度数据采集器可以很好地完成温度数据的采集处理,并通过无线接入点与相关设备进行通信。另外,在基于EPA标准的无线局域网系统应用中,验证了此设计的可行性。

参考文献
[1] Tanenbaum Andrew S. Modern Operating System. 北京:机械工业出版社,2002.
[2] 邹思轶. 嵌入式Linux设计与应用. 北京:清华大学出版社,2002.
[3] Karim Yagbmour. 构建嵌入式Linux系统. 北京:中国电力出版社, 2004.
[4] Sloss Anddrew N. Dominic Symes. ARM嵌入式系统开发——软件设计与优化. 北京:北京航空航天大学出版社,2005.
[5] 毛德操,胡希明. Linux内核源代码情景分析. 杭州:浙江大学出版社,2001.
[6] Mark Ciampa. 无线局域网设计与实现. 北京:科学出版社,2003.
[7] 国家质量技术监督局. 中华人民共和国国家标准“用于工业测量与控制系统的EPA系统结构与通信规范”(报批稿). 2005.

关键字:函数  温度  校验  内核 引用地址:基于IEEE802.11b的EPA温度变送器设计

上一篇:ARM7系统中实现CF卡存储的文件系统设计
下一篇:基于事件一目标驱动的人机界面设计

推荐阅读最新更新时间:2024-05-02 20:25

利用温度调节实现热管理的LED驱动器
不可否认,如果将 led 技术与节能灯或荧光灯相比的话,节省的能量成本并不显著。但换个角度看,如果考虑到维护成本,例如更换仓库高高的天花板、繁忙的工厂大厅、购物中心或者难以接近的信号系统等所使用的照明灯所产生的人工成本,很明显要大大高于能量成本。如果确保正常冷却或者结温的温度控制在80°C以下, LED灯 的寿命可以轻松达到100,000小时。这相当于连续工作12年以上,即使是在容易接近的地方进行更换,节省下来的维护成本也是一个占优势的因素。   AC/DC LED驱动 器的寿命主要取决于所用的元器件数。采用较少的电容很快会导致 驱动 器出现薄弱环节,从而使得实现LED长寿命的目标落空。作为一家采用ATE和HALT(高加速寿
[电源管理]
利用<font color='red'>温度</font>调节实现热管理的LED驱动器
STM32内部温度传感器的使用与计算
Temperature (in ℃) = {(V - V) / Avg_Slope} + 25 公式中的V就是在ADC_IN16读到的数值。Avg_Slope就是温度与ADC数值转换的斜率。 设想一个XY坐标,X轴为ADC的电压读数,Y轴为温度,两轴之间有一条直线代表了温度与转换电压的关系;在这条直线上如果X轴电压为V时,Y轴即为25℃;当读出的电压是其它数值时,即读出的电压是V时,使用这个公式就可以得到温度的数值。 在STM32F103xx的数据手册中分别给出了V和Avg_Slope的值: V 最小=1.34V 典型=1.43V 最大=1.52V Avg_Slope 最小=4.0 典型=4.3 最大
[单片机]
无线式温度在线监测预警系统在电力系统中的应用
1 概况     据有关资料统计,全国电力系统因高压带电设备关键部位(如断路器、隔离刀闸触头处及出线  座等)过热而引发的事故时有发生。此类事故的危害性极大,轻则造成设备损坏,影响用户用电,重则造成开关柜内三相弧光短路,形成很大的短路电流,烧毁主变压器。因此,对高压带电设备各种连接点温度的在线监测是保证电网安全运行的重要内容。此外,高压带电设备的各种连接点的温度在线监测和记录,也是这些设备状态检修的重要依据。     电力系统为解决此类难题,采取了很多办法。其中《国家电网公司十八项电网重大反事故措施》(摘录11.7.2)中强调,需定期用红外线测温设备检查开关设备的接头处、隔离开关的采电部分(重点部位:触头、出线座等),特别是在
[电源管理]
无线式<font color='red'>温度</font>在线监测预警系统在电力系统中的应用
基于ARM Cortex-M0内核的捆扎机控制板卡设计
0 引言 自动捆扎机/捆钞机是专门设计用来捆扎精细物品的机器,印刷、装订、制造业、市场、邮政、药业、政府、保险公司、超市等相关包装范围都有很大的需求。本文设计的这款捆扎机所用打包带的标准尺寸为40mm、20mm、30mm租50mm,用在例如包装领域及货币的捆扎。捆扎机是用PE膜的纸带或聚丙烯塑料带热熔粘结,来达到捆扎物体的效果。在针对钞票和其他很多种较敏感的产品的高品质设计发展区域中,一个最佳的方案已经被探索和寻找到。针对于这款产品的需求,本控制板卡采用ARM Correx-M0处理器。这款处理器特点鲜明,性价比高。ARM Cortex-M0处理器是现有的最小、能耗最低和能效最高的ARM处理器。该处理器硅面积极小、能耗极低并且所
[单片机]
基于ARM Cortex-M0<font color='red'>内核</font>的捆扎机控制板卡设计
用单片机实现温度远程显示
    摘要: 介绍用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS485总线相互通信实现热水温度远程显示的一种低成本解决方案。内容涉及RS485总线通信、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。     关键词: 单片机 RS485总线 数码管显示 数据转换 键盘处理 引 言   目前检测温度一般采用热电偶或热敏电阻作为传感器。这种传感器至仪表之间一般都要用专用的温度补偿导线;而温度补偿导线价格很贵,并且线路太长也会影响测量精度。在实际应用中往往需要对较远处(1 km左右)的温度信号进行监视。现有的解决方案有很多,例如:① 在现场用
[工业控制]
stm32寄存器版矩阵键盘库函数(附详细注释)
在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。本文为大家介绍stm32寄存器版矩阵键盘库函数。 stm32寄存器版矩阵键盘库函数 ////////////////////.h文件 #ifnd
[单片机]
stm32寄存器版矩阵键盘库<font color='red'>函数</font>(附详细注释)
Multisim函数发生器设置问题
最近在使用multisim进行仿真,需要用到函数发生器产生信号,但是用示波器观察发现最终显示的信号和预期不符,这是因为对函数发生器的使用不了解。本文对multisim的函数发生器和示波器的使用进行说明,并以产生1khz,峰峰值为5V的方波来说明函数发生器的使用。 几点说明: 1.示波器通道选择 示波器通道选择交流则一直为正负电平,为直流则根据函数发生器的偏移设置改变。需要MCU电平则应该选择直流模式。 2.函数发生器的三个接线,+/-/com A. com 接地端,为信号中值0V B. +/-信号线输出信号峰峰值是设置值的2倍 C. 振幅设置的是正负信号相对于com端的值,即最终信号的峰峰值Vpp=设置值的2倍。 D. 偏
[测试测量]
Multisim<font color='red'>函数</font>发生器设置问题
基于51单片机的函数发生器设计
一.硬件方案 此函数信号发生器是基于单片机AT89C51设计而成的,能够产生频率范围在0Hz—535Hz的锯齿波、正弦波、三角波、矩形波四种波形,并且能够通过液晶屏1602显示各自的波形类型以及频率数值。 主要由51单片机+最小系统+DA0832模数转换模块+运放模块+LED指示灯+按键模块;如图: 二.设计功能 (1)LCD1602液晶显示波形种类和频率值(10-100HZ)。可产生正弦波、锯齿波、三角波、矩形波。 (2)按键设置波形种类和设定频率步进值。 (3)通过电位器器改变振幅(0V-3.5V稳定)。 (4)有四个指示灯分别指示发出的是哪种波形,方便明了。 三.设计原理图 (1)原理图主要采用AD软件进行设计,
[单片机]
基于51单片机的<font color='red'>函数</font>发生器设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved