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

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

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

nRF24L01無線通訊模塊的驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

CHANBAEK ? 來源:木南創(chuàng)智 ? 作者:尹家軍 ? 2022-12-08 14:45 ? 次閱讀

現(xiàn)在無線在我們的生活中無處不在。而我們開發(fā)的物聯(lián)網(wǎng)產(chǎn)品也大量使用無線通訊。在這一篇文章中,我們將討論nRF24L01無線通訊模塊驅(qū)動(dòng)程序的開發(fā)與實(shí)現(xiàn)。

1 、功能概述

nRF24L01是一款工作在2.4~2.5GHz世界通用ISM 頻段的單片無線收發(fā)器芯片無線收發(fā)器包括:頻率發(fā)生器、增強(qiáng)型SchockBurst模式控制器功率放大器、晶體振蕩器、調(diào)制器、解調(diào)器。輸出功率、頻道選擇和協(xié)議的設(shè)置可以通過SPI 接口進(jìn)行設(shè)置。其封裝及引腳定義如下:

Dingtalk_20221206154648.jpg

1.1 、工作模式

nRF24L01無線通訊模塊可以設(shè)置為多種不同的工作模式:待機(jī)模式、掉電模式、數(shù)據(jù)包處理方式。各模式的功能及操作如下:

Dingtalk_20221206154648.jpg

1.1.1 、待機(jī)模式

待機(jī)模式I在保證快速啟動(dòng)的同時(shí)減少系統(tǒng)平均消耗電流。在待機(jī)模式I下,晶振正常工作。在待機(jī)模式II下部分時(shí)鐘緩沖器處在工作模式。當(dāng)發(fā)送端TX FIFO寄存器為空并且CE為高電平時(shí)進(jìn)入待機(jī)模式II。在待機(jī)模式期間,寄存器配置字內(nèi)容保持不變。

1.1.2 、掉電模式

在掉電模式下,nRF24L01各功能關(guān)閉,保持電流消耗最小。進(jìn)入掉電模式后,nRF24L01停止工作,但寄存器內(nèi)容保持不變。掉電模式由寄存器中PWR_UP位來控制。

1.1.3 、數(shù)據(jù)包處理方式

nRF24L01數(shù)據(jù)包處理方式包括ShockBurst模式和增強(qiáng)型ShockBurst模式。

ShockBurst模式下nRF24L01可以與成本較低的低速MCU相連。高速信號(hào)處理是由芯片內(nèi)部的射頻協(xié)議處理的,nRF24L01提供SPI接口,數(shù)據(jù)率取決于單片機(jī)本身接口速度。ShockBurst模式通過允許與單片機(jī)低速通信而無線部分高速通信,減小了通信的平均消耗電流。

增強(qiáng)型ShockBurst模式可以使得雙向鏈接協(xié)議執(zhí)行起來更為容易、有效。典型的雙向鏈接為:發(fā)送方要求終端設(shè)備在接收到數(shù)據(jù)后有應(yīng)答信號(hào),以便于發(fā)送方檢測(cè)有無數(shù)據(jù)丟失。一旦數(shù)據(jù)丟失,則通過重新發(fā)送功能將丟失的數(shù)據(jù)恢復(fù)。增強(qiáng)型的ShockBurstTM模式可以同時(shí)控制應(yīng)答及重發(fā)功能而無需增加MCU工作量。

1.2 、數(shù)據(jù)通訊

1.2.1 、通訊指令及數(shù)據(jù)包

nRF24L01所有配置都在配置寄存器中。所有寄存器都是通過SPI口進(jìn)行配置的。SPI接口采用標(biāo)準(zhǔn)的SPI接口,其最大的數(shù)據(jù)傳輸率為10Mbps。指令格式采用命令字加數(shù)據(jù)字節(jié)的格式。其中命令字由高位到低位(每字節(jié));數(shù)據(jù)字節(jié)從低字節(jié)到高字節(jié),每一字節(jié)高位在前。nRF24L01支持的指令如下:

Dingtalk_20221206154648.jpg

