《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于MCU和nRF24L01的無線通信系統(tǒng)
基于MCU和nRF24L01的無線通信系統(tǒng)
摘要: 隨著微電子技術(shù)的迅速發(fā)展,高性能MCU廣泛地運(yùn)用在嵌入式系統(tǒng)中,,完成數(shù)據(jù)的采集,、分析、處理與通訊功能,。有線模式下的數(shù)據(jù)通訊系統(tǒng),由于受時空、環(huán)境等因素的制約,,不能完全滿足所有條件下任務(wù)的執(zhí)行,而通過無線數(shù)據(jù)傳輸方式代替有線數(shù)據(jù)傳輸,,則能很好地解決此類問題,。
Abstract:
Key words :

隨著微電子技術(shù)的迅速發(fā)展,高性能MCU廣泛地運(yùn)用在嵌入式系統(tǒng)中,,完成數(shù)據(jù)的采集,、分析、處理與通訊功能,。有線模式下的數(shù)據(jù)通訊系統(tǒng),,由于受時空、環(huán)境等因素的制約,,不能完全滿足所有條件下任務(wù)的執(zhí)行,,而通過無線數(shù)據(jù)傳輸方式代替有線數(shù)據(jù)傳輸,則能很好地解決此類問題。綜上論述,,文中提出一種基于高性能MCU和nRF24L01的網(wǎng)絡(luò)化無線通信系統(tǒng)的解決方案,,穩(wěn)定可靠地實現(xiàn)數(shù)據(jù)傳輸,滿足各種條件的需要,。

1 系統(tǒng)硬件設(shè)計

1.1 nRF24L01無線通訊模塊介紹

系統(tǒng)選用云佳科技的nRF24L01無線射頻收發(fā)模塊來實現(xiàn)子母機(jī)間的通訊,,它使用Nordic公司的nRF24L01芯片開發(fā)而成,是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片無線收發(fā)器芯片,,其具有如下性能特點:

(1)低工作電源電壓,,且范圍廣1.9~3.6 V,體積小巧,,能方便集成到各種電子器件,。

(2)極低的功耗。當(dāng)工作在發(fā)射模式下發(fā)射功率為-6 dBm時電流消耗為9 mA,,接收模式時為12.3 mA,。待機(jī)模式下電流消22μA,掉電模式電流消耗僅為900 nA,。

(3)無線速率達(dá)到2 Mbit·s-1,,SPI接口速率為0~8 Mbit·s-1,具自動應(yīng)答機(jī)制,,極大地降低丟包率,。

(4)擁有自動重發(fā)功能、地址及CRC校驗功能,。

(5)具有125個可選工作頻道,,擁有很短的頻道切換時間,可用于跳頻,。

nRF24L01引腳封裝如圖1所示,。


 

1.2 STC12L5608AD芯片簡介

STC12L5608AD型MCU是宏晶科技新一代低電壓增強(qiáng)型8051單片機(jī),該系列單片機(jī)具有如下特性:寬工作電壓(2.1~3.6 V),;具有1個時鐘/機(jī)器周期的高速性能,,比普通8051快8~12倍,可用低頻晶振,;自帶-8路10位AD轉(zhuǎn)換器等,;加密性強(qiáng),無法解密,;超強(qiáng)抗干擾,、高抗靜電、輕松過4 kV快速脈沖干擾(EFT測試),、寬溫度范圍(-40~85℃),;超低功耗,,正常工作模式2.7~7 mA,空閑模式1.8mA,,掉電模式功耗<0.1μA,;能在系統(tǒng)編程等。

1.3 硬件接口電路

nRF24L01通過SPI接口與外部單片機(jī)進(jìn)行數(shù)據(jù)交換,,CE作為片選端,它與CONFIG寄存器的PWR_UP和PRIM_RX位組合用于選擇芯片的工作方式,;CSN為芯片內(nèi)部SPI硬件接口的使能端,,低電平有效;SCK為SPI的時鐘輸入端,,MOSI為SPI接口的數(shù)據(jù)輸入端,,MISO為SPI接口的數(shù)據(jù)輸出端,IRQ為中斷請求端,,與單片機(jī)的外部中斷1相連,,當(dāng)nRF24L01產(chǎn)生中斷后IRQ將置低,單片機(jī)檢測到此中斷后通過程序得知其與nRF24L01無線射頻模塊的數(shù)據(jù)收發(fā)情況,。通過單片機(jī)與無線通訊模塊的硬件連接,,從而實現(xiàn)模式控制和數(shù)據(jù)交換。圖2給出兩模塊的硬件接口設(shè)計,。整個無線通訊系統(tǒng)由3個模塊組成,。


 

2 系統(tǒng)軟件設(shè)計

2.1 數(shù)據(jù)包處理方式

