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終端成功接收數據并通過串口成功地將數據發送給上位機??梢愿鶕枰ㄓ袩oSPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,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終端成功接收數據并通過串口成功地將數據發送給上位機??梢愿鶕枰ㄓ袩oSPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,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終端成功接收數據并通過串口成功地將數據發送給上位機??梢愿鶕枰ㄓ袩oSPI接口,通信距離遠近等)對本系統的軟件進行移植,只需做少量修改即可。需要注意,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顯示系統
半沸制皂系統(下)
瞞天過?!律O計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
主站蜘蛛池模板: 欧美劲爆第一页| 中国黄色一级视频| 国产91久久久久久| 欧洲一区二区三区无码| 亚洲毛片一级带毛片基地| 亚洲第一精品福利| 2048国产精品原创综合在线| 中文字幕精品一区二区三区视频| 99在线视频精品| 在线色国产| 国产成人精品一区二区| 亚洲无码37.| 欧美国产日韩在线观看| 欧美日韩国产综合视频在线观看| 日韩无码视频专区| 国产亚洲欧美另类一区二区| 国产人成乱码视频免费观看| 91高清在线视频| 永久毛片在线播| 99热这里只有精品免费| 99re经典视频在线| 精品少妇人妻一区二区| 亚洲精品动漫在线观看| 国产精品无码翘臀在线看纯欲| 国产对白刺激真实精品91| 久久频这里精品99香蕉久网址| 激情综合图区| 久久综合五月| 亚洲一区第一页| 国产91丝袜在线播放动漫 | 国产午夜精品鲁丝片| 日本精品视频一区二区| 久久精品国产国语对白| 伊人久久大香线蕉影院| 午夜国产理论| 国产毛片片精品天天看视频| 精品综合久久久久久97超人| 伊人久久大线影院首页| 欧美成a人片在线观看| 91久久精品国产| 亚洲精品在线91| 在线亚洲小视频| 国产午夜人做人免费视频| 欧美视频在线不卡| 蜜臀av性久久久久蜜臀aⅴ麻豆| 欧美日韩国产精品va| 22sihu国产精品视频影视资讯| 国产综合精品日本亚洲777| 老司机午夜精品网站在线观看| 国产成人亚洲欧美激情| 国产一区二区色淫影院| 国产精品午夜福利麻豆| 国产H片无码不卡在线视频| 亚洲视频免费播放| 99热这里只有精品国产99| h视频在线观看网站| 老色鬼久久亚洲AV综合| 伊人蕉久影院| 丁香六月激情婷婷| 亚洲伦理一区二区| 福利视频一区| 亚洲一区二区在线无码| 亚洲不卡无码av中文字幕| 日本亚洲国产一区二区三区| 国产毛片片精品天天看视频| 国产丝袜91| 国产精品美女免费视频大全| 国产成年无码AⅤ片在线| 天堂在线亚洲| 依依成人精品无v国产| 色精品视频| 国产精品99一区不卡| 中文字幕乱码中文乱码51精品| 日本三级欧美三级| 91视频免费观看网站| 人妻少妇久久久久久97人妻| 91外围女在线观看| 亚洲欧美一区二区三区麻豆| 人妻一区二区三区无码精品一区| 黄色福利在线| 亚洲永久视频| 久久久久国产精品免费免费不卡|