色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

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

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

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

1 、功能概述

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

Dingtalk_20221206154648.jpg

1.1 、工作模式

nRF24L01無(wú)線通訊模塊可以設(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位來(lái)控制。

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模式通過(guò)允許與單片機(jī)低速通信而無(wú)線部分高速通信,減小了通信的平均消耗電流。

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

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

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

nRF24L01所有配置都在配置寄存器中。所有寄存器都是通過(guò)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)訪問(wèn)多字節(jié)寄存器時(shí)首先要讀/寫(xiě)的是最低字節(jié)的高位。在所有多字節(jié)寄存器被寫(xiě)完之前可以結(jié)束寫(xiě)SPI操作,在這種情況下沒(méi)有寫(xiě)完的高字節(jié)保持原有內(nèi)容不變。例如RX_ADDR_P0寄存器的最低字節(jié)可以通過(guò)寫(xiě)一個(gè)字節(jié)給寄存器RX_ADDR_P0來(lái)改變。在CSN狀態(tài)由高變低后可以通過(guò) MISO 來(lái)讀取狀態(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)碼用來(lái)檢測(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ù)通道擁有自己的地址并且可以通過(guò)寄存器來(lái)進(jìn)行分別配置。數(shù)據(jù)通道是通過(guò)寄存器EN_RXADDR來(lái)設(shè)置的,默認(rèn)狀態(tài)下只有數(shù)據(jù)通道0和數(shù)據(jù)通道1是開(kāi)啟狀態(tài)的。每一個(gè)數(shù)據(jù)通道的地址是通過(guò)寄存器RX_ADDR_Px來(lái)配置的。通常情況下不允許不同的數(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無(wú)線通訊模塊的功能及操作方式,接下來(lái)我們將設(shè)計(jì)并實(shí)現(xiàn)nRF24L01無(wú)線通訊模塊的驅(qū)動(dòng)程序。

2.1 、對(duì)象定義

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

2.1.1 、對(duì)象的抽象

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

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

接著我們還需要考慮nRF24L01無(wú)線通訊模塊對(duì)象的操作問(wèn)題。我們通過(guò)nRF24L01來(lái)收發(fā)數(shù)據(jù)就需要讀寫(xiě)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í)處理總是依賴(lài)于具體的軟硬件平臺(tái),所以我們將延時(shí)處理作為對(duì)象的操作。

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

/* 定義NRF24L01對(duì)象類(lèi)型 */
typedef structNRF24L01Object {
       uint8_t reg[8];//記錄前8個(gè)配置寄存器
       uint8_t (*ReadWriteByte)(uint8_tTxData);//聲明向nRF24L01讀寫(xiě)一個(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)行初始化,所以這里我們來(lái)考慮nRF24L01無(wú)線通訊模塊對(duì)象的初始化函數(shù)。一般來(lái)說(shuō),初始化函數(shù)需要處理幾個(gè)方面的問(wèn)題。一是檢查輸入?yún)?shù)是否合理;二是為對(duì)象的屬性賦初值;三是對(duì)對(duì)象作必要的初始化配置。據(jù)此我們?cè)O(shè)計(jì)nRF24L01無(wú)線通訊模塊對(duì)象的初始化函數(shù)如下:

/*nRF24L01對(duì)象初始化函數(shù)*/
NRF24L01ErrorTypeNRF24L01Initialization(NRF24L01ObjectType *nrf,     //nRF24L01對(duì)象
       NRF24L01ReadWriteByte spiReadWrite,   //SPI讀寫(xiě)函數(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無(wú)線通訊模塊對(duì)象類(lèi)型的定義和對(duì)象初始化函數(shù)的設(shè)計(jì)。但我們的主要目標(biāo)是獲取對(duì)象的信息,接下來(lái)我們還要實(shí)現(xiàn)面向nRF24L01無(wú)線通訊模塊的各類(lèi)操作。

2.2.1 、讀操作

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

Dingtalk_20221206154648.jpg

根據(jù)上述時(shí)序圖以及各寄存器的定義,我們將讀nRF24L01無(wú)線通訊模塊寄存器的方式分為兩類(lèi):一類(lèi)是讀普通的單字節(jié)寄存器,這些寄存器主要與配置和狀態(tài)有關(guān);另一類(lèi)是讀多字節(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)值
}


/*在指定位置讀出指定長(zhǎng)度的數(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 、寫(xiě)操作

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

Dingtalk_20221206154648.jpg

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

/*寫(xiě)寄存器*/
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);        //寫(xiě)入寄存器的值
 nrf->ChipSelect(NRF24L01CS_Disable);            //禁止SPI傳輸
 
 return(status);                      //返回狀態(tài)值
}