將nRF24L01配置成增強(qiáng)型ShockBurst模式,使得雙向鏈接協(xié)議執(zhí)行更為簡易有效,。發(fā)送方要求終端設(shè)備在接收數(shù)據(jù)后有應(yīng)答信號,,以便發(fā)送方檢測有無數(shù)據(jù)丟失。一旦數(shù)據(jù)丟失則通過重新發(fā)送功能將丟失的數(shù)據(jù)恢復(fù),。它可以同時控制應(yīng)答及重發(fā)功能而無需增加MCU工作量,。nR F24L01配置為增強(qiáng)型的ShockBurst發(fā)送模式下時,只要MCU有數(shù)據(jù)要發(fā)送,,nRF24L01就會啟動ShockBurst模式來發(fā)送數(shù)據(jù),。在發(fā)送完數(shù)據(jù)后nRF24L01轉(zhuǎn)到接收模式并等待終端的應(yīng)答信號。如未收到應(yīng)答信號,,nRF24L01將重發(fā)相同的數(shù)據(jù)包,,直到收到應(yīng)答信號或重發(fā)次數(shù)超過SETUP _RETR_ARC寄存器中設(shè)置的值為止。如果重發(fā)次數(shù)超過了設(shè)定值,,則產(chǎn)生MAX_RT中斷,。只要收到確認(rèn)信號,nRF24L01就認(rèn)為最后一包數(shù)據(jù)已經(jīng)發(fā)送成功,,把TX FIFO中的數(shù)據(jù)清除掉并產(chǎn)生TX_DS中斷,,IRQ引腳置高,。


 

nRF24L01在接收模式下可以接收6路不同通道的數(shù)據(jù),如圖3所示,。每個數(shù)據(jù)通道使用不同的地址,,但共用相同的頻道。即6個不同的nRF 24L01設(shè)置為發(fā)送模式后,,可以與同一個設(shè)置為接收模式的nRF24L01進(jìn)行通訊,,而設(shè)置為接收模式的nRF24L01可以對這6個發(fā)射端進(jìn)行識別。n RF24L01在確認(rèn)收到數(shù)據(jù)后記錄地址,,并以此地址為目標(biāo)地址發(fā)送應(yīng)答信號,。在發(fā)送端,數(shù)據(jù)通道0被用作接收應(yīng)答信號,。

2.2 系統(tǒng)軟件設(shè)計流程

圖4為子模塊和主模塊程序設(shè)計流程圖,,軟件開發(fā)環(huán)境為KeilC uVision3。


程序基本思路為子模塊配置為接收狀態(tài),,如成功接收到數(shù)據(jù)則進(jìn)行EEPROM子程序操作,,否則切換成發(fā)射模式,成功發(fā)送并接收到應(yīng)答信號后再變成接收模式,,進(jìn)入下一次接收發(fā)射循環(huán),;主模塊設(shè)置為接收數(shù)據(jù)信息狀態(tài),能與多路處于發(fā)射狀態(tài)的數(shù)據(jù)通道進(jìn)行通訊,,并從接收到的數(shù)據(jù)中判別數(shù)據(jù)通道口,;接收信息后自動回復(fù)應(yīng)答信號。通過切換接收發(fā)射狀態(tài)實現(xiàn)多點對單點的雙向無線數(shù)據(jù)通訊,。

2.2.1 nRF24L01初始化程序

nRF24L01初始化程序包括引腳初始化和中斷初始化,。引腳初始化使芯片工作在待機(jī)模式下(CE=0),時鐘設(shè)置SCK低電平,,片選不使能(CSN=1),,工作在串行輸入狀態(tài)(MOSI=0);中斷初始化則使能外部中斷(EX1=1),,低電平觸發(fā),。

2.2.2 nRF24L01配置接收/發(fā)射模式

對芯片內(nèi)部的特殊功能寄存器進(jìn)行初始化操作。

通過對CONFID配置設(shè)定其工作模式,,設(shè)置接收地址,,接收有效數(shù)據(jù)寬度、選擇射頻通道,、數(shù)據(jù)傳輸率,、發(fā)射功率等參數(shù)。配置完成后,,置高CE,,準(zhǔn)備接收數(shù)據(jù)包,,如表1所示。


 

2.2.3 單片機(jī)內(nèi)部EEPROM應(yīng)用子程序


單片機(jī)內(nèi)部EEPROM應(yīng)用子程序進(jìn)行扇區(qū)的擦除,、寫入以及讀出功能,,實現(xiàn)系統(tǒng)信息的讀取保存。


 

STC12L5608AD單片機(jī)內(nèi)部有8個扇區(qū),,每個扇區(qū)512 Byte,。在使用時,統(tǒng)一修改的數(shù)據(jù)放在同一個扇區(qū),。使用ISP/IAP功能,,所使用的特殊功能寄存器為ISP_DATA、ISP_ADDRH,、ISP_ADDRL、ISP_CMD,、ISP_TRIG,、ISP_CONTR。扇區(qū)寫入數(shù)據(jù)流程圖如圖5所示,,扇區(qū)擦除以及讀操作流程與之類似,。

3 結(jié)束語

介紹了利用高性能MCU和nRF24L01芯片設(shè)計的網(wǎng)絡(luò)化無線通訊系統(tǒng),說明了其軟硬件設(shè)計要點,。該系統(tǒng)已應(yīng)用于某故障監(jiān)測系統(tǒng)中,,系統(tǒng)成本低、體積小,、傳輸速率高,、具有良好的通用性和可靠性,可供無線數(shù)據(jù)傳輸系統(tǒng)參考,。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。