串口调试打印设计_第1页
串口调试打印设计_第2页
串口调试打印设计_第3页
串口调试打印设计_第4页
串口调试打印设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串口调试打印设计1. 需求分析1.1系统背景随着计算机技术、网络技术与无线通信技术的迅速发展,人们开始将无线网络技术与传感器技术相结合,无线传感器网络(WSN,wireless sensor network)应运而生。它由部署在监测区域内大量的微型传感器节点组成,通过无线的方式形成的一个多跳的自组织网络,不仅可以接入Internet,还可适用于有线接入方式所不能胜任的场合,提供优质的数据传输服务。微机电系统(MEMS,Micro-Electro-Mechanical Systems)、超大规模集成电路技术(VLSI,Very-Large-Scale-Integration systems)和无

2、线通信技术的飞速发展,使得它的应用空间日趋广阔,遍及军事、民用、科研等领域;但由于网络结点自身固有的通信能力、能量、计算速度及存储容量等方面的限制,对无线传感器网络的研究具有很大的挑战性和宽广的空间。作为一种无线通信技术,ZigBee具有如下特点: (1) 低功耗: 由于ZigBee的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节5号电池就可以维持长达6个月到2年左右的使用时间,这是其它无线设备望尘莫及的。 (2) 成本低: ZigBee模块的初始成本在6美元左右,估计很快就能降到1.52.5美元, 并且ZigBee协

3、议是免专利费的。低成本对于ZigBee也是一个关键的因素。 (3) 时延短: 通信时延和从休眠状态激活的时延都非常短,典型的搜索设备时延30ms,休眠激活的时延是15ms, 活动设备信道接入的时延为15ms。因此,ZigBee技术适用于对时延要求苛刻的无线控制(如工业控制场合等)应用。 (4) 网络容量大: 一个星型结构的Zigbee网络最多可以容纳254个从设备和一个主设备, 一个区域内可以同时存在最多100个ZigBee网络, 而且网络组成灵活。 (5) 可靠: 采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式

4、, 每个发送的数据包都必须等待接收方的确认信息。如果传输过程中出现问题可以进行重发。 (6) 安全: ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证, 采用了AES-128的加密算法,各个应用可以灵活确定其安全属性。1.2系统目标运用串口通信原理中的异步串行通信方式,实现通过在串口调试助手的发送区中输入任意字符串,发送给CC2430,其接收区显示该字符串。 1条 信息的各位数据被同时传送的通讯方式称为并行通讯。并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离,相距数米的通讯。一条信息的各

5、位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据按位顺序传送,最少仅需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工,信息能双向传送但不能同时双向传送称为半双工,信息能够同时双向传送则称为全双工。1.3系统功能上电后模块向电脑串口发出问候语,由串口向模块发送不大于30个字符的字符串,末尾加#结束,模块会返回相同的字符串,波特率为57600。1.4运行环境开发环境:IARZigBee 2006协议栈CC2430模块SmartRF04EB仿真器运行平台:Wind

6、ows XP操作系统串口调试助手2系统结构2.1 无线传感器网络结构无线传感器网络是一种特殊的Ad-hoc网络,它是由许多无线传感器节点协同组织起来的。这些节点具有协同合作、信息采集、数据处理、无线通信等功能,可以随机或者特定地布置在监测区域内部或附近,它们之间通过特定的协议自组织起来,能够获取周围环境的信息并且相互协同工作完成特定任务。无线传感器网络典型的体系结构如图1所示,包括分布式传感器节点、网关、互联网和监控中心等。在传感器网络中,各个节点的功能都是相同的,它们既是信息包的发起者,也是信息包的转发者。大量传感器节点被布置在整个监测区域中,每个节点将自己所探测到的有用信息通过初步的数据处

7、理和信息融合之后传送给用户,数据传送的过程是通过相邻节点的接力传送方式传送给网关,然后再通过互联网、卫星信道或者移动通信网络传送给最终用户。用户也可以对网络进行配置和管理,发布监测任务以及收集监测数据等。图1 无线传感器网络体系结构2.2 传感器节点结构传感器节点通常是一个微型的嵌入式系统。从网络功能上看,每个传感器节点既具有传统网络节点的终端功能,又兼具路由器的功能。除了要进行本地信息收集和数据处理外,还要对其他节点转发来的数据进行存储、管理和融合等处理。一个传感器节点通常由传感器模块、处理器模块、无线通信模块和能量供应模块四部分组成,如图2所示。传感模块负责采集监测区域内的有用信息并进行数

