999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于nRF24L01芯片的近程無線通信系統設計

2014-08-29 17:41:21李賀程祥曾令國
現代電子技術 2014年15期
關鍵詞:系統設計

李賀+程祥+曾令國

摘 要: 介紹一種基于STC89C52單片機﹑STM32系列MCU和無線射頻收發芯片nRF24L01的無線通信系統設計,描述了nRF24L01的主要引腳特性﹑具體應用﹑SPI指令,詳細闡述了在Enhanced ShockBurst模式下的配置方法,同時給出了根據nRF24L01的SPI時序用通用IO口模擬SPI接口和配置STM32系列MCU硬件SPI接口的詳細說明。

關鍵詞: nRF24L01; STM32; STC89C52; Enhanced ShockBurst模式; SPI指令

中圖分類號: TN919?34 文獻標識碼: A 文章編號: 1004?373X(2014)15?0032?03

Design for short?range wireless communication system based on chip nRF24L01

LI He, CHENG Xiang, ZENG Ling?guo

(School of Mechanical Engineering, Shandong University of Technology, Zibo 250200, China)

Abstract: Design for a wireless communication system based on STC89C52, MCU in STM32F103 series and wireless RF transcieving chip nRF24L01 is introduced in this paper. The main pin characteristics, concrete applications and SPI instructions are described. The configuration method in Enhanced ShockBurst mode is elaborated. The metnods to simulate SPI by using the general IO interface according to SPI time sequence of nRF24L01and configure STM32 hardware SPI are given.

Keywords: nRF24L01; STM32; STC89C52; Enhanced ShockBurst mode; SPI instruction

0 引 言

在有線數據通信系統中,數據的傳輸需要依賴于電纜,布線復雜,成本高,工作量大,操作不方便,采用無線數據通信方式可以克服以上缺點。nRF24L01是Nordic公司推出的一款工作在2.4~2.48 GHz ISM頻段的單片無線射頻收發器件,數據傳輸速率可達到2 Mb/s,內置頻率發生器﹑Enhanced ShockBurst模式控制器﹑功率放大器等,只需要少量的外圍器件就可以組成射頻收發電路[1]。nRF24L01操作簡單,用戶只需要通過它的一個標準SPI接口和規定的SPI配置字就可以方便地實現對它的控制。

1 Enhanced ShockBurst模式工作原理

nRF24L01被設置為接收模式時,可以同時接收6路不同數據通道的數據,每個通道都有各自的地址但6路通道采用相同的頻率[2]。也就是說,配置為接收模式的nRF24L01可以同時接收6個不同的nRF24L01發送的數據,接收端每個通道的地址要與相應發送端TX_ADDR內容相同。每一路通道都可以被設置為Enhanced ShockBurst模式,成功接收數據后記錄地址并以此地址作為目標地址自動發送應答信號。

nRF24L01被設置為Enhanced ShockBurst發送模式時,數據發送完畢后會自動跳轉到接收模式使用數據通道0等待接收端的應答信號,若接收到應答信號,則將TX_DS標志位硬件置高,表示數據發送完成并產生中斷,此時需要向STATUS寄存器的TX_DS位以軟件方式寫1,清除中斷標志;

若未接收到應答信號將繼續發送數據,直到發送數據次數達到軟件設置的最大重發次數后,nRF24L01會將MAX_RT位硬件置高,產生最大重發次數中斷[3]。這種數據處理模式使得開發人員無需單獨處理雙向鏈接協議,編程方便。

2 SPI指令

外部MCU對nRF24L01所有寄存器的訪問都是通過SPI指令完成的,一條SPI指令包括命令字和數據字節,每一條SPI指令的執行都必須伴隨片選信號CSN由高電平到低電平的突變,同時STATUS寄存器的內容將通過MISO引腳串行移出,在CSN保持為低電平時完成數據字節的寫入或讀取。

nRF24L01是通過一個SPI接口與MCU相連的,對于沒有硬件SPI接口的控制器,需要使用通用IO口模擬[3]。這里給出了用51單片機IO口模擬SPI對nRF24L01的數據讀寫函數。函數是根據nRF24L01的SPI時序編寫的。