/*在指定位置寫(xiě)指定長(zhǎng)度的數(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]);    //寫(xiě)入數(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無(wú)線通訊模塊的驅(qū)動(dòng)程序,我們還需要驗(yàn)證這一驅(qū)動(dòng)程序的設(shè)計(jì)是否符合要求,所以在這一節(jié)中我們將基于nRF24L01無(wú)線通訊模塊的驅(qū)動(dòng)程序設(shè)計(jì)一驗(yàn)證應(yīng)用。

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

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

NRF24L01ObjectTypenrf;

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

NRF24L01ObjectType*nrf,nRF24L01對(duì)象

NRF24L01ReadWriteBytespiReadWrite,SPI讀寫(xiě)函數(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ù)的類(lèi)型如下:

//聲明向nRF24L01讀寫(xiě)一個(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庫(kù)的SPI讀寫(xiě)字節(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庫(kù)則可以直接使用HAL_Delay()函數(shù)。于是我們可以調(diào)用初始化函數(shù)如下:

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

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

我們定義了對(duì)象變量并使用初始化函數(shù)給其作了初始化。接著我們就來(lái)考慮操作這一對(duì)象獲取我們想要的數(shù)據(jù)。我們?cè)隍?qū)動(dòng)中已經(jīng)將獲取數(shù)據(jù)并轉(zhuǎn)換為轉(zhuǎn)換值的比例值,接下來(lái)我們使用這一驅(qū)動(dòng)開(kāi)發(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無(wú)線通訊模塊的驅(qū)動(dòng)程序,并且在次驅(qū)動(dòng)程序的基礎(chǔ)上開(kāi)發(fā)了簡(jiǎn)單的測(cè)試應(yīng)用。經(jīng)測(cè)試,這一驅(qū)動(dòng)的設(shè)計(jì)基本上是正確的。

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • nRF24L01
    +關(guān)注

    關(guān)注

    17

    文章

    331

    瀏覽量

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

    關(guān)注

    5

    文章

    610

    瀏覽量

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

    關(guān)注

    1

    文章

    111

    瀏覽量

    15479
收藏 0人收藏

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

    nrf24l01無(wú)線模塊傳輸距離分析

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

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

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

    微雪電子NRF24L01 RF Board 2.4G無(wú)線模塊簡(jiǎn)介

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

    nrf24l01是什么模塊_nrf24l01工作原理

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

    nRF24L01無(wú)線模塊筆記

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

    nRF24L01無(wú)線通信模塊使用簡(jiǎn)介

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

    【Arduino】NRF24L01無(wú)線模塊6通道通信

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

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

    電子發(fā)燒友網(wǎng)站提供《使用NRF24L01模塊無(wú)線控制的自動(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'>無(wú)線</b>控制的自動(dòng)窗簾

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

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

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

    電子發(fā)燒友網(wǎng)站提供《基于nRF24L01的通用無(wú)線通信模塊設(shè)計(jì)案例.pdf》資料免費(fèi)下載
    發(fā)表于 11-06 16:28 ?9次下載
    基于<b class='flag-5'>nRF24L01</b>的通用<b class='flag-5'>無(wú)線</b>通信<b class='flag-5'>模塊</b>設(shè)計(jì)案例
    主站蜘蛛池模板: 最近日本免费观看MV免费 | 老司机午夜影院试看区 | 亚洲午夜无码久久久久蜜臀av | 又色又爽又黄gif动态视频 | 2017日日干| 激情综合色 | 九九热这里只有精品视频免费 | 高跟丝袜岳第一次 | 大桥未久与黑人中出视频 | 亚洲、国产综合视频 | 色中色最新地址登陆 | 俄罗斯一级毛片aaaa | 麻花传媒MD0044视频 | 内地同志男16china16 | 黄瓜视频苹果直接安装 | 亚洲国产成人精品青青草原100 | 国产在线精彩亚洲久久 | 一攻多受h嗯啊巨肉bl巨污 | 真实处破女全过程完免费观看 | 97国产成人精品免费视频 | 妻子+免费观看完整 | 男女作爱在线播放免费网页版观看 | 我的美女房东未删减版免费观看 | 伊人久久网站 | 又黄又粗又爽免费观看 | 伊人久久综合影院首页 | 中文字幕乱偷无码AV蜜桃 | 久青草国产观看在线视频 | 久久综合视频网站 | 怡春院欧美一区二区三区免费 | 三级貂蝉艳史 在线观看 | 一本道mw高清码二区三区 | 饥渴的40岁熟妇完整版在线 | 99久久精品国产国产毛片 | www.久久久 | 青草在线观看视频 | 四虎永久免费网址 | 99精品视频在线观看免费播放 | 主播蜜汁丝袜精品自拍 | 午夜伦理在线观看 | 91亚洲精品 |

    電子發(fā)燒友

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

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