R_REGISTER和W_REGISTER寄存器可能操作單字節(jié)或多字節(jié)寄存器。當(dāng)訪問多字節(jié)寄存器時(shí)首先要讀/寫的是最低字節(jié)的高位。在所有多字節(jié)寄存器被寫完之前可以結(jié)束寫SPI操作,在這種情況下沒有寫完的高字節(jié)保持原有內(nèi)容不變。例如RX_ADDR_P0寄存器的最低字節(jié)可以通過寫一個(gè)字節(jié)給寄存器RX_ADDR_P0來改變。在CSN狀態(tài)由高變低后可以通過 MISO 來讀取狀態(tài)寄存器的內(nèi)容。

nRF24L01在增強(qiáng)型ShockBurst模式下和ShockBurst模式下的數(shù)據(jù)包格式略有不同。

增強(qiáng)型ShockBurst模式下的數(shù)據(jù)包形式如下:

Dingtalk_20221206154648.jpg

ShockBurst模式下的數(shù)據(jù)包形式如下:

Dingtalk_20221206154648.jpg

在數(shù)據(jù)包中,前導(dǎo)碼用來檢測(cè)0和1。芯片在接收模式下去除前導(dǎo)碼,在發(fā)送模式下加入前導(dǎo)碼。地址內(nèi)容為接收機(jī)地址。地址寬度可以是3、4或5字節(jié)寬度。地址可以對(duì)接收通道及發(fā)送通道分別進(jìn)行配置。從接收的數(shù)據(jù)包中自動(dòng)去除地址。標(biāo)志位就是PID數(shù)據(jù)包識(shí)別號(hào),后兩位會(huì)在每次接收到新的數(shù)據(jù)包后加,前7位保留。CRC校驗(yàn)是可選的,0-2字節(jié)寬度的CRC校驗(yàn)。若采用8位CRC校驗(yàn),則其特征多項(xiàng)式是:X8+X2+X+1;若采用16位CRC校驗(yàn),則其特征多項(xiàng)式是:X16+X12+X5+1。

1.2.2 、數(shù)據(jù)通道

nRF24L01配置為接收模式時(shí)可以接收6路不同地址相同頻率的數(shù)據(jù)。每個(gè)數(shù)據(jù)通道擁有自己的地址并且可以通過寄存器來進(jìn)行分別配置。數(shù)據(jù)通道是通過寄存器EN_RXADDR來設(shè)置的,默認(rèn)狀態(tài)下只有數(shù)據(jù)通道0和數(shù)據(jù)通道1是開啟狀態(tài)的。每一個(gè)數(shù)據(jù)通道的地址是通過寄存器RX_ADDR_Px來配置的。通常情況下不允許不同的數(shù)據(jù)通道設(shè)置完全相同的地址。數(shù)據(jù)通道0有40位可配置地址。數(shù)據(jù)通道1~5的地址為32位共用地址+各自的地址(最低字節(jié))。如下所示:

Dingtalk_20221206154648.jpg

2 、驅(qū)動(dòng)設(shè)計(jì)與實(shí)現(xiàn)

我們已經(jīng)了解了nRF24L01無線通訊模塊的功能及操作方式,接下來我們將設(shè)計(jì)并實(shí)現(xiàn)nRF24L01無線通訊模塊的驅(qū)動(dòng)程序。

2.1 、對(duì)象定義

在使用一個(gè)對(duì)象之前我們需要獲得一個(gè)對(duì)象。同樣的我們想要nRF24L01無線通訊模塊就需要先定義nRF24L01無線通訊模塊的對(duì)象。

2.1.1 、對(duì)象的抽象

我們要得到nRF24L01無線通訊模塊對(duì)象,需要先分析其基本特性。一般來說,一個(gè)對(duì)象至少包含兩方面的特性:屬性與操作。接下來我們就來從這兩個(gè)方面思考一下nRF24L01無線通訊模塊的對(duì)象。

先來考慮屬性,作為屬性肯定是用于標(biāo)識(shí)或記錄對(duì)象特征的東西。我們來考慮nRF24L01無線通訊模塊對(duì)象屬性。nRF24L01有一些寄存器用于配置工作狀態(tài),所以我們將這些寄存器狀態(tài)作為對(duì)象的屬性。