8、据转换;处理器模块负责控制整个传感器节点的运行,存储和处理本身采集的数据以及其他节点发来的数据;无线通信模块负责与其他传感器节点进行无线通信,交换控制信息和收发采集到的数据;能量供应模块为传感器节点提供运行所需的能量,通常采用微型电池。传感器节点为低功耗设备,为了最大限度地节约电源,在硬件设计方面,要尽量采用低功耗器件,处理器通常选用嵌入式CPU,射频单元主要由低功耗、短距离的无线通信模块组成,在没有通信任务的时候,要切断射频部分电源;而且在软件设计方面,各层通信协议都应该以节能为中心,必要时可以牺牲一些网络性能指标,以获得更高的电源效率。图2 传感器节点的体系结构2.3 无线传感器网络协议栈

9、无线传感器网络通信协议主要包括物理层、数据链路层、网络层、传输层和应用层,与互联网协议栈的五层协议相对应。在低层采用IEEE802.15.4工作组所定义的MAC层和物理层协议,而在MAC层以上的协议则是由Zigbee联盟制定。完整的Zigbee协议栈模型如图3所示。另外,协议栈还包括能量管理平台、移动管理平台和任务管理平台。这些管理平台使得传感器节点能够按照能源高效的方式协同工作,在节点移动的传感器网络中转发数据,并支持多任务和资源共享。图3 Zigbee协议栈2.4. 物理层物理层负责载波频率产生、信号的调制解调等工作。IEEE802.15.4定义了2.4GHz物理层和868/915MHz物

10、理层两个物理层标准,两个物理层都基于DSSS(Direct Sequence Spread Spectrum,直接序列扩频),使用相同的物理层数据包格式,区别在于工作频率、调制技术、扩频码片长度和传输速率的不同。2.4GHz频段有16个信道,能够提供250kbps的传输速率,物理层采用的是O-QPSK调制;868MHz是欧洲的ISM频段,只用一个信道,传输速率为20kbps,物理层采用BPSK调制;915MHz是美国的ISM频段,有10个信道,传输速率为40kbps,物理层采用的也是BPSK调制方式。2.5 数据链路层数据链路层负责数据成帧、帧检测、媒体访问和差错控制。媒体访问协议保证可靠的点

11、对点和点对多点通信,差错控制则保证源节点发出的信息可以完整、无误地到达目标节点。就实现机制而言,介质访问控制(MAC)协议可分为3类:确定性分配、竞争占用和随机访问。前两者不是传感器网络的理想选择。因为TDMA固定时隙的发送模式功耗过大,为了节省功耗,空闲状态应关闭发射机,竞争占用方案需要实时监测信道状态,也不是一种合理的选择,随机介质访问模式比较适合于无线传感网络的节能要求。IEEE802.15.4定义的MAC层采用了CSMA-CA(载波监听多信道接入/避免冲突)协议的信道共享多点接入技术;为了保证传输的可靠行,还采用了完整的握手协议。在无线传感器网络中,两个主要的错误控制模式是前向错误修正

12、(FEC)和自动重复请求(ARQ)两种。2.6 网络层网络层主要负责路由生成与路由选择。网络层协议是无线传感器网络的重要因素,在无线传感器网络中,大多数节点是无法直接与网关进行通信的,需要通过中间节点进行多跳路由才能将采集到的数据发送给网关。针对无线传感器网络中数据传送的特点和难题,人们提出许多新的路由协议。这些路由协议可以大致分为四类:洪泛式路由协议、层次式路由协议、以数据为中心的路由协议、以及基于位置信息的路由协议。1洪泛式路由协议:这种协议是一种古老的协议。它不需要维护网络的拓扑结构和路由计算,接收到消息的节点以广播形式转发数据包给所有的邻节点。对于自组织的传感器网络,洪泛式路由是一种较

