??? 關鍵詞:單片無線收發芯片nRF401,無線通信協議,無線抄表
nRF401單片無線收發芯片外圍元件少并可直接接單片機串口,為設計智能無線抄表等短距離無線數傳應用產品提供了較好的解決辦法,在很多領域得到廣泛應用。然而,由于無線通信的特殊性,一些外部的因素會對數據的無線傳輸產生影響,因此需要采用有效的辦法來確保通信。為了有效地應用無線通信,這里建立了一個無線數據傳送的通信信道模型,了解并討論外部因素對無線數據傳輸的影響,分析錯誤產生的原因與環節以及如何有效地傳輸數據,最后提供了一個可實際使用的無線通信協議。
1 通信信道模型及其分析
為了分析影響無線通信的因素,我們建立了一個無線通信信道模型。通信信道是指數據從發射到接收的一個完整通道。它包括產生數據源、編碼、發射、接收、解碼等,如圖1所示。
1.1 數據源
數據源是指數據產生的來源,在不同的應用中數據的來源是不同的,它可能是一個溫度傳感器的A/D數據值,計算機里的一個文件,或者用戶輸入鍵盤里的一個按鍵。數據在這里發生錯誤的可能性較小,而且較易通過硬件或軟件的方式來發現。
1.2 數據編碼
數據編碼主要包括并行轉串行以及為了傳輸可靠而增加的編碼信息。nRF401需要的是串行數據格式,這通常是由單片機UART(通用異步傳輸)來完成的,有時也可通過軟件I/O模擬來完成。數據在此發生錯誤的可能性也不大,而且可跟蹤和發現。
1.3 數據發射
數據發射是通過單片無線收發芯片nRF401的發射功能來完成的。nRF401采用PLL頻率合成和FSK調制技術,本身的設計是可靠的,然而外部因素如不恰當的供電、PCB設計與布局不良、噪聲、不適當的調制電壓電平、不適當的天線負載,都能引起數據流的錯誤。解決的要點需要根據良好的射頻PCB設計、選用滿足要求的外圍元件,并注意供電(良好的電源濾波,盡量不用開關電源),通過綜合采用以上措施,可以減少數據流產生錯誤的因素,獲得較為理想的效果。
1.4 傳播路徑
傳播路徑是無線電波從發射到接收的路徑,傳播損耗將會直接影響通信的效果,數據錯誤最有可能在這個階段發生。因為頻帶內的干擾或傳播路徑中RF信號的損耗降低了靈敏度,而且多徑和衰減也可能引起接收機接收錯誤的數據。傳播損耗包括自由空間損耗和其他損耗,其他主要的損耗包括:大氣、降雨、云、霧損耗;樹木遮擋損耗;建筑物等遮擋物的損耗;另外,突發性的干擾也會導致數據的錯誤。下面以自由空間損耗為例對傳播進行預測。
所謂自由空間傳播系指天線周圍為無限大真空時的電波傳播,它是理想傳播條件,自由空間傳播損耗與距離和工作頻率有關。下面的公式說明在自由空間下電波傳播的損耗:
〔Los〕(dB)=32.44+20lgd+20lgf
式中,Los是傳播損耗,單位為dB;d是距離,單位是km;f是工作頻率,單位是MHz。
由上式可見,自由空間中電波傳播損耗(亦稱衰減)只與工作頻率f和傳播距離d有關,當f或d增大一倍時,Los將分別增加6dB。
下面舉例說明工作頻率為433.92MHz,發射功率為+10dBm(10mW),接收靈敏度為-105dBm的無線系統(基于nRF401)在自由空間的傳播距離:
(1)由發射功率+10dBm,接收靈敏度為-105dBm,則Los=115dB;
?? (2)由Los、f計算得出d=9.7公里。
這是理想狀況下的傳輸距離,實際應用中會低于該值,這是因為無線通信要受到各種外界因素的影響,如大氣、阻擋物、多徑等造成的損耗,將上述損耗的參考值計入上式中,即可計算出近似通信距離。假定大氣、遮擋等造成的損耗為25dB,可以計算得出通信距離為:d=1.7公里。由此也可看出傳播損耗對數據傳輸可靠的影響是很大的。
1.5 數據接收
接收過程通過單片無線收發芯片nRF401的接收功能來完成。在沒有接收到信號時,nRF401會有隨機數據輸出,這是因為其靈敏度比較高。當發射機發射時,接收機的隨機數據輸出被抑制,這時輸出的是真正的數據。帶內干擾和頻率下降可能引起接收機接收到錯誤數據。與數據發射情況一樣,合理的PCB設計與布局,良好的供電等將產生較好的效果。
1.6 數據解碼
從nRF401輸出的數據是串行數據,通常可由微控制器的UART來處理,或者用軟件方法來實現接收。數據在此過程出現錯誤的可能性很小的,且易被跟蹤。如果錯誤發生在這之前,能根據幀錯誤通過軟件發現。
1.7 數據解釋
數據解釋通常在軟件里實現,錯誤檢測和糾正也在這階段實現,數據錯誤在這階段發生的可能性不大,且易于跟蹤。
2 無線通信協議基本要求及設計
在對無線通信信道模型進行分析,了解并討論外部因素對無線數據傳輸的影響后,我們可以據此設計實用的無線通信協議。
2.1 起始碼和噪聲的識別
這是因為nRF401靈敏度比較高,由于nRF401的特性,在沒有接收到信號時,nRF401會有隨機數據輸出,所以協議的第一件事就是能夠識別噪聲和有效數據。噪聲是以隨機字節出現的,沒有明顯的方式。一個理想的噪聲源應該能夠產生每一種可能字節信息的結合,噪聲的這種特性使得去找一種字節組合來作為有效包的開始相當困難,但實際上,噪聲并不是理想的。經測試和試驗,我們發現0xFF后跟0x00在噪聲中不容易發生,傳輸協議應該在數據包前加開始字節0xFF后跟0。
發送協議的開始應該是一個任意內容的字節如0xAA(這是因為第一個字節的數據在發送時容易丟失),然后是0xFF后跟一0x00;接收協議規定只接收以0xFF后跟一00x00開始的包。
2.2 錯誤檢測
為了發現數據傳輸可能發生的錯誤,需要對接收到的數據進行錯誤檢測。錯誤檢測可以這樣來實現:在發射之前先對數據進行分析,然后將這種分析結果加到數據包中,稱為監督位;在接收端比較附加在信息位后的監督位,如果兩者不同,則包是錯誤的。錯誤檢測的方法有多種,奇偶校驗、和校驗以及CRC校驗等。
奇偶校驗、和校驗是較為常用及易于實現的方法,下面舉例說明奇偶校驗法。
例1:發射數據1 0 1 0 1 0 1 0,在其后加奇偶標志位,此為偶標志(1),則發送為1 0 1 0 1 0 1 0 1接收到0 0 1 0 1 0 1 0 1。將前8位奇偶校驗與1比較,不對,故接收錯誤。奇偶校驗容易實現,但卻是最不可靠的,因其只能發現奇數個錯誤。
另外一種形式的錯誤檢查是和校驗。和校驗是先將所有的數據字節相加,然后將結果截短到所需的位長并作為校驗子傳輸。下面以例2說明之。
??? 例2:
??? 4 ? 字節1
??? 109 字節2
??? 65 字節3
??? 204 字節4
??? 126 8 bit校驗和
校驗和能夠檢測到比奇偶校驗更多的錯誤,但當字節順序顛倒時,校驗和不能發現,因其不能發現次序錯誤。如果要求更高的可靠性,可采用CRC編碼,采用CCITT16檢錯編碼,理論上可對16位以下的突發或隨機錯誤完全檢出,具體原理和實現方式可以參考相關資料。
2.3 錯誤糾正
錯誤糾正的目的是在發送數據編碼時增加一些額外的信息,以檢測并糾正數據傳輸發生的錯誤。前向糾錯的方法包括漢明碼、循環碼和卷積碼等。
一些復雜的算法雖然有很好的糾檢錯效果,但是對于許多初次接觸無線通信協議設計的人來說,可能需要很大的精力來了解相關的數學知識,因此,這里介紹一個采用重復碼來糾檢錯的算法,它適用于簡單實用的通信協議,編程也很容易實現,在采用nRF401設計的無線數傳系統中得到應用。下面就是一種適合于許多無線數傳的前向錯誤糾正方法。數據在包中復制兩次(總共3份),在接收端,第一個拷貝進行檢錯,如果有錯,剩下的兩個備份用來改正錯誤。
錯誤的糾正是通過比較三個備份數據中的每位,如果兩位或更多位是0,則正確的應為0。如:
??? 0 0 0 0 1 0 1 1 copy 1(錯誤字節)
??? 1 0 1 0 1 0 1 0 copy 2
??? 1 0 1 1 1 0 1 0 copy 3
??? 1 0 1 0 1 0 1 0 已經被糾正的字節
在實際應用中可以根據需要選用三重判決或者五重判決。
3 無線通信協議設計的基本要求
根據對無線信道模型的分析,我們可以了解到無線通信協議有以下幾個基本要求:
·最小的開銷:無線傳輸過程中受到噪聲或干擾等的影響,會出現誤碼,為此,在傳送時要對數據進行各種糾檢錯編碼。不同的編碼方式具有不同的糾檢錯能力,有的編碼只能檢錯不能糾錯,一般來說,監督位碼元所占的比例越大,糾檢錯能力越強。糾錯編碼是以降低信息傳輸速率為代價來提高傳輸的可靠性的,因此,增加信息的數量必須是所需信息中最少的,以保證編碼的效率。
·可靠性:一個無線通信協議應該能夠有效檢出并糾正數據的錯誤。
·優化的無線功能:一個無線通信協議應該使設備以一種能充分利用發射和接收機特性的優化方式工作。
參考文獻
2 劉富全.糾錯編碼及應用.哈爾濱:哈爾濱船舶工程學院出版社,1993
評論
查看更多