接著我們還需要考慮nRF24L01無線通訊模塊對(duì)象的操作問題。我們通過nRF24L01來收發(fā)數(shù)據(jù)就需要讀寫SPI接口,而這與特定的硬件平臺(tái)相關(guān),所以我們將其作為對(duì)象的操作。而片選信號(hào)和使能信號(hào)以及中斷輸入信號(hào)也都與具體的操作平臺(tái)有關(guān),所以我們也將其作為對(duì)象的操作。在進(jìn)行相關(guān)操作時(shí),我們需要控制時(shí)序,則需要使用延時(shí)操作,但延時(shí)處理總是依賴于具體的軟硬件平臺(tái),所以我們將延時(shí)處理作為對(duì)象的操作。

根據(jù)上述我們對(duì)nRF24L01無線通訊模塊的分析,我們可以定義nRF24L01無線通訊模塊的對(duì)象類型如下:

/* 定義NRF24L01對(duì)象類型 */
typedef structNRF24L01Object {
       uint8_t reg[8];//記錄前8個(gè)配置寄存器
       uint8_t (*ReadWriteByte)(uint8_tTxData);//聲明向nRF24L01讀寫一個(gè)字節(jié)的函數(shù)
       void (*ChipSelect)(NRF24L01CSType cs);//聲明片選操作函數(shù)
       void (*ChipEnable)(NRF24L01CEType en);//聲明使能及模式操作函數(shù)
       uint8_t (*GetIRQ)(void);//聲明中斷獲取函數(shù)
       void (*Delayms)(volatile uint32_t nTime);       //毫秒延時(shí)操作指針
}NRF24L01ObjectType;

2.1.2 、對(duì)象初始化

我們知道,一個(gè)對(duì)象僅作聲明是不能使用的,我們需要先對(duì)其進(jìn)行初始化,所以這里我們來考慮nRF24L01無線通訊模塊對(duì)象的初始化函數(shù)。一般來說,初始化函數(shù)需要處理幾個(gè)方面的問題。一是檢查輸入?yún)?shù)是否合理;二是為對(duì)象的屬性賦初值;三是對(duì)對(duì)象作必要的初始化配置。據(jù)此我們?cè)O(shè)計(jì)nRF24L01無線通訊模塊對(duì)象的初始化函數(shù)如下:

/*nRF24L01對(duì)象初始化函數(shù)*/
NRF24L01ErrorTypeNRF24L01Initialization(NRF24L01ObjectType *nrf,     //nRF24L01對(duì)象
       NRF24L01ReadWriteByte spiReadWrite,   //SPI讀寫函數(shù)指針
       NRF24L01ChipSelect cs,//片選信號(hào)操作函數(shù)指針
       NRF24L01ChipEnable ce,      //使能信號(hào)操作函數(shù)指針
       NRF24L01GetIRQ irq,                   //中斷信號(hào)獲取函數(shù)指針
       NRF24L01Delayms delayms  //毫秒延時(shí)
 )
{
       int retry=0;
      
if((nrf==NULL)||(spiReadWrite==NULL)||(ce==NULL)||(irq==NULL)||(delayms==NULL))
       {
              return NRF24L01_InitError;
       }
       nrf->ReadWriteByte=spiReadWrite;
       nrf->ChipEnable=ce;
       nrf->GetIRQ=irq;
       nrf->Delayms=delayms;
      
       if(cs!=NULL)
       {
              nrf->ChipSelect=cs;
       }
       else
       {
              nrf->ChipSelect=NRF24L01CSDefault;
       }
      
       while(NRF24L01Check(nrf)&&(retry<5))
       {
              nrf->Delayms(300);
              retry++;
       }
      
       if(retry>=5)
       {
              return NRF24L01_Absent;
       }
      
       for(int i=0;i<8;i++)
       {
              nrf->reg[i]=0;
       }
      
       SetNRF24L01Mode(nrf,NRF24L01RxMode);
      
       return NRF24L01_NoError;
}

2.2 、對(duì)象操作

我們已經(jīng)完成了nRF24L01無線通訊模塊對(duì)象類型的定義和對(duì)象初始化函數(shù)的設(shè)計(jì)。但我們的主要目標(biāo)是獲取對(duì)象的信息,接下來我們還要實(shí)現(xiàn)面向nRF24L01無線通訊模塊的各類操作。

2.2.1 、讀操作

