0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

电子设计 来源:网络整理 作者:佚名 2019-11-04 07:47 次阅读

IEEE802.11是IEEE无线局域网标准,主要用于用户终端的无线接入。IEEE802.11只规定了开放式系统互联参考模型的物理层和介质访问子层,其MAC层利用载波监听多路访问/冲突避免(CSMA/CA)协议;定义了单一的MAC层和多样的物理层,其物理层标准主要有IEEE802.11b、IEEE80211a和IEEE80211g。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的接入点传到外部以太网络中。

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

图1硬件系统功能

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

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

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

图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所示。

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

图3温度数据采集程序

程序运行流程如下:

① 初始化设备功能,发送03H给温度变送器。如果初始化失败,则重复发送初始化功能码2次,若都失败则返回;若成功则进入下一步。

② 进行数据查询,查询消息中的功能代码告之被选中的从设备要实现何种功能。数据段包含了从设备要实现功能的任何附加信息,即读取或修改的起始地址以及数据数量。CRC校验为从设备提供了一种验证消息内容是否正确的方法。

③ 如果从设备产生一个正常的响应,则响应消息中的功能代码是查询消息中的功能代码的回应。数据段包括了从设备收集的数据。如果有错误发生,则从设备将修改功能代码以表明此回应是一个异常的回应;同时数据段中包含相应的错误代码,CRC校验用于主设备判断响应帧内容的正确性。

④ 将从设备得到的数据运用EPA协议栈进行数据的封装,然后通过IEEE802.11b无线网卡发送到数据分析设备。

⑤ 根据对数据的处理,将得到返回的数据,程序再将返回数据写入从设备。如果写入失败,则连续写两次,若仍失败则跳出。

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

主设备查询帧

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

从设备响应帧

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

当主设备查询从设备时,它希望得到从设备的正常响应,但可能有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操作系统定义在include\\pcmcia\\ss.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所示。

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

图4IEEE802.11b

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

基于S3C2410处理器和IEEE802.11b实现无线温度变送器的设计

图5IEEE802.11b

4 结论

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


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18948

    浏览量

    227426
  • 变送器
    +关注

    关注

    13

    文章

    1363

    浏览量

    90818
  • 无线
    +关注

    关注

    31

    文章

    5387

    浏览量

    172507
收藏 人收藏

    评论

    相关推荐

    S3C2410处理器与Nand flash 的问题

    一个64M Nand flash存储S3C2410处理器的Nand flash相应接口连接,请问这个64M存储空间是否属于8个bank中的一个bank?因为有些书上说bank 0到bank 7
    发表于 11-20 21:41

    S3C2410处理器

    S3C2410处理器通过GPD端口连接LED1-4四个灯,试着画出其电路连接图,并变成实现其逐一点亮功能。
    发表于 11-23 21:50

    基于ARM S3C2410处理器的PDA人机接口电路设计

    结束语   本文结合实际消费电子PDA的研究与开发要求,参照目前国内外PDA的各种功能和结合实际需要,选用三星公司的S3C2410处理器,结合PDA通用功能的需要,并考虑硬件扩展的方便性,设计了PDA
    发表于 06-19 05:00

    EPA协议在IEEE802.11b无线现场设备中怎么实现

    本文主要讨论了EPA协议在IEEE802.11b无线现场设备中的实现和测控。
    发表于 05-27 06:30

    基于S3C2410嵌入式无线监控系统的设计

    为了对无人职守的监控现场进行有效监控,我们设计实现了基于三星的S3C2410 嵌入式处理器的监控系统, 同时利用GPRS/CDMA 无线技术,通过Internet 互联网
    发表于 09-09 16:25 31次下载

    S3C2410处理器 Bootloader(Vivi)源代码

    S3C2410处理器 Bootloader(Vivi)源代码分析 这边的2410开发板提供的光盘上已附交叉编译工具:arm-linux-gcc-2.95.3(源码为cross-2.
    发表于 02-09 15:39 22次下载

    基于S3C2410的RTC模块应用设计

    基于S3C2410的RTC模块应用设计 摘 要:本文简要介绍了S3C2410嵌入式微处理器,分析了RTC(Real-time clock)硬件构架及其工作
    发表于 04-08 23:13 1569次阅读
    基于<b class='flag-5'>S3C2410</b>的RTC模块应用设计

    IEEE802.11b协议标准

    IEEE802.11b协议标准   IEEE802.11b是美国电机电子工程师协会(IEEE)为了改进其最初推出的无线标准IEEE802
    发表于 01-06 11:05 1845次阅读

    Windows CE.NET在S3C2410处理器上的移植

      本文分析了嵌入式操作系统Windows CE。NET的特点,并利用工具Platform Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。   1 Windows CE系统和Platform Builder 4.2
    发表于 08-27 14:41 593次阅读
    Windows CE.NET在<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>上的移植

    S3C2410处理器特性

    S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制
    发表于 10-10 11:52 5412次阅读

    基于S3C2410处理器对Windows CE 5.0操作系统实现BSP移植

    ,是一种硬实时嵌入式操作系统,它可以在多种处理器架构(如x86、MIPS、ARM和 SH4)上运行,Windows CE支持ARM体系结构,这是基于S3C2410 处理器进行BSP移植的前提条件
    发表于 03-06 10:10 991次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>对Windows CE 5.0操作系统<b class='flag-5'>实现</b>BSP移植

    基于在S3C2410处理器平台上实现Windows CE.NET的应用设计

    本文分析了嵌入式操作系统Windows CE.NET的特点,并利用工具Platform Builder 4。2完成了其在以ARM920T为核心的S3C2410处理器上的定制。
    的头像 发表于 09-24 10:03 2467次阅读
    基于在<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b>平台上<b class='flag-5'>实现</b>Windows CE.NET的应用设计

    基于S3C2410处理器实现USB网卡无线网络功能的实现

    目前,嵌入式技术已广泛应用于工业控制、消费类电子产品、通信系统等各类市场产品。并且随着互联网的日益发达,具有无线接入功能的嵌入式系统更加具有发展前景。本文将介绍支持IEEE 802.11g协议的54M USB
    的头像 发表于 05-05 17:04 1883次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b><b class='flag-5'>实现</b>USB网卡<b class='flag-5'>无线</b>网络功能的<b class='flag-5'>实现</b>

    基于S3C2410处理器和Linux实现嵌入式网关的设计

    介绍了一种基于ARM9的嵌入式以太网的设计方案。基于ARM内核微处理器S3C2410的功能特点及其外扩组成部分,分析了以太网控制芯片RTL8019AS的性能以及与S3C2410的接口
    的头像 发表于 06-22 14:28 2511次阅读
    基于<b class='flag-5'>S3C2410</b>微<b class='flag-5'>处理器</b>和Linux<b class='flag-5'>实现</b>嵌入式网关的设计

    基于S3C2410处理器实现3G无线网卡接入无线网络功能的设计

    本研究的目的是实现一个具有3G无线网络接入功能的嵌入式系统。系统的硬件平台是基于ARM系列的S3C2410处理器。文章简要介绍了该系统的体
    的头像 发表于 06-24 16:48 2465次阅读
    基于<b class='flag-5'>S3C2410</b><b class='flag-5'>处理器</b><b class='flag-5'>实现</b><b class='flag-5'>3</b>G<b class='flag-5'>无线</b>网卡接入<b class='flag-5'>无线</b>网络功能的设计