微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 由RFW122-M构成的短距离无线数据通信系统

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

时间:03-02 来源:C114 点击:

概率。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字节。

图6中各个标志位的意义如下:

New_flag串口中有新数据到来(串口中有数据到来,将New_flag置1,在串口中断中设置此标志位)。

Checkact_suc_flag收到握手应答包的标志。收到握手应答数据包后将此标志位置1。

Tx_size系统接收到的来自串口的字节个数。

Tx_end_flag串口中的数据发送完毕。由定时器1控制,定时一段时间。如果在这段时间内没有新的数据到来,则认为串口数据的这次发送完毕。每次收到新的串口数据时重置定时器,定时的时间大于1字节数据传输的时间。

Checkact_send_flag由定时器0控制,在定时的时间内如果没有收到握手应答包,则定时器0溢出,Checkact_send_flag被置1,重发握手包。

图7中各个标志位的意义如下:

New_flag串口中有新的数据到来。若串口有数据到来,则将New_flag置1,在串口中断中设置此标志位。

Pk_sended_nack一个数据包已经发送出去但还没有收到确认包时将此位置1,为0时表示系统可以发送数据包。

Ack_flag为1表示发出的数据包收到了确认。

Tx_end_flag从串口发来的数据已经停止了发送。

Exceed_timing_flag在发送完每一个数据包的同时打开定时器0,从定时器0打开到定时器0溢出的这段时间内,如果没有收到确认包,则认为数据包发送失败,将Exceed_timing_flag置1;如果在这段时间内收到确认的数据包,则将定时器0关闭。

Tx_size系统接收到的来自串口的字节个数。

图8中各个标志位的意义如下:

Lock_flag本节点收到了其他节点发来的数据包。

Tx_to_s_flag在接收状态,如果MCU中的缓冲区内仍有数据,且Tx_to_s_flag=1,则可向串口发送1字节数据。当MCU的TI中断发生时,将此标志位置1。

4接口芯片RFW_D100的固件编程

对RFWD100进行固件的编程是通过对RFWD100内的特殊功能寄存器的编程实现的。

SCR2=0x1c配置前的操作;

BLR=0x06配置数据的空中码速为1Mbps;

PPR=0xca配置数据包的格式;

LCR=0x45配置数据包特殊字节的位置;

NIR=0xbb网络识别地址;

BIR=0xee节点识别

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top