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