圖1和圖2給出了nRF24L01的SPI讀寫時序,在每個時鐘脈沖的上升沿完成一個數據位的存取,循環8次后完成一個字節的存取。第一個送入nRF24L01的字節是命令字,通過MOSI串行移入,高位在前低位在后,同時STATUS寄存器內容通過MISO串行移出[4],隨后分別是數據字節的寫入和讀出。以讀數據為例,讀寄存器命令寫入nRF24L01后,MCU可以向MOSI寫任意字節即可從MISO讀出相應寄存器的內容。

uchar Spi_RW(uchar byte)

{

uchar i;

for(i=0;i<8;i++)

{

MOSI=(byte&0x80);

byte=byte<<1;

SCK=1;

byte=byte|MISO;

SCK=0;

}

return byte;

}

3 系統設計

本文設計的系統流程圖如圖3所示。

圖3 軟件流程圖

初始化STC89C52并將nRF24L01初始化為Enhanced ShockBurst發送模式,單片機上電后開始發送數據,若產生TX_DS中斷則數據發送成功并繼續發送數據;若產生MAX中斷則數據超過最大重發次數,清空FIFO寄存器重新發送數據[5]。

初始化STM32F103,將nRF24L01初始化為Enhanced ShockBurst接收模式,等待接收數據,接收到數據后產生中斷,進入中斷服務程序,判斷TX_DS位是否置1,若置1則清除中斷標志并讀取數據,將讀取到的數據通過串口發送給上位機;否則清除中斷標志后繼續等待接收數據。下面給出對nRF24L01的具體操作方法:

void NRF24L01_Init(u8 model)

{

SPI_CE_L(); //CE引腳置低,進入待機模式

Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); //寫RX節點地址

Write_Reg(NRF_WRITE_REG+EN_AA,0x01);

//使能通道0的自動應答

Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址

Write_Reg(NRF_WRITE_REG+RF_CH,40); //設置RF通道為CHANAL

Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);

//設置TX發射參數,0 dB增益,2 Mb/s,低噪聲增益開啟

if(model==RXMODE)

//進入接收模式

{

Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH); //選擇通道0的有效數據寬度

Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f);

// IRQ收發完成中斷開啟,16位CRC校驗,接收模式

}

else if(model==TXMODE) //進入發送模式

{

Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);

//設置自動重發間隔時間:500 μs;最大自動重發次數:10次

Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //寫TX節點地址

Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);

// IRQ收發完成中斷開啟,16位CRC校驗,發送模式

}

這是nRF24L01的初始化函數,根據需要選擇工作在接收模式還是發射模式。本文中nRF24L01采用數據處理方式是Enhanced ShockBurst模式,所以必須使能數據通道的自動應答功能并設置重發間隔時間和最大重發次數。發射端和中斷在配置工作通道頻率﹑發射功率和數據傳輸速率時必須完全相同[3]。

uchar Write_Reg(uchar reg, uchar value)

{

uchar status;

SPI_CSN_L(); /*選通SPI接口*/

status = Spi_RW(reg);

/*寫寄存器地址同時讀取狀態寄存器內容*/

Spi_RW(value); /*寫數據*/

SPI_CSN_H(); /*禁止該SPI接口*/

return status; /*返回狀態寄存器內容*/

}

這個函數用于向地址為reg的寄存器中寫入一個字節的數據value并返回狀態寄存器內容,實際上reg是由寫寄存器指令0x20與寄存器地址共同組成的。

ucharRead_Reg(uint8_t reg)

{

uchar reg_val;

SPI_CSN_L(); /*選通SPI接口*/

Spi_RW(reg); /*寫寄存器地址*/

reg_val = Spi_RW(0); /*讀取該寄存器返回數據*/

SPI_CSN_H(); /*禁止該SPI接口*/

return reg_val;

}

這個函數用于從地址為reg的寄存器中讀出一個字節的數據reg_val,實際上reg是由讀寄存器指令0x00與寄存器地址共同組成的。

uchar Write_Buf(uchar reg, uchar*pBuf, uchar count)

