久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8788|回復: 8
收起左側

眾拳基于STM8的NRF24L01 2.4G無線模塊實驗詳解 含程序

  [復制鏈接]
ID:170279 發表于 2017-11-28 13:18 | 顯示全部樓層 |閱讀模式
TB2XD2NqVXXXXbQXpXXXXXXXXXX_!!85243700.jpg
NRF24L01 簡介
NRF24L01是NORDIC公司生產的一款無線通信通信芯片,采用FSK 調制,集成NORDIC自家的Enhanced Short Burst協議。可以實現點對點或是1對6的無線通信。無線通信速度最高可達到2Mbps。
芯片特點:
2.4G全球開放的ISM頻段,免許可證使用。
最高工作速率2Mbps,高校的GFSK調制,抗干擾能力強。
126個可選的頻道,滿足多點通信和調頻通信的需要。
內置CRC檢錯和點對多點的通信地址控制。
可設置自動應答,確保數據可靠傳輸。
采用SPI通信,可以很方便的連接到MCU上面。
NRF24L01 模塊簡介

1.png

CSN:SPI片選線
SCK:SPI時鐘線
MOSI:SPI數據線(主機輸出,從機輸入)
MISO:SPI數據線(主機輸入,從機輸出)


CE:模式控制線,在CSN為低的情況下,CE協同CONFIG寄存器共同決定NRF24L01 的狀態(參照NRF24L01 的狀態機)


IRQ:中斷信號線,中斷時變為低電平,在以下三種情況變低:Tx FIFO 發完并且收到ACK(使能ACK情況下)、Rx FIFO 收到數據、達到最

大重發次數。


NRF24L01 SPI通訊時序圖

2.png

空閑狀態SCK為0,CPOL=0;數據在時鐘第一個時間邊沿采集,CPHA=0;
Cn:SPI命令位
Sn:STATUS寄存器位        
Dn:數據位( MSB,多字節傳輸時,低字節在前)
NRF24L01 工作模式介紹
3.png

其中,收發模式又有: Enhanced ShockBurst收發模式和ShockBurst收發模式,只有Enhanced ShockBurst收發模式支持自動ACK和自動重發。開啟自動ACK,則默認選擇Enhanced模式
Enhanced ShockBurst 模式介紹
Enhanced ShockBurst收發模式,使用片內的先入先出堆棧區,數據可以低速從微控制器送入,高速(1Mbps/2Mbps)從芯片發射,這樣可以盡量節能。與射頻協議相關的所有高速信號處理都在片內進行,這種做法有3大好處:
1,節能;
2,低的系統費用(低速微處理器也能進行高速射頻發射);
3,數據在空中停留時間短,抗干擾性高;
    在Enhanced ShockBurst收發模式下,NRF24L01自動處理字頭和CRC校驗碼。在接收數據時,自動把字頭和CRC校驗碼移去。在發送數據時,自動加上字頭和CRC校驗碼,在發送模式下,置CE為高,至少10us,將使能發送過程。
Enhanced ShockBurst模式:發送方要求終端設備在接收到數據后有應答信號,以便發送方檢測有無數據丟失,一旦丟失則重發數據。重發數據設置在地址為 0X04 的數據重發設置寄存器 用于設置其重發次數及設置在未收到應答信號后等待重發的時間。
    在接收模式下,最多可以接收6路不通的數據。每一個數據通道使用不同的地址,但是共用相同的頻道。也就是說6 個不同的NRF24L01 設置為發送模式后可以與同一個設置為接收模式的NRF24L01 進行通訊,而設置為接收模式的NRF24L01可以對這6 個發射端進行識別。數據通道0 是唯一的一個可以配置為40 位自身地址的數據通道。1~5 數據通道都為8 位自身地址和32 位公用地址(由通道1設置)。所有的數據通道都可以設置為Enhanced ShockBurst 模式。

4.png

在接收端,確認收到數據后記錄地址,并以此地址為目標地址發送應答信號。

在發送端,通道0被用作接收應答信號,因此通道0的接收地址要與發送地址端地址相等,以確保接收到正確的應答信號。


Enhanced ShockBurst 發送模式

初始化過程:
1)寫Tx 節點的地址 TX_ADDR
2)寫Rx 節點的地址(主要是為了使能Auto Ack) RX_ADDR_P0
3)使能AUTO ACK EN_AA
4)使能PIPE 0 EN_RXADDR
5)配置自動重發次數 SETUP_RETR
6)選擇通信頻率 RF_CH  頻率計算公式:2400+RF_CH  (Mhz)
7)配置發射參數(低噪放大器增益、發射功率、無線速率) RF_SETUP
8)配置24L01 的基本參數以及切換工作模式 CONFIG。


發送流程:
1. 把地址和要發送的數據按時序送入NRF24L01;
2. 配置CONFIG寄存器,使之進入發送模式;
3. 微控制器把CE置高(至少10us),激發Enhanced ShockBurstTM發射;
4. Enhanced ShockBurstTM發射:
①給射頻前端供電;
②射頻數據打包(加字頭、CRC校驗碼);
③ 高速發射數據包;
④發射完成,NRF24L01進入空閑狀態。


Enhanced ShockBurst 接收模式
初始化過程:
1)寫Rx 節點的地址 RX_ADDR_P0
2)使能AUTO ACK EN_AA
3)使能PIPE 0 EN_RXADDR
4)選擇通信頻率 RF_CH
5)選擇通道0 有效數據寬度 RX_PW_P0
6)配置發射參數(低噪放大器增益、發射功率、無線速率) RF_SETUP
7)配置24L01 的基本參數以及切換工作模式 CONFIG。

