摘要:本文給出了一種基于CC1000 實現(xiàn)射頻光傳輸模塊FSK 通信的設計方法。在文中闡述了FSK 技術(shù)原理,介紹了CC1000 和MCU 的硬件接口電路,詳細討論了軟件的設計,并給出了程序流程圖。
1. 引 言
射頻光纖傳輸模塊(也稱光端機)與移動通信直放站設備相配合可以構(gòu)成移動通信光纖傳輸直放站系統(tǒng)。早期射頻光纖傳輸模塊僅能完成射頻信號到光信號的轉(zhuǎn)換,沒有其它功能。
隨著移動運營商要求的提高,光纖直放站都需要有監(jiān)控功能。因此,模塊在原有基礎上,增加了FSK通信功能,可方便直放站系統(tǒng)的監(jiān)控數(shù)據(jù)傳輸。本文講述了一款基于射頻收發(fā)芯片CC1000的FSK數(shù)據(jù)通信系統(tǒng)的設計和實現(xiàn)。
2. 光模塊工作原理
直放站天線收到的上行信號經(jīng)過放大器將其調(diào)整到一定的電平,送入光發(fā)送端機,射頻光傳輸模塊(以下簡稱為光模塊)把上行信號和經(jīng)過FSK調(diào)制的監(jiān)控信號一起進行光調(diào)制,并通過光纖進行傳輸。在收端光接收機將光信號轉(zhuǎn)化成相應的電信號,送至基站。監(jiān)控信號通過濾波器選頻從上行信號中分離出來,再通過FSK解調(diào)還原成數(shù)字信號;同理,由基站來的下行信號,送至光模塊進行光調(diào)制,并通過光纖進行傳輸。在收端光接收機將光信號轉(zhuǎn)化成相應的電信號,該信號經(jīng)直放站放大器變?yōu)樗璧墓β孰娖叫盘,并通過雙工環(huán)型器由天線發(fā)射出去,從而構(gòu)成由光纖作為傳輸介質(zhì)的直放站系統(tǒng)。其結(jié)構(gòu)如圖1所示。
3. FSK 電路設計
3.1 FSK 技術(shù)
FSK即"頻移鍵控",它的英譯為"Frequency Shift Keying"。二進制移頻鍵控記為2FSK。
它是數(shù)據(jù)通信中使用較早的一種通信方式。由于這種調(diào)制解調(diào)方式容易實現(xiàn),抗噪聲和抗衰減性能較強,因此在中低速數(shù)據(jù)傳輸通信系統(tǒng)中得到了較為廣泛的應用。根據(jù)國際電報和電話咨詢委員會(ITU-T)的建議傳輸速率低于1200波特以下的設備一般采用FSK方式傳輸數(shù)據(jù)。在衰落信道(短波通信)中傳輸數(shù)據(jù)。
FSK調(diào)制信號的產(chǎn)生的工作原理是用載波的頻率變化來傳送數(shù)字消息。在2FSK中載波頻率隨著調(diào)制信號1和0而變化,1對應f 1,0對應f 2即:
其中: 1 w = 1 2π f , 2 w = 2 2π f 。
二進制里只有兩個數(shù)0和1,傳送1的時候用一種頻率,傳送0的時候用另一種頻率,這就是FSK的實質(zhì)。
3.2 硬件電路設計
在此設計中采用的是無線FSK收發(fā)芯片,但采用光纖傳輸?shù)姆绞剑驗楣饫w傳輸受外界影響小,并且在傳輸過程中光損小,傳輸距離遠遠大于無線傳輸距離。由于無線收發(fā)芯片的種類和數(shù)量比較多,選擇無線收發(fā)芯片時應考慮需要以下幾點因素:功耗、發(fā)射功率、接收靈敏度、收發(fā)芯片所需的外圍元件數(shù)量和芯片成本等。CC1000是基于ChipcON公司的SmartRF技術(shù)制造的可編程、半雙工超高頻單片收發(fā)器芯片, 它主要是為315、433、868和915MHz的ISM和SRD設備所設計,可以編程工作在300~1000MHz范圍之間的任一頻率上。同時其靈敏度可達-109dBm , 可編程輸出功率-20 ~10 dBm ,FSK調(diào)制數(shù)據(jù)率最高可達76.8kBaud ,可在2.7~3.3V低電源工作,具有250Hz步長可編程頻率能力,適用于跳頻協(xié)議。主要工作參數(shù)都能通過串行總線接口編程改變,使用非常靈活。
在此設計中在本系統(tǒng)中對CC1000 的性能要求如下:
① 調(diào)制速率:9.6Kbps② 編碼方式:NRZ 碼③ 傳輸模式:異步傳輸 UART 模式④ 頻率設置:發(fā)射中心頻率 433.916MHz,“1” 433.948MHz “0” 433.884MHz接收本征頻率 433.766 MHz⑤ 調(diào)制頻偏:±32KHz⑥ 載頻頻率穩(wěn)定度:±25ppm(即±10KHz)⑦ 接收靈敏度:≤-90dBmMCU與CC1000 的硬件接口電路如圖2 所示。MCU使用3 個輸出管腳用于接口(PDATA、PCLK、PALE),PDATA 必須是雙向管腳用來讀回數(shù)據(jù),另一個雙向管腳用于待發(fā)送的數(shù)據(jù)DIO 和接收數(shù)據(jù),提供數(shù)據(jù)定時的DCLK 應與微控器輸入端相連,本文中CC1000 采用異步傳輸UART 模式,DIO 用于數(shù)據(jù)輸入與MCU 串口TX 連接,DCLK 用于數(shù)據(jù)輸出,與MCU 串口RX 連接。其余管腳能用來監(jiān)視LOCK 信號在管腳CHP_OUT,當PLL 鎖定時該信號為邏輯高電平。當使用一個外接終端電阻時,RSSI(接收信號強度指示)電壓能通過A/D 測量出,可以檢測接收信號強度。在設計印制電路板時應注意:要求使用雙面PCB 板,地平面放在底層以減少射頻信號的輻射和串擾,接地管腳應使用單獨的過孔,盡量靠近封裝管腳接地,去耦電容也應盡量靠近電源腳放置,并通過單獨的過孔與接地層相連,外圍元件越小越好最好使用表面固定裝置。
4. 軟件設計
整體系統(tǒng)數(shù)據(jù)的發(fā)射和接收如框圖 3 所示。MCU 通過串口0 把上位機的數(shù)據(jù)存儲,組幀后,由串口1 傳給CC1000,通過射頻發(fā)射機傳出,遠端MCU 依據(jù)接收到的數(shù)據(jù),做出相應的處理,并重新組幀,傳給近端的上位機。
4.1 數(shù)據(jù)幀結(jié)構(gòu)
為了區(qū)分噪聲和保證數(shù)據(jù)的可靠性,數(shù)據(jù)幀的格式如下:
① 同步碼:這是一個連續(xù)的“0”和“1”(二進制)交替信號(按字節(jié),0x55),比特數(shù)由CC1000 中寄存器MODEM1 中的SETTLING[1:0]來設置,其對應關(guān)系如下:
這個信號的作用在于減少與真實的載波信號類似的信號的干擾,并實現(xiàn)接收端和發(fā)送端幀同步,CC1000 接收端只有正確接收到這個信號,并鎖定均值濾波器(LOCK_AVG_IN=1),后續(xù)信號才會有效。在此設計中SETTLING[1:0]為00,即11bit。
②前導碼:0xFF(即“1”持續(xù)高電平)。
③有效數(shù)據(jù):需要傳送的監(jiān)控數(shù)據(jù)。
④結(jié)束碼:0xFF(即“1”持續(xù)高電平)。
4.2 數(shù)據(jù)收發(fā)程序設計
在通信過程中 CC1000 具有3 種狀態(tài):IDLE(空閑)、RX(接收數(shù)據(jù))、TX(發(fā)送數(shù)據(jù))。整體上看,這是個具有3 種狀態(tài)的狀態(tài)機模型,狀態(tài)之間的相互轉(zhuǎn)換見圖4。由于CC1000 為半雙工通信模式,因而RX 和TX 兩個狀態(tài)具有互斥性。
串口數(shù)據(jù)的接收由中斷完成,串口0 收到數(shù)據(jù)觸發(fā)接收中斷,并將接收數(shù)據(jù)緩存到緩沖區(qū)Buffer0。串口1 接收中斷根據(jù)同步碼,前導碼和結(jié)束碼來判斷并緩存有效數(shù)據(jù),其流程見圖5。只有當接收端收到5 個同步碼之后,才可將接收數(shù)據(jù)保存到緩沖區(qū)內(nèi)。為了防止突發(fā)的亂碼,當接收的有效數(shù)據(jù)超過900 時,仍為收到結(jié)束碼,則判定此幀數(shù)據(jù)無效,因而在使用中應當避免數(shù)據(jù)幀長度過長。
數(shù)據(jù)的發(fā)送分為兩部分:CC1000 發(fā)送數(shù)據(jù)和向上位機發(fā)送數(shù)據(jù)。CC1000 發(fā)送數(shù)據(jù)的過程中應該考慮CC1000 收發(fā)的互斥性以及前導碼和結(jié)束碼的發(fā)送時間。CC1000 發(fā)送數(shù)據(jù)流程圖見圖6。程序中設置為每次發(fā)送三次前導碼和結(jié)束碼,因此在向上位機發(fā)送數(shù)據(jù)的過程中要剔除掉緩沖區(qū)中多余的前導碼和結(jié)束碼,實現(xiàn)數(shù)據(jù)的透明傳輸。
4.3 數(shù)據(jù)環(huán)形緩沖區(qū)
MCU 程序的重要部分為數(shù)據(jù)的存儲和轉(zhuǎn)發(fā)。緩沖區(qū)數(shù)據(jù)隊列示意圖如圖7 所示,可以把數(shù)組想象為一個環(huán)形,而不是直線形,采用這種方式,當從隊列中添加或刪除記錄項時,對首將持續(xù)沿著數(shù)組追逐到隊尾,因而可以無限制的前行,但是仍呆在一個限定的圓圈內(nèi)。
在不同的時間,隊列將占用數(shù)組的不同部分,但永遠都不用擔心會超過這個空間之外,除非數(shù)組被徹底的占滿,在這種情況下,稱為溢出。在本設計中采用*BufferHead 和*BufferTail跟蹤出隊(即數(shù)據(jù)的發(fā)送)和入隊(即數(shù)據(jù)的接收)的數(shù)據(jù),當兩個指針指向同一位置時,表示緩沖區(qū)空,即數(shù)據(jù)已發(fā)送完。
5. 結(jié) 論
FSK 通信的穩(wěn)定性是射頻光模塊的一個重要的性能指標,它直接影響到直放站工作的可靠性。此系統(tǒng)的測試方法如下圖8 和圖9 所示。測試中所用的光衰作用是模擬實際工程中,光纖的長度所產(chǎn)生的光損。測試方法1 要借助PC 機的兩個串口COM1 和COM2,通過PC機上的COM1 連續(xù)發(fā)送有規(guī)律的數(shù)據(jù)包,在另一端COM2 接收;同時COM2 發(fā)送數(shù)據(jù)包,COM1 接收。統(tǒng)計發(fā)送數(shù)據(jù)包和丟失數(shù)據(jù)包的數(shù)量,測試數(shù)據(jù)量不小于1000 幀,即可計算誤幀率。
測試方法2 和測試方法1 有所不同,方法2 只需要1 個PC 機串口,直接把光模塊2 的串口0 的RXD 和TXD 短接。這種方法比較簡單,而且具有更高的可靠性。
本系統(tǒng)可以實現(xiàn)在18dB光衰時,誤碼率≤10的負3次方,通信效率高和可靠性高的特點,并且已在實際中使用,取得了令人滿意的效果。