nRF24L01無線通訊模塊有很多的寄存器,所謂讀操作就是對(duì)這些寄存器的讀取過程。這個(gè)過程就是使用前面我們介紹的命令去獲取不同寄存器的數(shù)值。具體的時(shí)序過程如下所示:

Dingtalk_20221206154648.jpg

根據(jù)上述時(shí)序圖以及各寄存器的定義,我們將讀nRF24L01無線通訊模塊寄存器的方式分為兩類:一類是讀普通的單字節(jié)寄存器,這些寄存器主要與配置和狀態(tài)有關(guān);另一類是讀多字節(jié)寄存器,這些寄存器與數(shù)據(jù)通訊相關(guān)。具體的實(shí)現(xiàn)如下:

/*讀取寄存器值*/
static uint8_tNRF24L01ReadRegigster(NRF24L01ObjectType *nrf,uint8_t reg)
{
 uint8_t reg_val;        
 
 nrf->ChipSelect(NRF24L01CS_Enable);             //使能SPI傳輸            
 
 nrf->ReadWriteByte(reg);          //發(fā)送寄存器號(hào)
 reg_val=nrf->ReadWriteByte(0XFF); //讀取寄存器內(nèi)容
 nrf->ChipSelect(NRF24L01CS_Disable);            //禁止SPI傳輸
 
 return(reg_val);                      //返回狀態(tài)值
}


/*在指定位置讀出指定長度的數(shù)據(jù)*/
static uint8_tNRF24L01ReadBuffer(NRF24L01ObjectType *nrf,uint8_t reg,uint8_t *pBuf,uint8_tlen)
{
 uint8_t status;      
       
 nrf->ChipSelect(NRF24L01CS_Enable);              //使能SPI傳輸
 
 status=nrf->ReadWriteByte(reg);   //發(fā)送寄存器值(位置),并讀取狀態(tài)值
       
 for(int i=0;iReadWriteByte(0XFF);//讀出數(shù)據(jù)
 }
       
 nrf->ChipSelect(NRF24L01CS_Disable);            //關(guān)閉SPI傳輸
       
 return status;                       //返回讀到的狀態(tài)值
}

2.2.2 、寫操作

nRF24L01無線通訊模塊有很多的寄存器,所謂寫操作就是向這些寄存器寫值的過程。在寫寄存器之前一定要進(jìn)入待機(jī)模式或掉電模式。雖然寄存器的位數(shù)等存在差異,但其操作過程基本是一樣的。具體的時(shí)序過程如下所示:

Dingtalk_20221206154648.jpg

同樣的,根據(jù)上述時(shí)序圖以及各寄存器的定義,我們將寫nRF24L01無線通訊模塊寄存器的方式分為兩類:一類是寫普通的單字節(jié)寄存器,這些寄存器主要與配置和狀態(tài)有關(guān);另一類是寫多字節(jié)寄存器,這些寄存器與數(shù)據(jù)通訊相關(guān)。具體的實(shí)現(xiàn)如下:

/*寫寄存器*/
static uint8_t NRF24L01WriteRegister(NRF24L01ObjectType*nrf,uint8_t reg,uint8_t value)
{
 uint8_t status;
 
 nrf->ChipSelect(NRF24L01CS_Enable);             //使能SPI傳輸
 status =nrf->ReadWriteByte(reg);  //發(fā)送寄存器號(hào)
 nrf->ReadWriteByte(value);        //寫入寄存器的值
 nrf->ChipSelect(NRF24L01CS_Disable);            //禁止SPI傳輸
 
 return(status);                      //返回狀態(tài)值
}


/*在指定位置寫指定長度的數(shù)據(jù)*/
static uint8_tNRF24L01WriteBuffer(NRF24L01ObjectType *nrf,uint8_t reg, uint8_t *pBuf, uint8_tlen)
{
 uint8_t status;
 
 nrf->ChipSelect(NRF24L01CS_Enable);             //使能SPI傳輸
 
 status = nrf->ReadWriteByte(reg); //發(fā)送寄存器值(位置),并讀取狀態(tài)值
 
 for(int i=0; iReadWriteByte(pBuf[i]);    //寫入數(shù)據(jù)     
 }
 
 nrf->ChipSelect(NRF24L01CS_Disable);            //關(guān)閉SPI傳輸
 
 return status;                       //返回讀到的狀態(tài)值
}

3 、驅(qū)動(dòng)的使用

