图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配置数据的空中码速为1 Mbps;
PPR=0xca配置数据包的格式;
LCR=0x45配置数据包特殊字节的位置;
NIR=0xbb网络识别地址;
BIR=0xee节点识别地址;
SCR1=0x20打开RSSI;
SCR3=0x03
SCR4=0x03
IER=0x13中断使能;
SCR2=0x02系统处于数据包的搜索状态。
结语
本设计以射频芯片RFW122M及其接口芯片RFED100为核心,采用单片机AT89LV52作微处理器,实现了一个短距离无线数据传输系统。今后的工作是完善和改进该协议,进一步提高无线数据的传输效率。
参考文献
[1] 黄智伟. 无线数字收发电路设计——电路原理与应用实例. 北京:电子工业出版社,2003.
[2] 郑少仁,王海涛,赵志峰,等. Ad Hoc 网络技术. 北京:人民邮电出版社,2005.
[3] 张全宝,李峻. RFW102无线收发芯片组的原理与应用. 国外电子元器件, 2004(1).
[4] 陈媛媛,杨凯,胡文东.基于RFW102芯片组的短距无线数据传输系统的实现. 现代电子技术, 2005(24).
[5] Vishay RFWaves Ltd. RFW122M ISM Transceiver Module, Preliminary Datasheet. 200505.
[6] Vishay RFWaves Ltd. RFWDD100: Standard Interface to The RFW100 Series. Datasheet. July 200207.