13、直接的实现方法,但容易带来消息的“内爆”(implosion)和“重叠”(overlap),而且它没有考虑能源方面的限制,具有“资源盲点”(resource blindness)的缺点。典型算法为扩散法(Flooding)。2层次式路由协议:它的基本思想是将传感节点分簇,簇内通讯由簇头节点来完成,簇头节点进行数据聚集和合成减少传输信息量,最后簇头节点把聚集的数据传送给终端节点。这种方式能满足传感器网络的可扩展性,有效的维持传感节点的能量消耗,从而延长网络生命周期。典型算法为低功耗自适应聚类路由算法(LEACH)。LEACH(low energy adaptive clustering hier

14、archy)LEACH是MIT的Chandrakasan等人为无线传感器网络设计的低功耗自适应聚类路由算法。与一般的平面多跳路由协议和静态聚类算法相比,LEACH可以将网络生命周期延长15%,主要通过随机选择聚类首领,平均分担中继通信业务来实现。LEACH定义了“轮”(round)的概念,一轮由初始化和稳定工作两个阶段组成。为了避免额外的处理开销,稳定态一般持续相对较长的时间。在初始化阶段,聚类首领是通过下面的机制产生的。传感器节点生成0,1之间的随机数,如果大于阈值T,则选该节点为聚类首领。T的计算方法如下:其中p为节点中成为聚类首领的百分数,r是当前的轮数。一旦聚类首领被选定,它们便主动向

15、所有节点广播这一消息。依据接收信号的强度,节点选择它所要加入的组,并告知相应的聚类首领。基于时分复用的方式,聚类首领为其中的每个成员分配通信时隙。在稳定工作阶段,节点持续采集监测数据,传与聚类首领,进行必要的融合处理之后,发送到sink节点,这是一种减小通信业务量的合理工作模式。持续一段时间以后,整个网络进入下一轮工作周期,重新选择聚类首领。3以数据为中心的路由协议:它提出对传感器网络中的数据用特定的描述方式命名,数据传送基于数据查询并依赖数据命名,所有的数据通信都限制局部范围内。这种方式的通信不再依赖特定的节点,而是依赖于网络中的数据,从而减少了网络中大量传送的重复冗余数据,降低了不必要的开

16、销,从而延长网络生命周期。典型算法为向扩散(Directed Diffusion)。定向扩散模型是Estrin等人专门为传感器网络设计的路由策略,与已有的路由算法有着截然不同的实现机制。节点用一组属性值来命名它所生成的数据,比如将地震波传感器生成的数据命名为Type=seismic,id=12,timestamp=02.01.22/21:10:23,location=7580S/100120E。Sink节点发出的查询业务也用属性的组合表示,逐级扩散,最终遍历全网,找到所有匹配的原始数据。有一个称为“梯度”的变量与整个业务请求的扩散过程相联系,反映了网络中间节点对匹配请求条件的数据源的近似判断。

17、更直接的方法是节点用一组标量值表示它的选择,值越大意味着向该方向继续搜索获得匹配数据的可能性越大,这样的处理最终将会在整个网络中为sink节点的请求建立一个临时的“梯度”场,匹配数据可以沿“梯度”最大的方向中继回sink节点。图4描述了定向扩散模型的工作原理。图4 定向扩散路由原理4基于位置信息的路由协议:它利用节点的位置信息,把查询或者数据转发给需要的地域,从而缩减数据的传送范围。实际上许多传感器网络的路由协议都假设节点的位置信息为已知,所以可以方便的利用节点的位置信息将节点分为不同的域(region)。基于域进行数据传送能缩减传送范围缓和中间节点,从而延长网络生命周期。典型算法为GEAR算

18、法。GEAR是充分考虑了能源有效性的基于位置的路由协议,它比其他的基于位置的路由协议能更好的应用于无线传感器网络之中。既然传感器网络中的数据经常包含了位置属性信息,那么可以利用这一信息,把在整个网络中扩散的信息传送到适当的位置区域中。同样GEAR也采用了查询驱动数据传送模式。它传送数据分组到目标域中所有的节点的过程包括两个阶段:目标域数据传送和域内数据传送。在目标域数据传送阶段,当节点接收到数据分组,它将邻接点同目标域的距离和它自己与目标域的距离相比较,若存在更小距离,则选择最小距离的邻接点作为下一跳节点;若不存在更小距离,则认为存在“hole”,节点将根据邻居的最小花销来选择下一跳节点。在域

