利用AT89LV52單片機作控制器,實現基于RFWaves公司的射頻芯片RFW122-M的短距離無線數據通信系統;分析射頻芯片RFW122-M及其與單片機的接口芯片RFW-D100的特點;給出系統的硬件原理框圖及軟件流程圖。對應用于該裝置的無線數據傳輸協議CSMA進行分析,并且在對固件的編程配置中加以實現。
關鍵詞 無線數據通信系統 RFW122-M RFW-D100 AT89LV52 CSMA協議
目前, 短程射頻通信技術是一種熱門技術, 已廣泛應用于實際中, 主要有無線局域網(WLAN )、個人區域網絡(PAN) 及無線短距離消費類產品(如中低速數據傳輸應用, 有效范圍在30 m以內)。該通信技術的標準有IEEE802.11a、Hiperlan2、藍牙(IEEE802.15.1)、 HomeRF及IEEE802.11b(WIFI)等。支持這些標準的器件一般功耗都比較高,結構復雜,價格較高, 因而不適合低端產品。RFWaves 公司針對現有市場發展推出的面向低端的用于短距離無線通信的射頻通信芯片組RFW122-M,符合美國聯邦通信委員會(FCC)的技術規范。
本系統利用射頻芯片RFW122-M及其與MCU的接口芯片RFW-D100,在單片機AT89LV52的控制下,實現了短距離的無線數據通信。
1? 射頻芯片RFW122-M及其接口芯片RFW-D100
RFW122-M無線收發芯片是一種半雙工、使用直接序列擴頻(DSSS)技術的無線收發兩用集成電路,工作中心頻率為2.44 GHz(ISM頻段),采用ASK調制方式,工作電壓為2.4~3.6 V。在空閑狀態下,幾乎不消耗功率(0.1 μA @ VCC=3 V)。RFW122-M可以外接一個200 Ω的差分阻抗天線(印制版天線)或帶有匹配電路的其他天線,在誤碼率為10-3的條件下,接收靈敏度為-77 dBm。該模塊有3根數據控制線,且其數據I/O口是一個串行的數字接口。它的喚醒時間為20 μs,同步時間是1.2 μs。最高數據傳輸速率為1 Mbps,此時工作電流為33 mA。
為了降低MCU實時處理MAC協議的要求,RFW122-M芯片組提供了RFW122-M與MCU之間的接口芯片RFW-D100。該芯片在MCU和RFW122-M之間提供了一個并行接口;同時提供了對CSMA協議的支持。RFW-D100采用了兩種技術來獲得比較好的載波偵聽的能力: 一種是RSSI(射頻信號強度檢測),能檢測到任何強度的無線傳輸,避免沖突;另一種是使用RFWaves 網絡的載波偵聽算法。采用這種技術可以避免與本網絡內的或其他網絡的RFWaves站點發生沖突。
(1)? RSSI(射頻信號強度檢測)
RSSI機制用來比較某個非RFWaves站點傳輸的功率超過了一個確定的門限(用一個外部的電阻來設置這個數值,RFW-D100給出了該門限的參考電壓和計算公式),比較的結果放在寄存器SSR[7]-COMP_IN中。當MCU內有數據傳輸時,就去讀取該寄存器,根據寄存器的狀態確定信道是否處于被占用的狀態,從而確定數據是否被傳輸。
(2) 內部/外部RFWaves網絡的載波監聽的算法
該機制主要用來監測相似的RFWaves網絡。RFWD100利用載波偵聽算法監聽是否有外部相似的RFWaves網絡正在傳輸數據。如果外部的RFWaves網絡正在進行數據的傳輸,則內部的標志位將被置1,表示信道處于被占用的狀態;如果信道由被占用的狀態轉為空閑的狀態,將產生一個中斷來通知MCU,此時MCU可以進行數據的傳輸。
2? 硬件設計
系統的微處理器采用Atmel公司的AT89LV52。它是一款基于51系列的低功耗微處理器,支持匯編和C語言,開發環境采用Keil公司 Keil C51(51單片機的匯編和C語言的開發工具);支持匯編、C語言以及混合編程,同時具備功能強大的軟件仿真和硬件仿真。系統包含兩個半雙工的通信終端,來自高層的數據由串口發往MCU,MCU再將數據發往RFW-D100。RFW-D100將數據打包以后送往RFW122-M進行調制,再通過天線發送出去。系統框圖如圖1所示。
MCU與RFW122-M及RFW-D100的連接關系如圖2所示。
圖2? MCU與RFW122-M及RFW-D100的連接關系
3? 通信協議及軟件流程
系統所采用的數據鏈路層的協議是載波偵聽多路訪問協議(CSMA)。局域網一般采用共同介質的方法,為此當多個站點要同時訪問介質時,就要進行控制。CSMA就是常用的一種方式。當網中站臺要發送數據時,先檢測是否有別的站臺占用了傳輸媒體。具體做法是:先進行載波偵聽,如果發現介質(媒體)空閑,則立刻發送數據;否則,就根據不同的策略退避重發。
由于該系統工作在2.44 GHz的ISM頻段,該頻段存在較大干擾,所以設計數據包結構時最重要的原則是,以盡量短的時間占用信道,以降低潛在沖突的概率。在傳輸中,包重疊的概率是與每個發送節點占用共享信道的時間成正比的。因此,若以高比特率傳輸數據包, 會提高數據被正確接收的概率。RFW-D100最高的空中數據傳輸速率為1 Mbps,它可以被配置為各種傳輸速率。在RFW-D100的數據手冊中,降低數據速率并不能降低誤碼率,因此為了縮短數據包在空中傳輸的時間,降低數據碰撞的概率,在協議中建議以最高的速率傳輸數據。若把數據分成小包,則每個小包被正確接收的概率又會增加。這樣,當干擾出現時,只有一小部分會丟失,而且協議有能力來定位在特定包中損壞的數據。因此可以得出這樣的結論:以高的數據速率發送短的數據包,將增強協議處理損壞數據的能力。
3.1? 數據包格式
數據包格式如圖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個狀態,分別是空閑態、握手態、傳輸態和接收態。
空閑態:如果沒有串口中斷或外部的握手信號中斷,則系統將一直處于空閑狀態。
握手態:如果串口中斷發生,則表明有上層的數據包需要傳輸,系統進入握手的狀態。
傳輸態:系統把從串口收到的數據通過無線信道發送出去。
接收態:系統處理接收到的數據包,發往串口,并對從串口到來的數據包做丟棄處理。
3.3? 4個狀態的處理流程
系統4個狀態的處理流程如圖5~圖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作微處理器,實現了一個短距離無線數據傳輸系統。今后的工作是完善和改進該協議,進一步提高無線數據的傳輸效率。
評論
查看更多