基于MCU和nRF24L01的無(wú)線通信系統(tǒng)設(shè)計(jì) - 全文
近年來(lái),隨著無(wú)線技術(shù)的快速發(fā)展,短距離無(wú)線數(shù)據(jù)傳輸技術(shù)已經(jīng)被廣泛應(yīng)用于日常生活中,逐漸形成一個(gè)巨大的新興產(chǎn)業(yè)。常用的無(wú)線數(shù)據(jù)傳輸技術(shù)主要有藍(lán)牙技術(shù)、Wi-Fi技術(shù)、IrDA技術(shù)、超寬帶技術(shù)等,而藍(lán)牙技術(shù)和Wi-Fi技術(shù)功耗較高,IrDA技術(shù)傳輸速率較低,超寬帶技術(shù)開發(fā)難度較高
隨著微電子技術(shù)的迅速發(fā)展,高性能MCU廣泛地運(yùn)用在嵌入式系統(tǒng)中,完成數(shù)據(jù)的采集、分析、處理與通訊功能。有線模式下的數(shù)據(jù)通訊系統(tǒng),由于受時(shí)空、環(huán)境等因素的制約,不能完全滿足所有條件下任務(wù)的執(zhí)行,而通過(guò)無(wú)線數(shù)據(jù)傳輸方式代替有線數(shù)據(jù)傳輸,則能很好地解決此類問(wèn)題。綜上論述,文中提出一種基于高性能MCU和nRF24L01的網(wǎng)絡(luò)化無(wú)線通信系統(tǒng)的解決方案,穩(wěn)定可靠地實(shí)現(xiàn)數(shù)據(jù)傳輸,滿足各種條件的需要。
無(wú)線通信主要包括微波通信和衛(wèi)星通信。微波是一種無(wú)線電波,它傳送的距離一般只有幾十千米。但微波的頻帶很寬,通信容量很大。微波通信每隔幾十千米要建一個(gè)微波中繼站。衛(wèi)星通信是利用通信衛(wèi)星作為中繼站在地面上兩個(gè)或多個(gè)地球站之間或移動(dòng)體之間建立微波通信聯(lián)系。
系統(tǒng)硬件設(shè)計(jì)
nRF24L01無(wú)線通訊模塊介紹
系統(tǒng)選用云佳科技的nRF24L01無(wú)線射頻收發(fā)模塊來(lái)實(shí)現(xiàn)子母機(jī)間的通訊,它使用Nordic公司的nRF24L01芯片開發(fā)而成,是一款工作在2.4~2.5 GHz世界通用ISM頻段的單片無(wú)線收發(fā)器芯片,其具有如下性能特點(diǎn):
(1)低工作電源電壓,且范圍廣1.9~3.6 V,體積小巧,能方便集成到各種電子器件。
(2)極低的功耗。當(dāng)工作在發(fā)射模式下發(fā)射功率為-6 dBm時(shí)電流消耗為9 mA,接收模式時(shí)為12.3 mA。待機(jī)模式下電流消22μA,掉電模式電流消耗僅為900 nA。
(3)無(wú)線速率達(dá)到2 Mbit·s-1,SPI接口速率為0~8 Mbit·s-1,具自動(dòng)應(yīng)答機(jī)制,極大地降低丟包率。
(4)擁有自動(dòng)重發(fā)功能、地址及CRC校驗(yàn)功能。
(5)具有125個(gè)可選工作頻道,擁有很短的頻道切換時(shí)間,可用于跳頻。
nRF24L01引腳封裝如圖1所示。
STC12L5608AD芯片簡(jiǎn)介
STC12L5608AD型MCU是宏晶科技新一代低電壓增強(qiáng)型8051單片機(jī),該系列單片機(jī)具有如下特性:寬工作電壓(2.1~3.6 V);具有1個(gè)時(shí)鐘/機(jī)器周期的高速性能,比普通8051快8~12倍,可用低頻晶振;自帶-8路10位AD轉(zhuǎn)換器等;加密性強(qiáng),無(wú)法解密;超強(qiáng)抗干擾、高抗靜電、輕松過(guò)4 kV快速脈沖干擾(EFT測(cè)試)、寬溫度范圍(-40~85℃);超低功耗,正常工作模式2.7~7 mA,空閑模式1.8mA,掉電模式功耗《0.1μA;能在系統(tǒng)編程等。
硬件接口電路
nRF24L01通過(guò)SPI接口與外部單片機(jī)進(jìn)行數(shù)據(jù)交換,CE作為片選端,它與CONFIG寄存器的PWR_UP和PRIM_RX位組合用于選擇芯片的工作方式;CSN為芯片內(nèi)部SPI硬件接口的使能端,低電平有效;SCK為SPI的時(shí)鐘輸入端,MOSI為SPI接口的數(shù)據(jù)輸入端,MISO為SPI接口的數(shù)據(jù)輸出端,IRQ為中斷請(qǐng)求端,與單片機(jī)的外部中斷1相連,當(dāng)nRF24L01產(chǎn)生中斷后IRQ將置低,單片機(jī)檢測(cè)到此中斷后通過(guò)程序得知其與nRF24L01無(wú)線射頻模塊的數(shù)據(jù)收發(fā)情況。通過(guò)單片機(jī)與無(wú)線通訊模塊的硬件連接,從而實(shí)現(xiàn)模式控制和數(shù)據(jù)交換。圖2給出兩模塊的硬件接口設(shè)計(jì)。整個(gè)無(wú)線通訊系統(tǒng)由3個(gè)模塊組成。
系統(tǒng)軟件設(shè)計(jì)
數(shù)據(jù)包處理方式
將nRF24L01配置成增強(qiáng)型ShockBurst模式,使得雙向鏈接協(xié)議執(zhí)行更為簡(jiǎn)易有效。發(fā)送方要求終端設(shè)備在接收數(shù)據(jù)后有應(yīng)答信號(hào),以便發(fā)送方檢測(cè)有無(wú)數(shù)據(jù)丟失。一旦數(shù)據(jù)丟失則通過(guò)重新發(fā)送功能將丟失的數(shù)據(jù)恢復(fù)。它可以同時(shí)控制應(yīng)答及重發(fā)功能而無(wú)需增加MCU工作量。nR F24L01配置為增強(qiáng)型的ShockBurst發(fā)送模式下時(shí),只要MCU有數(shù)據(jù)要發(fā)送,nRF24L01就會(huì)啟動(dòng)ShockBurst模式來(lái)發(fā)送數(shù)據(jù)。在發(fā)送完數(shù)據(jù)后nRF24L01轉(zhuǎn)到接收模式并等待終端的應(yīng)答信號(hào)。如未收到應(yīng)答信號(hào),nRF24L01將重發(fā)相同的數(shù)據(jù)包,直到收到應(yīng)答信號(hào)或重發(fā)次數(shù)超過(guò)SETUP _RETR_ARC寄存器中設(shè)置的值為止。如果重發(fā)次數(shù)超過(guò)了設(shè)定值,則產(chǎn)生MAX_RT中斷。只要收到確認(rèn)信號(hào),nRF24L01就認(rèn)為最后一包數(shù)據(jù)已經(jīng)發(fā)送成功,把TX FIFO中的數(shù)據(jù)清除掉并產(chǎn)生TX_DS中斷,IRQ引腳置高。
nRF24L01在接收模式下可以接收6路不同通道的數(shù)據(jù),如圖3所示。每個(gè)數(shù)據(jù)通道使用不同的地址,但共用相同的頻道。即6個(gè)不同的nRF 24L01設(shè)置為發(fā)送模式后,可以與同一個(gè)設(shè)置為接收模式的nRF24L01進(jìn)行通訊,而設(shè)置為接收模式的nRF24L01可以對(duì)這6個(gè)發(fā)射端進(jìn)行識(shí)別。n RF24L01在確認(rèn)收到數(shù)據(jù)后記錄地址,并以此地址為目標(biāo)地址發(fā)送應(yīng)答信號(hào)。在發(fā)送端,數(shù)據(jù)通道0被用作接收應(yīng)答信號(hào)。
系統(tǒng)軟件設(shè)計(jì)流程
圖4為子模塊和主模塊程序設(shè)計(jì)流程圖,軟件開發(fā)環(huán)境為KeilC uVision3。
程序基本思路為子模塊配置為接收狀態(tài),如成功接收到數(shù)據(jù)則進(jìn)行EEPROM子程序操作,否則切換成發(fā)射模式,成功發(fā)送并接收到應(yīng)答信號(hào)后再變成接收模式,進(jìn)入下一次接收發(fā)射循環(huán);主模塊設(shè)置為接收數(shù)據(jù)信息狀態(tài),能與多路處于發(fā)射狀態(tài)的數(shù)據(jù)通道進(jìn)行通訊,并從接收到的數(shù)據(jù)中判別數(shù)據(jù)通道口;接收信息后自動(dòng)回復(fù)應(yīng)答信號(hào)。通過(guò)切換接收發(fā)射狀態(tài)實(shí)現(xiàn)多點(diǎn)對(duì)單點(diǎn)的雙向無(wú)線數(shù)據(jù)通訊。
nRF24L01初始化程序
nRF24L01初始化程序包括引腳初始化和中斷初始化。引腳初始化使芯片工作在待機(jī)模式下(CE=0),時(shí)鐘設(shè)置SCK低電平,片選不使能(CSN=1),工作在串行輸入狀態(tài)(MOSI=0);中斷初始化則使能外部中斷(EX1=1),低電平觸發(fā)。
nRF24L01配置接收/發(fā)射模式
對(duì)芯片內(nèi)部的特殊功能寄存器進(jìn)行初始化操作。
通過(guò)對(duì)CONFID配置設(shè)定其工作模式,設(shè)置接收地址,接收有效數(shù)據(jù)寬度、選擇射頻通道、數(shù)據(jù)傳輸率、發(fā)射功率等參數(shù)。配置完成后,置高CE,準(zhǔn)備接收數(shù)據(jù)包,如表1所示。
單片機(jī)內(nèi)部EEPROM應(yīng)用子程序
單片機(jī)內(nèi)部EEPROM應(yīng)用子程序進(jìn)行扇區(qū)的擦除、寫入以及讀出功能,實(shí)現(xiàn)系統(tǒng)信息的讀取保存。
STC12L5608AD單片機(jī)內(nèi)部有8個(gè)扇區(qū),每個(gè)扇區(qū)512 Byte。在使用時(shí),統(tǒng)一修改的數(shù)據(jù)放在同一個(gè)扇區(qū)。使用ISP/IAP功能,所使用的特殊功能寄存器為ISP_DATA、ISP_ADDRH、ISP_ADDRL、ISP_CMD、ISP_TRIG、ISP_CONTR。扇區(qū)寫入數(shù)據(jù)流程圖如圖5所示,扇區(qū)擦除以及讀操作流程與之類似。
Zigbee無(wú)線通信跟基于nRF24l01模塊的無(wú)線通信有什么區(qū)別
無(wú)線通信可以使用某種通信協(xié)議如zigbee或者藍(lán)牙什么的,也可以不使用這些規(guī)范的通信協(xié)議。 Zigbee無(wú)線通信大多是使用集成這種協(xié)議的RF芯片實(shí)現(xiàn)的; 基于nRF24l01模塊的無(wú)線通信;由于nRF24l01射頻芯片自身沒(méi)有集成任何協(xié)議,所以基于nRF24l01模塊的無(wú)線通信需要自定義通信協(xié)議來(lái)使用,控制的方式也有很多種。當(dāng)然也可以使用nRF24l01模塊,同時(shí)編程實(shí)現(xiàn)zigbee協(xié)議來(lái)控制它,實(shí)現(xiàn)一套基于nRF24l01模塊的Zigbee無(wú)線通信系統(tǒng)。
- 第 1 頁(yè):基于MCU和nRF24L01的無(wú)線通信系統(tǒng)設(shè)計(jì)
- 第 2 頁(yè):STC12L5608AD芯片簡(jiǎn)介
- 第 3 頁(yè):系統(tǒng)軟件設(shè)計(jì)流程
- 第 4 頁(yè):EEPROM應(yīng)用子程序
本文導(dǎo)航
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [移動(dòng)通信] 5G 3GPP全球頻譜介紹 2023-10-24
- [電子說(shuō)] PY32F002A系列單片機(jī):高性價(jià)比、低功耗,滿足多樣化應(yīng)用需求 2023-10-24
- [電子說(shuō)] HOLTEK新推出BH66F2475連續(xù)血糖監(jiān)測(cè)MCU 2023-10-24
- [電子說(shuō)] STM32基礎(chǔ)知識(shí):定時(shí)器的定時(shí)計(jì)數(shù)功能 2023-10-24
- [電子說(shuō)] HASH算法加密芯片的工作原理及其在STM32 MCU上的應(yīng)用 2023-10-24
- [PCB設(shè)計(jì)] PCB板第一次上電會(huì)發(fā)生什么事情? 2023-10-24
- [處理器/DSP] 國(guó)內(nèi)外龍頭RISC-V布局情況分析 2023-10-24
- [電子說(shuō)] 士蘭微電子多款家電及工具類電機(jī)控制解決方案 2023-10-24
( 發(fā)表人:李倩 )