0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

2.4G NRF2401的無(wú)線通訊實(shí)現(xiàn)

要長(zhǎng)高 ? 來(lái)源:cnblogs ? 作者:Kevin1207 ? 2022-06-27 15:30 ? 次閱讀

RF24L01+,是工作在2.4~2.5GHz 頻段的,具備自動(dòng)重發(fā)功能,6 個(gè)數(shù)據(jù)傳輸通道,最大無(wú)線傳輸速率為2Mbits。MCU 可與該芯片通過(guò)SPI 接口訪問(wèn)芯片的寄存器進(jìn)行配置,達(dá)到控制模塊、通過(guò)該模塊實(shí)現(xiàn)無(wú)線通訊的目的。

具體細(xì)節(jié)參考《《野火STM32--2.4G無(wú)線傳輸》》

優(yōu)點(diǎn):不需要建立連接就可以進(jìn)行收發(fā)

PCB管腳

poYBAGK5W8SAT7x6AAMSIsSPThU969.png

其中各個(gè)接口作用如下

pYYBAGK5W8qAE4Y_AACDRpsiEkQ314.png

在應(yīng)用中我們需要一對(duì)收發(fā),也就是一個(gè)主機(jī)和一個(gè)從機(jī)。主機(jī)和從機(jī)的驅(qū)動(dòng)部分是一樣的(配置文件SPI_NRF.c 文件相同),區(qū)別是main函數(shù)中調(diào)用的模式不同,主機(jī)一般是發(fā)送模式NRF_TX_Mode();,而從機(jī)采用的是接收模式 NRF_RX_Mode();

應(yīng)用的基本流程

注意事項(xiàng):

(1)首先要檢查接線,一般配置的是SPI1,然后要對(duì)應(yīng)程序里面的配置來(lái)接線

SPI1

SCK = PA5 MISO = PA6 MOSI = PA7

CE = PA4 CSN =PC4 IRQ = PC5

poYBAGK5W9GAayqwAACKCJjyfpY745.png

后兩個(gè)是作為普通IO口,任意管腳均可

從機(jī)部分:

(1)SPI_NRF_Init(); //初始化SPI接口

(2)NRF_RX_Mode(); // 設(shè)置為接收模式

(3)while循環(huán)里等待接收,判斷接收狀態(tài),并進(jìn)行接收

#include “stm32f10x.h”#include “bsp_usart1.h”#include “bsp_spi_nrf.h”u8 status; //用于判斷接收/發(fā)送狀態(tài)u8 rxbuf[4]; //接收緩沖u8 i;

int main(void)

{

/* 串口1初始化 */

USART1_Config();

/*SPI接口初始化*/

SPI_NRF_Init();

printf(“\r\n 這是一個(gè) NRF24L01 無(wú)線傳輸實(shí)驗(yàn) \r\n”);

printf(“\r\n 這是無(wú)線傳輸 從機(jī)端 的反饋信息\r\n”);

printf(“\r\n 正在檢測(cè)NRF與MCU是否正常連接。。。\r\n”); /*檢測(cè)NRF模塊與MCU的連接*/

status = NRF_Check();

if(status == SUCCESS)

printf(“\r\n NRF與MCU連接成功\r\n”);

else

printf(“\r\n 正在檢測(cè)NRF與MCU是否正常連接。。。\r\n”);

NRF_RX_Mode(); // 設(shè)置為接收模式

printf(“\r\n 從機(jī)端 進(jìn)入接收模式\r\n”); while(1)

{

/*等待接收數(shù)據(jù)*/

status = NRF_Rx_Dat(rxbuf); /*判斷接收狀態(tài)*/

switch(status)

{ case RX_DR: for(i=0;i《4;i++)

{

printf(“\r\n 從機(jī)端 接收到 主機(jī)端 發(fā)送的數(shù)據(jù)為:%d \r\n”,rxbuf[i]);

}break;

case ERROR:

printf(“\r\n 從機(jī)端 接收出錯(cuò)。 \r\n”);break;

}

}

}

主機(jī)部分:

(1)SPI_NRF_Init(); //初始化SPI接口

(2)NRF_TX_Mode(); // 設(shè)置為發(fā)送模式

(3)發(fā)送數(shù)據(jù),查看發(fā)送狀態(tài),否則重發(fā)。比如用按鍵中斷來(lái)進(jìn)行一次發(fā)送

注:一般都會(huì)顯示超時(shí),但是實(shí)際接收端有接收到。

初始化和配置與從機(jī)相同,除了TX模式

發(fā)送部分的代碼:

void EXTI0_IRQHandler(void)