19、内数据传送阶段,可通过两种方式让数据在域内扩散:在域内直接洪泛和递归的目标域数据传送直到目标域剩下唯一的节点。GEAR将网络中扩散的信息局限到适当的位置区域中,减少了中间节点的数量,从而降低了路由建立和数据传送的能源开销,从而更有效的提高了网络的生命周期。缺点是依赖节点的GPS定位信息,成本较高。在本实验中我们采用的是AODV路由算法(Ad hoc on demand distance vector,Ad hoc按需距离矢量协议)。它并不是传感器网络的最佳路由算法。但是通过它,我们可以了解到传感器网络的一些路由特点。AODV是一个按需的路由协议,它只根据源节点的需要才建立节点之间的路由。在源节

20、点使用这条路由进行网络通信时,路由程序会一直维护这些路由。AODV使用序列号来保证路由的时效性。它通过一个路由请求/路由回应的查询过程来建立路由。当一个源节点想要与目标节点通信,但又不具备到目标节点的有效路由时,它广播一个路由请求报文(RREQ)。在RREQ报文中包含了源节点的IP地址、源节点当前的序列号和一个广播ID,同时还包含了源节点所知道的到目的节点的最新路由的序列号。其它节点收到这个报文时,就在路由表中建立到源节点的反向路由,并重新广播RREQ报文。当目标节点收到RREQ报文时,它会单播一个路由回答报文(RREP)给源节点。如果某一个中间节点具有一条到目的节点的较新路由(意味着这条路由

21、的序列号比RREQ中的目的节点的序列号要大),它也可以直接给源节点发送RREP报文,而不在广播RREQ报文。当然,如果一个节点收到了重复的RREQ(即具有相同广播ID的RREQ),它将忽略这个报文,而不将其继续广播。在RREP从目的节点向源节点传播的过程中,沿途的节点都在各自的路由表中设定了到目的节点的正向路由。当源节点收到RREP报文之后,就可以开始向目的节点发送数据包。如果源节点在之后又再次收到RREP,并且RREP中的目标节点序列号比它当前所用的路由的序列号更大时,它会更新自己的路由表,并开始使用新路由。当源节点频繁给目的节点发送数据包时,其所用的路由会一直保持活跃状态,并被沿途的所用中

22、间节点所维护。也就是说在AODV协议中,路由中的每个节点都维护路由表,因而数据报文头部不再需要携带完整的路由信息,从而提高了协议的效率。一旦源节点停止发包,则这条路由会超时,并被中间节点从各自的路由表中删除。如果一条活跃路由的中间某一段链路发生了破裂(可能时由于节点移动,或外界干扰),则这条路由会产生错误。在链路破裂处的上游节点会给源节点发送路由错误(RERR)报文。源节点收到RERR后,如果它还需要继续与目的节点通信,就必须重新建立路由。2.7 传输层传输层负责数据流的传输控制,将传感器网络的数据提供给外部网络,是保证通信服务质量的重要部分。2.8 应用层应用层包括一系列基于监测任务的应用层