{

uint8_t i;

uint8_t status;

SPI_CSN_L(); /*選通SPI接口*/

status = Spi_RW(reg); /*寫寄存器地址*/

for(i=0; i

{

Spi_RW(pBuf[i]); /*寫數據*/

}

SPI_CSN_H(); /*禁止該SPI接口*/

return status;

}

這個函數的作用是向地址為reg的寄存器中寫入大小為count的數組,數組的首地址為pBuf,需要注意的是,當讀寫多字節寄存器時,首先讀寫低字節再讀寫高字節。從寄存器讀取多字節函數實現與此類似,本文不再贅述。

經驗證,在上位機串口通信助手中成功顯示所發數據,本系統可行。

4 結 語

本文介紹了nRF24L01芯片在Enhanced ShockBurst數據處理模式下的工作原理,詳細介紹了如何根據它的SPI時序模擬SPI接口。設計了一種基于STM32,STC89C52MCU和nRF24L01芯片的近距離無線通信系統,經調試,STM32終端成功接收數據并通過串口成功地將數據發送給上位機。可以根據需要(有無SPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,nRF24L01的工作電壓是1.9~3.6 V,51單片機的[VCC]是5 V,因此需要電平轉換,因設計簡單,本文沒有詳細介紹。

注:本文通訊作者為程祥。

參考文獻

[1] 時志云,蓋建平,王代華,等.新型高速無線射頻器件nRF24L01及其應用[J].國外電子元器件,2007(8):42?44.

[2] Nordic Semiconductor. nRF24L01 datasheet [R]. [S.l.]: Nordic Semiconductor, 2009.

[3] 朱慧彥,林林.基于MCU和nRF24L01的無線通信系統設計[J].電子科技,2012(4):81?83.

[4] 劉靖,陳在平,李其林.基于nRF24L01無線數字傳輸系統[J].天津理工大學學報,2007(3):38?40.

[5] 莢慶,王代華,張志杰.基于nRF24L01的無線數據傳輸系統[J].現代電子技術,2008,31(3):68?70.

[6] 盧明,劉黎輝.基于nRF24L01的數控機床無線手輪設計[J].現代電子技術,2013,36(7):103?106.

status = Spi_RW(reg); /*寫寄存器地址*/

for(i=0; i

{

Spi_RW(pBuf[i]); /*寫數據*/

}

SPI_CSN_H(); /*禁止該SPI接口*/

return status;

}

這個函數的作用是向地址為reg的寄存器中寫入大小為count的數組,數組的首地址為pBuf,需要注意的是,當讀寫多字節寄存器時,首先讀寫低字節再讀寫高字節。從寄存器讀取多字節函數實現與此類似,本文不再贅述。

經驗證,在上位機串口通信助手中成功顯示所發數據,本系統可行。

4 結 語

本文介紹了nRF24L01芯片在Enhanced ShockBurst數據處理模式下的工作原理,詳細介紹了如何根據它的SPI時序模擬SPI接口。設計了一種基于STM32,STC89C52MCU和nRF24L01芯片的近距離無線通信系統,經調試,STM32終端成功接收數據并通過串口成功地將數據發送給上位機。可以根據需要(有無SPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,nRF24L01的工作電壓是1.9~3.6 V,51單片機的[VCC]是5 V,因此需要電平轉換,因設計簡單,本文沒有詳細介紹。

注:本文通訊作者為程祥。

參考文獻

[1] 時志云,蓋建平,王代華,等.新型高速無線射頻器件nRF24L01及其應用[J].國外電子元器件,2007(8):42?44.

[2] Nordic Semiconductor. nRF24L01 datasheet [R]. [S.l.]: Nordic Semiconductor, 2009.

[3] 朱慧彥,林林.基于MCU和nRF24L01的無線通信系統設計[J].電子科技,2012(4):81?83.

[4] 劉靖,陳在平,李其林.基于nRF24L01無線數字傳輸系統[J].天津理工大學學報,2007(3):38?40.

[5] 莢慶,王代華,張志杰.基于nRF24L01的無線數據傳輸系統[J].現代電子技術,2008,31(3):68?70.

[6] 盧明,劉黎輝.基于nRF24L01的數控機床無線手輪設計[J].現代電子技術,2013,36(7):103?106.

status = Spi_RW(reg); /*寫寄存器地址*/

for(i=0; i

{

Spi_RW(pBuf[i]); /*寫數據*/

}

SPI_CSN_H(); /*禁止該SPI接口*/

return status;

}

這個函數的作用是向地址為reg的寄存器中寫入大小為count的數組,數組的首地址為pBuf,需要注意的是,當讀寫多字節寄存器時,首先讀寫低字節再讀寫高字節。從寄存器讀取多字節函數實現與此類似,本文不再贅述。

經驗證,在上位機串口通信助手中成功顯示所發數據,本系統可行。

4 結 語

本文介紹了nRF24L01芯片在Enhanced ShockBurst數據處理模式下的工作原理,詳細介紹了如何根據它的SPI時序模擬SPI接口。設計了一種基于STM32,STC89C52MCU和nRF24L01芯片的近距離無線通信系統,經調試,STM32終端成功接收數據并通過串口成功地將數據發送給上位機。可以根據需要(有無SPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,nRF24L01的工作電壓是1.9~3.6 V,51單片機的[VCC]是5 V,因此需要電平轉換,因設計簡單,本文沒有詳細介紹。

注:本文通訊作者為程祥。

參考文獻

[1] 時志云,蓋建平,王代華,等.新型高速無線射頻器件nRF24L01及其應用[J].國外電子元器件,2007(8):42?44.

[2] Nordic Semiconductor. nRF24L01 datasheet [R]. [S.l.]: Nordic Semiconductor, 2009.

[3] 朱慧彥,林林.基于MCU和nRF24L01的無線通信系統設計[J].電子科技,2012(4):81?83.

[4] 劉靖,陳在平,李其林.基于nRF24L01無線數字傳輸系統[J].天津理工大學學報,2007(3):38?40.

[5] 莢慶,王代華,張志杰.基于nRF24L01的無線數據傳輸系統[J].現代電子技術,2008,31(3):68?70.

[6] 盧明,劉黎輝.基于nRF24L01的數控機床無線手輪設計[J].現代電子技術,2013,36(7):103?106.

猜你喜歡
系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 国产一区二区三区夜色 | 久久香蕉欧美精品| 亚洲人成在线精品| 激情乱人伦| 国产精品成人免费综合| 成人免费一区二区三区| 呦女精品网站| 国产精品不卡片视频免费观看| 这里只有精品在线| 午夜日b视频| 99久久精彩视频| 热久久这里是精品6免费观看| a毛片基地免费大全| 国产在线视频二区| 欧美日韩国产精品va| 亚洲天堂视频在线免费观看| 精品无码国产一区二区三区AV| 四虎成人在线视频| 97青草最新免费精品视频| www.精品国产| 国产精品成人AⅤ在线一二三四| 中文字幕无码av专区久久| 男女性午夜福利网站| 成年人国产视频| a级毛片毛片免费观看久潮| 国产波多野结衣中文在线播放 | AV不卡无码免费一区二区三区| 强奷白丝美女在线观看 | 国产美女无遮挡免费视频| 国产小视频网站| 国产极品粉嫩小泬免费看| 91久久天天躁狠狠躁夜夜| 国产成人亚洲综合a∨婷婷| 色综合天天操| 亚洲天堂免费在线视频| 免费不卡在线观看av| 91精品专区国产盗摄| 色婷婷天天综合在线| 久久视精品| 试看120秒男女啪啪免费| 国产成人一区免费观看| 狠狠干综合| 手机在线国产精品| 亚洲国产综合精品一区| 婷婷色一二三区波多野衣| 国产精品美女在线| 色综合综合网| 色噜噜狠狠狠综合曰曰曰| 欧美日本在线一区二区三区| 国产精品一区二区不卡的视频| 19国产精品麻豆免费观看| 亚洲视频免| 成人午夜视频网站| 久久天天躁夜夜躁狠狠| 婷婷中文在线| 亚洲毛片一级带毛片基地| 日韩黄色精品| 欧美成a人片在线观看| 全部免费特黄特色大片视频| 无码国产伊人| 国产亚洲精久久久久久久91| 亚洲国产看片基地久久1024| 91午夜福利在线观看精品| 日韩精品高清自在线| 成人在线不卡| 久久国产精品77777| 波多野结衣久久精品| 黄色网站在线观看无码| 亚洲精品片911| 日韩欧美91| 欧美高清国产| 亚洲国产中文在线二区三区免| 国产草草影院18成年视频| 色综合综合网| 97视频免费看| 性视频久久| 色婷婷久久| AV不卡国产在线观看| 亚洲视频二| 亚洲综合18p| 老司机精品一区在线视频| 国产福利拍拍拍|