{ int i=0; if(EXTI_GetITStatus(EXTI_Line0) != RESET) // 確保是否產(chǎn)生了EXTI Line中斷??! { for(i=0;i《4;i++)

txbuf[i]+=1;

printf(“\r\n exit \r\n”);

status = NRF_Tx_Dat(txbuf);

switch(status)

{ case MAX_RT:

printf(“\r\n 主機(jī)端 沒(méi)接收到應(yīng)答信號(hào),發(fā)送次數(shù)超過(guò)限定值,發(fā)送失敗。 \r\n”); break; case ERROR:

printf(“\r\n 未知原因?qū)е掳l(fā)送失敗。 \r\n”); break; case TX_DS:

printf(“\r\n 主機(jī)端 接收到 從機(jī)端 的應(yīng)答信號(hào),發(fā)送成功! \r\n”);

break;

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16667

    瀏覽量

    347833
  • pcb
    pcb
    +關(guān)注

    關(guān)注

    4295

    文章

    22776

    瀏覽量

    393280
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119212
  • 無(wú)線通訊
    +關(guān)注

    關(guān)注

    5

    文章

    563

    瀏覽量

    39292
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    NRF2410無(wú)線通訊模塊原理,程序,驅(qū)動(dòng),源代碼等詳細(xì)資料

    NRF2410無(wú)線通訊模塊原理,程序,源代碼等詳細(xì)資料 RF射頻芯片nRF2401應(yīng)用程序,控制器采用ATmega8芯片;制作nRF2401無(wú)線通訊
    發(fā)表于 06-27 09:47

    求助 nrf2401的應(yīng)用

    本帖最后由 eehome 于 2013-1-5 10:05 編輯 l Mb/s數(shù)據(jù)率,7000個(gè)字節(jié)的數(shù)據(jù)通過(guò)無(wú)線通訊,剛看了nrf2401的模塊好像可以用,但自己不會(huì)弄啊,跪求求大俠們幫幫忙啊,先謝謝了。本人qq464149261.
    發(fā)表于 09-26 10:58

    關(guān)于51單片機(jī)NRF2401與STM32的NRF2401之間的通訊問(wèn)題

    我用51單片機(jī)NRF2401與STM32的NRF2401通訊,,51單片機(jī)的作為發(fā)送芯片;STM32的作為接收芯片,但是接收打開(kāi)后很久才能接收到數(shù)據(jù)并且是亂碼,求解答這是什么原因???
    發(fā)表于 07-20 11:59

    2.4G低功耗無(wú)線方案

    )+16M/3225/9PF/±10PPM(晶振)4. 2.4G有源卡方案:NRF24L01P(2.4G收發(fā)芯片)+AT2401C(射頻放大器)+16M/3225/9PF/±10PPM
    發(fā)表于 07-11 14:00

    2.4g無(wú)線通訊技術(shù)問(wèn)題

    最近做個(gè)項(xiàng)目需要用到無(wú)線通訊 技術(shù),要實(shí)現(xiàn)點(diǎn)對(duì)多模式進(jìn)行數(shù)據(jù)傳輸。由于傳輸距離100m以內(nèi),所有自己心里目前有三種方案:一,使用wifi模塊;二,使用nrf模塊;三,使用無(wú)線zigbe
    發(fā)表于 04-21 03:49

    nrf2401的msp430程序

    nrf2401的msp430程序
    發(fā)表于 04-11 09:59 ?172次下載
    <b class='flag-5'>nrf2401</b>的msp430程序

    基于nrf2401無(wú)線收發(fā)點(diǎn)菜器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于nrf2401 無(wú)線收發(fā)點(diǎn)菜器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)李瑋 (山東省廣播電視局昆崳山轉(zhuǎn)播臺(tái))摘要:介紹了一種利用無(wú)線數(shù)字傳輸芯片和單片機(jī)構(gòu)成的點(diǎn)菜器系統(tǒng),對(duì)系統(tǒng)的硬件電路和
    發(fā)表于 12-20 09:28 ?203次下載

    基于nRF2401的分布式測(cè)溫系統(tǒng)設(shè)計(jì)

    利用溫度傳感器DS18B20 、AT89S51 單片機(jī)和nRF2401 收發(fā)芯片設(shè)計(jì)分布式無(wú)線溫度測(cè)試系統(tǒng)。將溫度傳感器DS18B20 采集到的溫度數(shù)據(jù)送入單片機(jī)中進(jìn)行處理,通過(guò)nRF2401
    發(fā)表于 08-30 15:51 ?134次下載

    基于nRF2401的機(jī)械儀表無(wú)線通信的設(shè)計(jì)方案

    針對(duì)大型工程機(jī)械各類信號(hào)與駕駛操控室儀表異地顯示的通信問(wèn)題,提出了基于射頻收發(fā)器nRF2401實(shí)現(xiàn)無(wú)線數(shù)據(jù)通信的設(shè)計(jì)方案,詳細(xì)介紹了射頻芯片nRF2401的工作原理及特點(diǎn), 并給
    發(fā)表于 11-22 14:55 ?45次下載

    基于ATmega16和nRF2401無(wú)線射頻收發(fā)系統(tǒng)設(shè)計(jì)

    基于ATmega16和nRF2401無(wú)線射頻收發(fā)系統(tǒng)設(shè)計(jì)。
    發(fā)表于 01-25 10:28 ?17次下載

    基于nRF2401無(wú)線數(shù)據(jù)傳輸系統(tǒng)

    基于nRF2401無(wú)線數(shù)據(jù)傳輸系統(tǒng),參考下。
    發(fā)表于 01-25 10:28 ?53次下載

    基于nrf2401無(wú)線收發(fā)點(diǎn)菜器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于nrf2401無(wú)線收發(fā)點(diǎn)菜器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 02-17 10:01 ?53次下載

    NRF2401中文數(shù)據(jù)手冊(cè)

    2.4GHz射頻收發(fā)芯片nRF2401及其應(yīng)用。
    發(fā)表于 04-06 16:52 ?182次下載

    nRF2401無(wú)線模塊的PCB圖免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是nRF2401無(wú)線模塊的PCB圖免費(fèi)下載。
    發(fā)表于 11-05 08:00 ?72次下載
    <b class='flag-5'>nRF2401</b><b class='flag-5'>無(wú)線</b>模塊的PCB圖免費(fèi)下載

    2.4G無(wú)線通訊模塊SI24R1

    電子發(fā)燒友網(wǎng)站提供《2.4G無(wú)線通訊模塊SI24R1.zip》資料免費(fèi)下載
    發(fā)表于 07-28 10:23 ?27次下載
    <b class='flag-5'>2.4G</b><b class='flag-5'>無(wú)線通訊</b>模塊SI24R1