基于Si4432A的無線射頻收發系統設計
本文設計了一種基于無線收發芯片Si4432和C8051F930單片機的無線射頻收發系統。該系統由發送模塊和接收模塊組成。發送模塊主要將要發送的數據經C8051F930處理后,通過Si4432發送出去;在接收模塊中,Si4432則將數據正確接收后通過液晶顯示出來,從而實現短距離的無線通信。該系統實現了低功耗、小體積、高靈敏度條件下的高質量無線數據傳輸。
1? 無線收發芯片Si4432
Si4432芯片是Silicon Labs公司推出的一款高集成度、低功耗、多頻段的EZRadioPRO系列無線收發芯片。其工作電壓為1.9~3.6 V,20引腳QFN封裝(4 mm×4 mm),可工作在315/433/868/915 MHz四個頻段;內部集成分集式天線、功率放大器、喚醒定時器、數字調制解調器、64字節的發送和接收數據FIFO,以及可配置的GPIO等。Si4432在使用時所需的外部元件很少,1個30 MHz的晶振、幾個電容和電感就可組成一個高可靠性的收發系統,設計簡單,且成本低。
Si4432的接收靈敏度達到-117 dB,可提供極佳的鏈路質量,在擴大傳輸范圍的同時將功耗降至最低;最小濾波帶寬達8 kHz,具有極佳的頻道選擇性;在240~960 MHz頻段內,不加功率放大器時的最大輸出功率就可達+20dBm,設計良好時收發距離最遠可達2 km。Si4432可適用于無線數據通信、無線遙控系統、小型無線網絡、小型無線數據終端、無線抄表、門禁系統、無線遙感監測、水文氣象監控、機器人控制、無線RS485/RS232數據通信等諸多領域。
2 無線射頻收發系統設計
2.1? 系統總體方案
無線射頻收發系統的結構框圖如圖1所示,由C8051F930單片機控制Si4432實現無線數據的收發。發送模塊中的C8051F930將數據傳送給Si4432進行編碼處理,并以特定的格式經天線發送給接收模塊。接收模塊對接收到的射頻信號放大、解調之后,再將數據送給主控制器C8051F930進行相應的處理,如送液晶顯示等。系統提供了按鍵和液晶(OCM12864-9)等人機交互界面,還留有RS232接口可以實現與PC機通信。
2.2 系統硬件設計
主控芯片選用Silicon Labs公司推出的單片機C8051F930。C8051F930有4 KB的RAM和64 KB的Flash,片上集成了豐富的外圍模塊(包括串口、SPI、10位A/D轉換器等),很好地滿足了本系統對微控制器的要求;支持快速喚醒和最低0.9 V的供電;有多種電源管理模式(如正常模式、空閑模式、休眠模式等),內部集成的2個內建欠壓檢測器分別適用于休眠模式和正常模式,典型休眠模式下電流僅為50 nA。C8051F930包含1個高效率直流升壓轉換器,最多提供65 mW給內部微控制器和其他元器件,為了減少正常模式下的電池耗電,C8051F930的省電架構能將操作模式下的電流減小到170μA/MHz。
C8051F930可以通過內置增強型SPI對Si4432的內部寄存器進行讀寫操作,靈活配置各項參數。通過SPI接口完成對Si4432的初始化配置、讀寫數據、訪問FIFO等操作。使用4線SPI,即MOSI、MISO、SCK和nSEL。MOSI用于從C8051F930到Si4432的串行數據傳輸;MISO用于從Si4432到C8051F930的串行數據傳輸;SCK用于同步C8051F930和Si4432之間在MOSI和MISO線上的串行數據傳輸;nSEL作為片選信號,只有片選信號為低電平時,對Si4432的操作才有效。硬件設計原理圖如圖2所示。
Si4432的13~16腳是標準的SPI接口,17腳(nIRQ)是中斷狀態輸出引腳。當FIFO溢出、有有效的數據包發送或接收、CRC錯誤、檢測到前導位和同步字、上電復位等情況發生,且相應的中斷被使能時,17腳都會產生一個低電平以通知C8051F930有中斷產生。20腳(SDN)決定了Si4432芯片的工作狀態。當SDN接地(SDN=0)時,芯片處于常規工作模式;接高電平(SDN=1)時,芯片處于掉電模式。掉電模式下寄存器中的內容會丟失,且不允許SPI訪問,但芯片的電流損耗只有10 nA,功耗很低,因此適合要求極低功耗的應用。在連接到電源后,在SDN的下降沿上電復位,根據指令轉換到其他工作模式。
為了達到較好的通信效果,Si4432的接收低噪聲放大器匹配電路和發射功率放大器匹配電路的阻容參數,應嚴格按照數據手冊提供的參數選型。前端的分集式電路采用SKY13267,其V1腳和V2腳分別連接Si4432的GPIO1和GPIO2。通過這款交叉開關實現分集式天線發送和接收通道的自動切換。
2.3 系統軟件設計
軟件編程采用模塊化設計思想,系統中各主要功能模塊均編成獨立的函數由主程序調用。功能模塊包括:初始化程序(包括初始化C8051F930、SPI、Si4432),無線發送程序,無線接收程序等。無線發送程序負責寫入數據載荷,并根據通信協議為數據載荷加上前導碼、同步字、數據載荷長度及CRC校驗字節,形成數據包將其發送出去;無線接收程序負責接收并檢驗數據包中的CRC字節,以確保接收到的數據的正確性。
無線收發模塊之間的通信是以數據包的形式發送的,本系統定義的數據包格式如下:
其中,Preamble(前導碼)是一連串的10101010,其數量為8n位,n的大小由用戶編程決定。數據包在傳輸過程中會在每個包的前面加上可設置長度的前導碼;接收端為了識別幀的到來,需要前導碼進行幀同步,從而確定收發系統之間何時發送和接收數據。SyncWord(同步字)在前導碼之后,要用設定好的同步字來作為同步模式的標志碼。本系統設定的同步字為2個字節,同步字內容為0x2DD4,接收端在檢測到同步字后才開始接收數據。Packet Length是數據載荷長度。PAYLOAD(有效數據載荷)是用戶所發送的數據。CRC(CRC校驗和)由內置CRC校檢。Si4432內部集成有調制/解調、編碼/解碼等功能,從而Prearnble、SyncWord、Packet Length和CRC都是硬件自動加上去的,用戶只需設定數據包的組成結構和部分結構的具體內容(如前導碼和同步字)。
本文以半雙工通信為例,介紹通信的實現過程。編程環境為Silabs IDE V3.61,并在該編譯環境下測試通過。Silabs IDE集成了源代碼編輯、程序源代碼級調試程序和在系統Flash編程器。同時支持第三方編譯器和匯編器的使用,
(1)初始化程序
初始化程序包括C8051F930的初始化,SPI的初始化,以及Si4432的關于無線收發頻率、工作模式、發射速率等內部寄存器的初始化配置。
系統上電后,C8051F930處于默認狀態,根據系統功能需求重新進行初始化配置。C8051F930的數字交叉開關允許將內部數字系統資源映射到端口I/O引腳,可通過設置交叉開關控制寄存器,將片內資源配置到具體的端口I/O引腳上。這一特性允許用戶根據自己的特定應用選擇通用端口I/O和所需數字資源的組合,提高了應用的靈活性。本系統中,主要配置了SPI通信的4線,液晶LCD的數據線接口、控制線接口和RS232串口數據輸入/輸出等。
初始化SPI時,可以通過對SPIlCFG寄存器和SPIlCN寄存器的配置來選擇具體使用規則。這里,選擇主SPI,4線模式,時鐘極性為低電平,在時鐘上升沿時對數據采樣;通過配置SPIlCKR寄存器,可將同步時鐘頻率設為晶振頻率的1/4。
上電之初,Si4432也處于默認狀態,需要進行配置才能工作。Si4432有70多個寄存器需要配置,它們決定了Si4432的工作模式,具體配置可以參考Si4432的數據手冊。Si4432的初始化是一個重要的部分,配置的恰當與否對系統最終的通信效果有很大的影響。主控制器C8051F930通過SPI配置Si4432的1ch、1dh等寄存器,寫入相應的初始化RF控制字(主要是頻率、傳輸速度、傳輸方式等);通過配置33h、34h等寄存器來設置包的結構、前導碼長度、同步字內容等。本系統采用同步傳輸模式,以0x2DD4作為同步模式的標志碼,傳輸完同步字后才開始傳輸數據載荷。每次發送數據必須以同步字0x2DD4作為發送數據的同步標志,接收端在檢測到同步字后才開始接收數據。
(2)無線發送程序
無線發送程序流程如圖3所示。完成C8051F930、SPI和Si4432的初始化后,配置寄存器寫入相應的初始化RF控制字。接下來,通過配置Si4432的寄存器3eh來設置包的長度,通過SPI連續寫寄存器7fh,往TX FIFO里寫入需要發送的數據。然后打開“發送完中斷允許”標志,將其他中斷都禁止。當有數據包發送完時,引腳nIRQ會被拉低以產生一個低電平從而通知C8051F930數據包已發送完畢。完成中斷使能后,使能發送功能,數據開始發送。等待nIRQ引腳因中斷產生而使電平拉低,當nIRQ引腳變為低時讀取中斷狀態并拉高nIRQ,否則繼續等待。如果數據發送成功,指示燈會變亮。一次數據發送成功后,進入下一次數據循環發送狀態。
(3)無線接收程序
無線接收程序流程如圖4所示。
程序完成C8051F930、SPI接口和Si4432的初始化后,配置寄存器寫入相應的初始化RF控制字。通過訪問寄存器7fh從RX FIFO中讀取接收到的數據。相應的控制字設置好之后,若引腳nIRQ變成低電平,則表示Si4432準備好接收數據。完成這些初始化配置后,通過寄存器4bh讀取包長度信息。
然后,打開“有效包中斷”和“同步字檢測中斷”,將其他中斷都禁止。引腳nlRQ用來檢測是否有有效包被檢測到,若引腳nIRQ變為低電平,則表示有有效的數據包被檢測到。本系統用0x2DD4作為同步模式的標志碼,接收模塊通過檢測這個同步字來同步接收數據。
最后,使能接收功能,數據開始接收。等待nIRQ引腳因中斷產生而使電平拉低,讀取中斷標志位復位nlRQ引腳,使nIRQ恢復至初始的高電平狀態以準備下一次中斷觸發的檢測。通過SPI讀取RX FIFO中的數據,將數據送至液晶OCM12864-9顯示,之后進入下一次數據接收狀態。
3 PCB設計的注意事項
PCB設計對整個系統的性能影響很大。以下是設計Si4432的PCB時需要注意的地方:
①為了消除走線問的感性效應,應在PCB上空余的地方盡量多布置一些過孔。為了達到較好的射頻通信效果,應對整個PCB都覆地銅。當提供了一個較好的RF地之后,TX/RX區域的對地敷銅區有助于減少甚至避免輻射干擾。
②電源接入端要添加去耦電容,且盡量靠近Si4432芯片。濾波電容也應該盡量靠近相應引腳,這樣可以得到更好的濾波性能。
③Si4432的外圍元件很少,應盡量使用體積小的0402封裝貼片器件。其中,電感屬于關鍵器件,需選用高精度電感。
④Si4432的扼流電感L1應盡量靠近Tx引腳;并聯在RXn和RXp上的電感L2在PCB平面上應與L1垂直布局,Tx通道上的電感L1、L3、L4、L5的方向需保證互相垂直以減少耦合;Tx通道和RXn/p通道之間未布線的區域應以接地的覆銅隔離開來,Tx通道匹配電路的布線區應盡可能不要占用太大的板上區域。
⑤晶振的選擇參照以下參數:等效串聯電阻是60 Ω,負載電容是12 pF,頻率準確度是±20×10-6。讓晶振與芯片的晶振接入引腳盡量靠近,并用地線把時鐘區隔離起來。
⑥設計PCB時,QFN封裝的Si4432芯片底部接地。在Si4432芯片底部打9個12 mil(1000 mil=25.4 mm)大小的接地過孔,以確保良好的接地和散熱能力,增強通信可靠性。
⑦板上的走線盡可能不要經過Tx/RXn/p區域,以防止匹配網絡的耦合效應。
4系統測試與分析
為驗證本無線射頻收發系統設計的可靠性,進行了7組“發射模塊—接收模塊”通信實驗。在空曠地通信距離約為1 500 m時7組“發射模塊—接收模塊”分別工作在430.50 MHz、431.50 MHz、432.50 MHz等7個中心頻率上,帶寬均取112.8 kHz,頻率偏移取±25 kHz,發送4 000個數據包,實驗結果如表1所列。
從表1中可以看出,在傳輸速率較低時,誤碼率為0;在傳輸速率為100 kbps(或以上)時,有一定的誤碼,但誤碼率低于0.075%。因此,該無線射頻收發系統具有傳輸距離遠、穿墻能力強、通信誤碼率低的特點。
結? 語
本系統完全可以擴充為一個網絡系統,形成一個無線網絡,以應用到現場控制或測控系統中。本文所設計的無線射頻收發系統工作可靠、穩定,具有很好的通用性,稍作改動就可以應用到小區傳呼、工業數據采集、生物信號采集、無線遙控等其他一些短距離無線通信領域,具有較高的市場應用價值,為無線數據傳輸提供了一個很好的解決方案。
評論