n R F24 LU 1+的U S B無線網絡系統設計
3.2 nRF24LU1+的無線模塊程序設計
nRF24LU1+使用具有內嵌的協議引擎(EnhancedShockBurst)2.4 GHz GFSK的RF收發器。EnhancedShockBurst具有自動包處理的特性,這使得實現可靠的雙向數據鏈接變得容易。數據包的傳輸是在兩個收發器之間進行的,其中一個作為主接收器(PRX),另一個作為主發送器(PTX)。每個數據包的傳輸都是由PTX發送數據包開始,而以PTX接收到PRX的應答包結束。在自動包傳輸處理工作時,nRF24LU1+提供了自動應答和重發數據的硬件機制,重發數據包的最大次數和第一次傳輸到下一次重傳之間的延時均可編程設置。
nRF24LU1+發送器在Enhanced ShockBurst情況下的工作流程如圖4所示。
通過把RECON寄存器的rfce位置高使發送器進入PTX模式。如果在TX的FIFO緩存區有數據包,則無線收發器進入TX模式并發送這個數據包。如果自動重新傳輸使能,狀態機檢查NO_ACK標志位是否被置位。如果被置位,RF收發器進入RX模式準備接收應答包。如果收到的應答包為空,則只有TX_DS(傳輸數據發出)中斷請求發生。如果應答包中包含載荷數據,則在收發器返回standby-I模式之前,TX_DS和RX_DR(接收數據準備)中斷請求同時發生。如果延時時間到了而收發器還沒有收到應答包,則收發器返回到standby-II模式。在自動重新傳輸時間沒到之前,一直保持在standby-II模式。如果重傳次數沒有達到設定值,則RF收發器進入TX模式并再一次重傳最后一次的數據包;否則,會發生最大重傳MAX_RT中斷請求,并返回到standby-I模式。如果RECON寄存器的rfce位為高且TX FIFO(先入先出數據緩存區)為空,則RF收發器進入standby-I模式。
由于nRF24LU1+的無線收發模塊有強大數據硬件收發機制,編寫程序比較簡單,只需在初始化程序中對相關寄存器進行設置就可進入數據的收發。發送數據時,把待發送的數據放入發送FIFO后,收發器會按照設置進行發送,發送的情況通過中斷來通知MCU,MCU根據具體的中斷請求執行相應的中斷服務程序。接收數據時,收發器會不斷地搜尋有效地址,當找到一個有效地址時,會處理剩下的數據包并通過CRC驗證數據包。如果這個包是有效的,包內的載荷數據將被放入RX FIFO中。
數據包的格式如下:
無線通信程序由兩部分組成:無線通信模塊的初始化程序和中斷服務程序。
初始化程序對工作模式、傳輸速率、無線通信的工作波段頻率、RF輸出功率、地址寄存器、數據包的有效數據長度、CRC的校驗長度和RF中斷寄存器等進行相應的設置。無線通信模塊對nRF24LU1+只占一個中斷源RFIRQ,具體是何種中斷可通過查詢STATUS寄存器中的TX_DS、RX_DR、MAX_RT位來獲得。中斷服務程序分為發送中斷服務程序、接收中斷服務程序和最大重傳中斷服務程序。
結 語
本文提出一種運用無線收發芯片nRF24LU1+組建的無線網絡系統。此網絡系統充分利用USB和無線收發模塊各自的優點實現了快速、便捷的數據傳輸,具有集成度高、體積小、保密性強、功耗低的特點。
評論