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