由RFW122-M构成的短距离无线数据通信系统( 二 )


图1; 系统框图
MCU与RFW122-M及RFW-D100的连接关系如图2所示 。
图2; MCU与RFW122-M及RFW-D100的连接关系

;; 3; 通信协议及软件流程
系统所采用的数据链路层的协议是载波侦听多路访问协议(CSMA) 。局域网一般采用共同介质的方法,为此当多个站点要同时访问介质时,就要进行控制 。CSMA就是常用的一种方式 。当网中站台要发送数据时,先检测是否有别的站台占用了传输媒体 。具体做法是:先进行载波侦听,假如发现介质(媒体)空闲,则马上发送数据;否则,就根据不同的策略退避重发 。
由于该系统工作在2.44GHz的ISM频段,该频段存在较大干扰,所以设计数据包结构时最重要的原则是,以尽量短的时间占用信道,以降低潜在冲突的概率 。在传输中,包重叠的概率是与每个发送节点占用共享信道的时间成正比的 。因此,若以高比特率传输数据包,会提高数据被正确接收的概率 。RFW-D100最高的空中数据传输速率为1Mbps,它可以被配置为各种传输速率 。在RFW-D100的数据手册中,降低数据速率并不能降低误码率,因此为了缩短数据包在空中传输的时间,降低数据碰撞的概率,在协议中建议以最高的速率传输数据 。若把数据分成小包,则每个小包被正确接收的概率又会增加 。这样,当干扰出现时,只有一小部分会丢失,而且协议有能力来定位在特定包中损坏的数据 。因此可以得出这样的结论:以高的数据速率发送短的数据包,将增强协议处理损坏数据的能力 。
3.1数据包格式
数据包格式如图3所示 。
图3; 数据包格式
①PREAMBLE:RFWD100发送PREAMBLE的目的是使接收机和发送机同步 。20 位长,高4位为1111,其他16位可以配置 。发送顺序为从高到低 。
②NET_FIRST:1字节,网络地址字节 。
③NET_SEC:1字节,网络地址字节 。
④DST_ID:1字节,数据包所发往的目的节点地址 。
⑤SRC_ID:1字节,发数据包的源站地址 。
⑥SEQUENCE:1字节 。这个段包括两个值:高4位表示数据序号,低4位表示数据包的类型 。低4位代表的含义:0000b为握手数据包,0001b为握手应答包,0010b为数据包,0011b为数据包的应答包,0100b为拆链包,0101b为拆链的响应包 。
⑦SIZE:1字节 。这个段说明包的大小 。当设定数据包为固定大小时,SIZE没有意义 。
⑧PAYLOAD:1字节 。来自上层软件层的数据 。
⑨CRC:1字节 。RFWD100在发送端给每个包增加CRC信息,使得接收机对接收的数据进行检测 。
在本系统的协议设计过程中,采用小数据包的传输模式,从串口中收到的数据个数(以字节为单位)等于10时,将这些数据打包发送出去 。假如收到的数据个数小于10,并且串口数据的发送已经结束,则系统也将这些数据打包并发送出去 。
3.2系统状态转移图
系统的状态转移如图4所示,包含4个状态,分别是空闲态、握手态、传输态和接收态 。
图4; 系统状态转移图
空闲态:假如没有串口中断或外部的握手信号中断,则系统将一直处于空闲状态 。
握手态:假如串口中断发生,则表明有上层的数据包需要传输,系统进入握手的状态 。
传输态:系统把从串口收到的数据通过无线信道发送出去 。
接收态:系统处理接收到的数据包,发往串口,并对从串口到来的数据包做丢弃处理 。
3.34个状态的处理流程
系统4个状态的处理流程如图5~图8所示 。
图5; 空闲态流程
图6; 握手态流程
图7; 发送态流程
图8; 接收态流程

;系统接收串口数据的缓冲池的大小为15字节 。

推荐阅读