无线通信在嵌入式系统中的应用
扫描二维码
随时随地手机看文章
微计算机信息 摘 要:本文介绍了无线数传模块在嵌入式系统中的应用,嵌入式处理器与无线模块的硬件接口设计,无线模块的驱动程序的编写,预约式点对多点无线通信的传输协议的制定以及实现。为无线通信在嵌入式系统中的应用提供了有效的方案。
关键词:无线通信;嵌入式系统;协议1 引言
在传统的远程监测系统中大多采用pc机作为上位机,通过rs485串行通信作为传输手段,因此系统有诸如工作不够稳定、连线繁多、扩展性差等缺点。
本项目当中采用32位嵌入式芯片组成的系统作为上位机,其体积小、功耗小而且工作稳定;上位机与下位机之间的传输采用无线传输方式,且上位机对下位机可配置,从而使得系统具有很强的扩展性。这套系统具有更优的性能,可以作为现有系统的升级产品。2 硬件结构
上位机嵌入式系统采用在工控领域有传统优势的摩托罗拉芯片(coldfire5249)为核心,配备4mbyte闪存和16mbyte内存的系统,此系统外扩有网络接口可通过局域网为客户机提供数据服务。通过无线模块与下位机进行数据交换,获取远程数据,下达客户机对远程对象的控制命令。 下位机采用基于8051的单片机系统,他的主要功能是采集现场的数据以备上位机查询,执行上位机转发来的用户指令。其中温度传感器采用ds18b20。
无线通信模块采用ptr2000,ptr2000是收发一体的工作在国际通用数传频段433mhz的无线通信模块。他最高传输速率可以达到20kbit/s,功耗低,待机状态下仅为8ua,可以直接与cpu的串口连接使用。ptr2000的引脚定义如表1。 ptr2000的硬件连接非常简单,由3个通用i/o口分别控制txe,pwr,cs。di, do与cpu的串口连接。txe为1时,为发送状态,txe为0时,为接收状态。状态转换需要5毫秒。pwr为0时,为节电待机状态,此时模块无法进行接收或者发送。3 线通信协议及其软件结构
3.1 通信协议研究
在本系统中,网关(嵌入式系统)与下位机(单片机系统)之间采用无线通信方式。无线通信由于其无需布线、便于安装、检修升级容易、管理简单、灵活性强等诸多优点已经得到广泛应用,但是无线传输在传输过程中难以避免的会产生误码,而且产生误码的几率要远远大于有线网络,并且误码的产生与多方面的因素有关,因此有很大的不确定性。所以我们必须采用一种差错控制机制,但是我们不需要也很难实现太过于复杂的方法,我们可以采用停止等待协议来实现差错控制。此外,我们必须采用校验机制以确定何时需要重传,crc校验码的检错能力很强,它除了能检查出离散错外,还能检查出突发错。考虑到硬件和传输的开销问题,使用crc16校验码。
本系统当中我们所采用的无线数传模块是ptr2000,ptr2000灵敏性很高,因此在无载波的情况下在接收端会产生随机的数据,在通信协议中必须在有效数据前加上两个或多个固定的前导字符作为同步信号,使得接收端能够辨别出有效数据的开始。
本系统中所采用的是一点对多点的无线通信模式,因此必须选择一种多址方式来实现点对多点通信,常用多址方式有时分多址(tdma)、频分多址(fdma)、码分多址(cdma)等,其中fdma为每一路通信提供一个不同的频段,易于实现,但是需要比较大的频段资源,而且抗干扰能力差。cdma是采用不同的编码来区分不同的信道,抗干扰能力强,但是传输开销非常大,而且实现也比较复杂。tdma在同一时间内只有一个信道可以通信,抗干扰能力较强,传输开销较小,而且实现比较容易,虽然实时性较差,但是由于温度的物理特性,此系统的实时性要求不高,所以可以采用时分多址(tdma)来实现。
3.2 通信协议制定 其中前导字符可采用0xaa、0xaa、0xff、0x00共4字节,其中前两个字节为同步信号,后两个字节为帧开始标志,接收端只要能够接收到0xaa、0xaa、0xff、0x00就可以认为新的一帧开始了;帧类型(4位)分为数据帧、有序数据帧、控制命令帧、确认帧等多种帧类型;帧编号(4位)为可选项与帧类型相关,只有帧类型是有序数据帧时才有效;地址(1字节)标明数据帧的目的地址;有效数据长度不定;校验为2字节crc16校验码;结束标志为0x00。
由于linux串行通信中有许多ascii码是作为控制字符来使用,因此,对以上帧当中除了前导字符和结束标志外的数据进行base64编码。
3.3 通信协议的实现
嵌入式系统端软件结构
首先,在嵌入式操作系统中,由于通常只能在内核态才能对硬件进行访问,所以软件必须通过驱动程序来操作硬件,在这里ptr2000可以看作一个串口设备来使用,但是,ptr2000是一个半双工的通信模块,发送接收状态由txe来控制,因此,要对默认的串口驱动程序进行一些修改,在串口驱动程序中的write函数完成发送功能,我们需要在其中加入一个通用对i