23、软件。3. 详细设计3.1相关函数初始化函数initUARTtest(void)函数原型:void initUARTtest(void) CLKCON &= 0x40; /晶振 while(!(SLEEP & 0x40); /等待晶振稳定 CLKCON &= 0x47; /TICHSPD128分频,CLKSPD不分频 SLEEP |= 0x04; /关闭不用的RC振荡器 PERCFG = 0x00;/位置1 P0口 P0SEL = 0x3c;/P0用作串口 U0CSR |= 0x80;/UART方式 U0GCR |= 10;/baud_e U0BAUD |= 216;/

24、波特率设为57600 UTX0IF = 1; U0CSR |= 0X40;/允许接收 IEN0 |= 0x84;/开总中断,接收中断函数功能:将系统时钟设为高速晶振,将P0口设置为串口0功能引脚,串口0使用UART模式,波特率设为57600,允许接收。在使用串口之前调用。串口发送字符串函数:void UartTX_Send_String(uchar *Data,int len)函数原型:void UartTX_Send_String(uchar *Data,int len)int j;for(j=0;j<len;j+) U0DBUF = *Data+; while(UTX0IF = 0)

25、; UTX0IF = 0;串口接收一个字符串#pragma vector = URX0_VECTOR_interrupt void UART0_ISR(void)URX0IF = 0;/清中断标志temp = U0DBUF;3.2实现框架图3.3设计代码#include <iocc2430.h>#include <string.h>#define uint unsigned int#define uchar unsigned char#define FALSE 0#define TURE 1/定义控制灯的端口#define led1 P1_0#define led2 P

26、1_1void Delay(uint);void initUARTtest(void);void InitialAD(void);void UartTX_Send_String(uchar *Data,int len);uchar Recdata="Hello. TianYun WuXianKeJi"uchar RTflag = 1;uchar temp;uint datanumber = 0;uint stringlen;/*函数功能 :延时*入口参数 :定性延时*返 回 值 :无*说 明 :*/void Delay(uint n)uint i;for(i=0;i<

27、n;i+);for(i=0;i<n;i+);for(i=0;i<n;i+);for(i=0;i<n;i+);for(i=0;i<n;i+);/*函数功能 :初始化串口1*入口参数 :无*返 回 值 :无*说 明 :57600-8-n-1*/void initUARTtest(void) CLKCON &= 0x40; /晶振 while(!(SLEEP & 0x40); /等待晶振稳定 CLKCON &= 0x47; /TICHSPD128分频,CLKSPD不分频 SLEEP |= 0x04; /关闭不用的RC振荡器 PERCFG = 0x00;

28、/位置1 P0口 P0SEL = 0x3c;/P0用作串口 U0CSR |= 0x80;/UART方式 U0GCR |= 10;/baud_e U0BAUD |= 216;/波特率设为57600 UTX0IF = 1; U0CSR |= 0X40;/允许接收 IEN0 |= 0x84;/开总中断,接收中断/*函数功能 :串口发送字符串函数*入口参数 : data:数据*len :数据长度*返 回 值 :无*说 明 :*/void UartTX_Send_String(uchar *Data,int len) int j; for(j=0;j<len;j+) U0DBUF = *Data+

29、; while(UTX0IF = 0); UTX0IF = 0; /*函数功能 :主函数*入口参数 :无*返 回 值 :无*说 明 :无*/void main(void)/P1 outP1DIR = 0x03; /P1控制LEDled1 = 1;led2 = 1;/关LED Delay(2000);initUARTtest(); /初始化UART stringlen = strlen(char *)Recdata); / UartTX_Send_String(Recdata,30);while(1) if(RTflag = 1)/接收 led2=0;/接收状态指示 if( temp != 0)

30、 if(temp!='#')&&(datanumber<30) /被定义为结束字符 /最多能接收30个字符 Recdatadatanumber+ = temp; else RTflag = 3; /进入发送状态 if(datanumber = 30)RTflag = 3; temp = 0; if(RTflag = 3)/发送 led2 = 1; /关绿色LED led1 = 0; /发送状态指示 U0CSR &= 0x40;/不能收数 UartTX_Send_String(Recdata,datanumber); U0CSR |= 0x40;/允

31、许收数 RTflag = 1; /恢复到接收状态 datanumber = 0;/指针归0 led1 = 1; /关发送指示 /*函数功能 :串口接收一个字符*入口参数 : 无*返 回 值 :无*说 明 :接收完成后打开接收*/#pragma vector = URX0_VECTOR _interrupt void UART0_ISR(void) URX0IF = 0;/清中断标志temp = U0DBUF; 4. 运行结果5. 自我评价通过此次课设,使我加深了对无线传感器网络的认识,对一些传感器,如湿度传感器,温度传感器和光照传感器等的应用有了更深刻的理解,进一步熟悉和掌握了硬件的开发,并且学会使用CC2430模块进行一些通信实验,对今后学习ARM是一个良好的铺垫。6. 课设总结在此次课设的过程中,尽管有一些困难,但是在老师和同学们的帮助下,圆满的实现了该课设的基本功能,在实现的同时,也有一些体会。首先需要明确的是串口的任务只是有串口接收数据和串口发送数据两个部分。在串口接收数据的这个部分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论