前面我們已經(jīng)設(shè)計(jì)并實(shí)現(xiàn)了nRF24L01無線通訊模塊的驅(qū)動(dòng)程序,我們還需要驗(yàn)證這一驅(qū)動(dòng)程序的設(shè)計(jì)是否符合要求,所以在這一節(jié)中我們將基于nRF24L01無線通訊模塊的驅(qū)動(dòng)程序設(shè)計(jì)一驗(yàn)證應(yīng)用。

3.1 、聲明并初始化對(duì)象

使用基于對(duì)象的操作我們需要先得到這個(gè)對(duì)象,所以我們先要使用前面定義的nRF24L01無線通訊模塊類型聲明一個(gè)nRF24L01無線通訊模塊對(duì)象變量,具體操作格式如下:

NRF24L01ObjectTypenrf;

聲明了這個(gè)對(duì)象變量并不能立即使用,我們還需要使用驅(qū)動(dòng)中定義的初始化函數(shù)對(duì)這個(gè)變量進(jìn)行初始化。這個(gè)初始化函數(shù)所需要的輸入?yún)?shù)如下:

NRF24L01ObjectType*nrf,nRF24L01對(duì)象

NRF24L01ReadWriteBytespiReadWrite,SPI讀寫函數(shù)指針

NRF24L01ChipSelectcs,片選信號(hào)操作函數(shù)指針

NRF24L01ChipEnablece,使能信號(hào)操作函數(shù)指針

NRF24L01GetIRQirq,中斷信號(hào)獲取函數(shù)指針

NRF24L01Delaymsdelayms,毫秒延時(shí)

對(duì)于這些參數(shù),nRF24L01對(duì)象變量我們已經(jīng)定義了。余下的參數(shù)是一些函數(shù)指針,這是我們需要定義的,并將函數(shù)指針作為參數(shù)。這幾個(gè)函數(shù)的類型如下:

//聲明向nRF24L01讀寫一個(gè)字節(jié)的函數(shù)
typedef uint8_t (*NRF24L01ReadWriteByte)(uint8_tTxData);
//聲明片選操作函數(shù)
typedef void(*NRF24L01ChipSelect)(NRF24L01CSType cs);
//聲明使能及模式操作函數(shù)
typedef void(*NRF24L01ChipEnable)(NRF24L01CEType en);
//聲明中斷獲取函數(shù)
typedef uint8_t(*NRF24L01GetIRQ)(void);
//毫秒延時(shí)操作指針
typedef void(*NRF24L01Delayms)(volatile uint32_t nTime);

對(duì)于這幾個(gè)函數(shù)我們根據(jù)樣式定義就可以了,具體的操作可能與使用的硬件平臺(tái)有關(guān)系。片選操作函數(shù)用于多設(shè)備需要軟件操作時(shí),如采用硬件片選可以傳入NULL即可。具體函數(shù)定義如下:

/* 基于HAL庫的SPI讀寫字節(jié)函數(shù) */
static uint8_tNRF24L01ReadWrite(uint8_t txData)
{
  uint8_t rxData=0;
 
  HAL_SPI_TransmitReceive(&nrf24l01hspi,&txData,&rxData,1,1000);
 
  return rxData;
}
 
/*實(shí)現(xiàn)片選*/
static voidNRF24L01ChipSelectf(NRF24L01CSType cs)
{
       if(NRF24L01CS_Enable==cs)
       {
              HAL_GPIO_WritePin(GPIOF,GPIO_PIN_4, GPIO_PIN_RESET);
       }
       else
       {
              HAL_GPIO_WritePin(GPIOF,GPIO_PIN_4, GPIO_PIN_SET);
       }
}
 
/*實(shí)現(xiàn)使能*/
static voidNRF24L01ChipEnablef(NRF24L01CEType en)
{
       if(NRF24L01CE_Enable==en)
       {
              HAL_GPIO_WritePin(GPIOF,GPIO_PIN_5, GPIO_PIN_RESET);
       }
       else
       {
              HAL_GPIO_WritePin(GPIOF,GPIO_PIN_5, GPIO_PIN_SET);
       }
}
 
/*實(shí)現(xiàn)Ready狀態(tài)監(jiān)視*/
static uint8_tNRF24L01GetIRQf(void)
{
       returnHAL_GPIO_ReadPin(GPIOC,GPIO_PIN_0);
}