接收流程:
1. 配置接收地址和要接收的數據包大。
2. 配置CONFIG寄存器,使之進入接收模式,把CE置高。
3. 130us后,NRF24L01進入監視狀態,等待數據包的到來;
4. 當接收到正確的數據包(正確的地址和CRC校驗碼),NRF2401自動把字頭、地址和CRC校驗位移去;
5. NRF24L01通過把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中斷)通知微控制器;
6. 微控制器把數據從FIFO讀出(0X61指令);
7. 所有數據讀取完畢后,可以清除STATUS寄存器。NRF2401可以進入四種主要的模式之一;


NRF24L01-SPI指令
5.png

寄存器介紹
6.png

7.png

8.png

9.png

10.png

11.png

12.png

13.png

14.png

15.png

單片機源程序如下:
  1. /***********************************************************************
  2. *   作    者: 劉洋 張殿東
  3. *   版    本: V1.0
  4. *   日    期: 2016-05-03   
  5. *
  6. *   IAR開發環境    版本 V2.20.1
  7. *   ST庫函數       版本 V2.2.0
  8. ***********************************************************************/

  9. #include "pbdata.h"//引入自定義公共頭文件

  10. void BSP_Configuration(void);//硬件初始化函數聲明

  11. /***********************************************************************
  12. *   函 數 名: main
  13. *   功能說明: c程序入口
  14. *   形    參:無
  15. *   返 回 值: 錯誤代碼(無需處理)
  16. ***********************************************************************/
  17. int main(void)
  18. {
  19.   BSP_Configuration();//硬件驅動初始化函數
  20.   
  21.   NRF24L01_Demo3();  
  22. }
  23. /***********************************************************************
  24. *   函 數 名: BSP_Configuration
  25. *   功能說明: 初始化硬件設備。只需要調用一次。該函數配置CPU寄存器和外設的寄存器并初始化一些全局變量。
  26. *   形    參:無
  27. *   返 回 值: 無
  28. ***********************************************************************/
  29. void BSP_Configuration(void)
  30. {  
  31.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//時鐘速度為內部16M,1分頻,
  32.   UART1_Congfiguration();//調用RS232串口1初始化函數
  33.   LED_Init();//調用LED初始化函數
  34.   SPI_Configation();
  35.   NRF24L01_Init();
  36.   rim();//打開總中斷
  37. }

  38. /*斷言函數:它的作用是在編程的過程中為程序提供參數檢查*/
  39. #ifdef USE_FULL_ASSERT
  40. ……………………

  41. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

【眾拳】劍齒虎開發板2.4G無線實驗程序下載:
眾拳劍齒虎NRF24L01 2.4G無線模塊實驗程序.zip (1.82 MB, 下載次數: 198)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:134294 發表于 2017-11-30 17:29 | 顯示全部樓層
感謝!正在學習!
回復

使用道具 舉報

ID:218002 發表于 2018-8-27 13:52 | 顯示全部樓層

感謝,學習學習
回復

使用道具 舉報

ID:32574 發表于 2018-8-30 16:31 | 顯示全部樓層
謝謝老師分享,正在研究nrf24l01。
還想請教老師個問題:如果想用電腦輸入并發送類似001#-zt,則001#終端返回應答信號zt,并在終端指示燈閃爍提示需要怎么入手。

謝謝!

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:418504 發表于 2018-10-31 14:19 | 顯示全部樓層
謝謝老師分享,現在要用到這個模塊奈何真心不知怎么下手 超贊
回復

使用道具 舉報

ID:418504 發表于 2018-10-31 14:20 | 顯示全部樓層
真心很好 太棒了
回復

使用道具 舉報

ID:183532 發表于 2019-7-30 09:30 | 顯示全部樓層
及時雨
回復

使用道具 舉報

ID:969296 發表于 2022-4-28 17:02 | 顯示全部樓層
while (SPI_RF_IRQ!=0);//等待發送完成
回復

使用道具 舉報

ID:969296 發表于 2022-4-28 17:03 | 顯示全部樓層
這里卡住了,怎么回事,樓主及大神請不吝賜教!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 三级成人在线 | 麻豆一区一区三区四区 | 久久精品高清视频 | 成人天堂 | av天天澡天天爽天天av | 一级黄色生活视频 | 欧美日韩综合精品 | 一区二区精品在线 | 国产中文字幕亚洲 | 中文字幕国产 | www.日韩av.com | 亚洲香蕉在线视频 | 亚洲国产精久久久久久久 | 亚洲欧美在线一区 | 国产精品美女久久久久久久久久久 | 色婷婷九月 | 视频二区 | 久久丁香| 欧美在线观看一区 | 精品一级毛片 | 国产片侵犯亲女视频播放 | 一区二区三区视频在线 | 国产精品99久久久久久动医院 | 五月婷婷丁香 | 成人在线电影在线观看 | 神马影院一区二区三区 | 天天插天天射天天干 | 麻豆久久 | 国产精品久久久久久久久久妇女 | 欧美一区二区三区大片 | 欧美999| 免费看黄视频网站 | 综合婷婷| 久久大陆 | 91精品国产一区二区三区动漫 | av网站在线播放 | 91久久 | 中文成人在线 | 婷婷综合五月天 | 久久久久亚洲av毛片大全 | 国产探花在线精品一区二区 |