對(duì)于延時(shí)函數(shù)我們可以采用各種方法實(shí)現(xiàn)。我們采用的STM32平臺(tái)和HAL庫則可以直接使用HAL_Delay()函數(shù)。于是我們可以調(diào)用初始化函數(shù)如下:

NRF24L01Initialization(&nrf,NRF24L01ReadWrite,NRF24L01ChipSelectf,NRF24L01ChipEnablef,NRF24L01GetIRQf,HAL_Delay);

3.2 、基于對(duì)象進(jìn)行操作

我們定義了對(duì)象變量并使用初始化函數(shù)給其作了初始化。接著我們就來考慮操作這一對(duì)象獲取我們想要的數(shù)據(jù)。我們?cè)隍?qū)動(dòng)中已經(jīng)將獲取數(shù)據(jù)并轉(zhuǎn)換為轉(zhuǎn)換值的比例值,接下來我們使用這一驅(qū)動(dòng)開發(fā)我們的應(yīng)用實(shí)例。

/*NRF24L01數(shù)據(jù)通訊*/
void NRF24L01DataExchange(void)
{
       uint8_t txDatas[32]={0xAA};
       uint8_t rxDatas[32]={0x00};
      
       NRF24L01TransmitPacket(&nrf,txDatas);
       HAL_Delay(1);
       NRF24L01ReceivePacket(&nrf,rxDatas);
}

4 、應(yīng)用總結(jié)

我們已經(jīng)設(shè)計(jì)并實(shí)現(xiàn)了nRF24L01無線通訊模塊的驅(qū)動(dòng)程序,并且在次驅(qū)動(dòng)程序的基礎(chǔ)上開發(fā)了簡單的測(cè)試應(yīng)用。經(jīng)測(cè)試,這一驅(qū)動(dòng)的設(shè)計(jì)基本上是正確的。

在使用驅(qū)動(dòng)時(shí)需注意,采用SPI接口的器件需要考慮片選操作的問題。如果片選信號(hào)是通過硬件電路來實(shí)現(xiàn)的,我們?cè)诔跏蓟瘯r(shí)給其傳遞NULL值。如果是軟件操作片選則傳遞我們編寫的片選操作函數(shù)。

在使用驅(qū)動(dòng)時(shí),驅(qū)動(dòng)中修改接收和發(fā)送模式時(shí)采用的是直接寫入數(shù)值。其他的寄存器配置也基本都是直接寫入數(shù)值,如果需要修改則需要在源碼中修改。事實(shí)上,需要經(jīng)常修改的可能性并不大,這也是我們寫固定值的原因。另外,驅(qū)動(dòng)中配置的是CRC-16校驗(yàn),如果需要修改也是在源碼中修改數(shù)值。

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

    關(guān)注

    17

    文章

    331

    瀏覽量

    70882
  • 無線通訊
    +關(guān)注

    關(guān)注

    5

    文章

    611

    瀏覽量

    40748
  • 驅(qū)動(dòng)設(shè)計(jì)

    關(guān)注

    1

    文章

    111

    瀏覽量

    15507
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    [Micropython]TPYBoard v10x NRF24L01無線通訊模塊使用教程

    3.實(shí)驗(yàn)原理: 1. 驅(qū)動(dòng)NRF24L01無線通訊模塊TPYBoard v10x的針腳與NRF24L01的針腳對(duì)應(yīng)關(guān)系如下: [tr=tra
    發(fā)表于 05-09 09:43

    如何設(shè)計(jì)并實(shí)現(xiàn)nRF24L01無線通訊模塊驅(qū)動(dòng)程序呢?

    nRF24L01是什么?nRF24L01有何功能呢?如何設(shè)計(jì)并實(shí)現(xiàn)nRF24L01無線通訊模塊
    發(fā)表于 12-16 06:36

    基于nRF24L01的通用無線通信模塊設(shè)計(jì)

    基于nRF24L01的通用無線通信模塊設(shè)計(jì)
    發(fā)表于 01-04 15:25 ?64次下載

    基于nRF24L01的數(shù)據(jù)無線傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    基于nRF24L01的數(shù)據(jù)無線傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    發(fā)表于 01-06 11:38 ?80次下載

    NRF24L01無線模塊_2.4G無線通信模塊_24L01+升級(jí)

    NRF24L01說明,無線模塊的 資料
    發(fā)表于 06-21 16:05 ?33次下載

    nrf24l01無線模塊傳輸距離分析

    本文對(duì)nrf24l01無線模塊傳輸距離進(jìn)行了分析總結(jié),nRF24L01是一款新型單片射頻收發(fā)器件。介紹了三種不同模式的nrf24l01
    發(fā)表于 12-15 13:47 ?3.6w次閱讀

    nRF24L01無線模塊使用教程之經(jīng)典使用程序詳細(xì)資料合集免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是nRF24L01無線模塊使用教程之經(jīng)典使用程序詳細(xì)資料合集免費(fèi)下載。內(nèi)容包括了:NRF24L01參考程序(包含多個(gè)實(shí)例),
    發(fā)表于 10-19 09:29 ?154次下載

    微雪電子NRF24L01 RF Board 2.4G無線模塊簡介

    NRF24L01 2.4G無線模塊 帶SPI接口 采用原裝NRF24L01,比仿冒品性能穩(wěn)定很多,內(nèi)置2.4GHz天線 型號(hào) NRF24
    的頭像 發(fā)表于 12-30 14:32 ?3397次閱讀
    微雪電子<b class='flag-5'>NRF24L01</b> RF Board 2.4G<b class='flag-5'>無線</b><b class='flag-5'>模塊</b>簡介

    nrf24l01是什么模塊_nrf24l01工作原理

    本文首先闡述了nrf24l01概念,其次介紹了nrf24l01的性能參數(shù),最后介紹了nrf24l01的工作原理。
    發(fā)表于 04-24 08:47 ?2w次閱讀

    nRF24L01無線模塊筆記

    nRF24L01無線模塊筆記
    發(fā)表于 11-20 12:21 ?54次下載
    <b class='flag-5'>nRF24L01</b><b class='flag-5'>無線</b><b class='flag-5'>模塊</b>筆記

    nRF24L01無線通信模塊使用簡介

    nRF24L01無線通信模塊使用簡介(STC51)nRF24L01研一課設(shè)做過一個(gè)基于nRF24L01
    發(fā)表于 11-23 17:51 ?49次下載
    <b class='flag-5'>nRF24L01</b><b class='flag-5'>無線</b>通信<b class='flag-5'>模塊</b>使用簡介

    【Arduino】NRF24L01無線模塊6通道通信

    在我們使用NRF24L01 2.4G無線通訊模塊時(shí)往往不只是發(fā)送一個(gè)數(shù)據(jù),這里我以我的項(xiàng)目總使用的6通道來分享。使用到的材料:兩塊NRF24L01
    發(fā)表于 12-17 18:09 ?23次下載
    【Arduino】<b class='flag-5'>NRF24L01</b><b class='flag-5'>無線</b><b class='flag-5'>模塊</b>6通道通信

    使用NRF24L01模塊無線控制的自動(dòng)窗簾

    電子發(fā)燒友網(wǎng)站提供《使用NRF24L01模塊無線控制的自動(dòng)窗簾.zip》資料免費(fèi)下載
    發(fā)表于 07-18 15:00 ?7次下載
    使用<b class='flag-5'>NRF24L01</b><b class='flag-5'>模塊</b><b class='flag-5'>無線</b>控制的自動(dòng)窗簾

    使用nRF24L01模塊進(jìn)行無線射頻通信

    使用nRF24L01模塊進(jìn)行無線射頻通信
    的頭像 發(fā)表于 08-01 11:18 ?5489次閱讀
    使用<b class='flag-5'>nRF24L01</b><b class='flag-5'>模塊</b>進(jìn)行<b class='flag-5'>無線</b>射頻通信

    基于nRF24L01的通用無線通信模塊設(shè)計(jì)案例

    電子發(fā)燒友網(wǎng)站提供《基于nRF24L01的通用無線通信模塊設(shè)計(jì)案例.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 16:28 ?9次下載
    基于<b class='flag-5'>nRF24L01</b>的通用<b class='flag-5'>無線</b>通信<b class='flag-5'>模塊</b>設(shè)計(jì)案例

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品