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

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

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

標簽 > nrf2401

nrf2401

+關(guān)注 0人關(guān)注

nRF2401是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。

文章: 6
視頻: 18
帖子: 73

nrf2401簡介

  nRF2401是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。芯片能耗非常低,以-5dBm的功率發(fā)射時,工作電流只有10.5mA,接收時工作電流只有18mA,多種低功率工作模式,節(jié)能設(shè)計更方便。其DuoCeiverTM技術(shù)使nRF2401可以使用同一天線,同時接收兩個不同頻道的數(shù)據(jù)。nRF2401適用于多種無線通信的場合,如無線數(shù)據(jù)傳輸系統(tǒng)、無線鼠標、遙控開鎖、遙控玩具等。

  nRF2401(最新版本為nRF2401A,nRF2401AG為無鉛工藝版本)是由Nordic公司出品的單芯片無線收發(fā)芯片,工作于2.4GHz~2.5GHz的全球免申請(ISM)頻率。芯片包括一個完全集成的頻率合成器,功率放大器,晶體振蕩器和調(diào)制器。發(fā)射功率和工作頻率等工作參數(shù)可以很容易的通過3線SPI端口完成。極低的電流消耗,在-5dBm的輸出功率時僅為10.5mA,在接收模式時僅為18mA。掉電模式可以很容易的實現(xiàn)低功耗需求。

nrf2401百科

  nRF2401是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。芯片能耗非常低,以-5dBm的功率發(fā)射時,工作電流只有10.5mA,接收時工作電流只有18mA,多種低功率工作模式,節(jié)能設(shè)計更方便。其DuoCeiverTM技術(shù)使nRF2401可以使用同一天線,同時接收兩個不同頻道的數(shù)據(jù)。nRF2401適用于多種無線通信的場合,如無線數(shù)據(jù)傳輸系統(tǒng)、無線鼠標、遙控開鎖、遙控玩具等。

  nRF2401(最新版本為nRF2401A,nRF2401AG為無鉛工藝版本)是由Nordic公司出品的單芯片無線收發(fā)芯片,工作于2.4GHz~2.5GHz的全球免申請(ISM)頻率。芯片包括一個完全集成的頻率合成器,功率放大器,晶體振蕩器和調(diào)制器。發(fā)射功率和工作頻率等工作參數(shù)可以很容易的通過3線SPI端口完成。極低的電流消耗,在-5dBm的輸出功率時僅為10.5mA,在接收模式時僅為18mA。掉電模式可以很容易的實現(xiàn)低功耗需求。

  兼容性

  nRF2401是nRF2401A的早期型號,nRF2401AG是無鉛工藝型號。它們完全兼容,硬件可直接替換,代碼也可相互使用。

  芯片結(jié)構(gòu)

  nRF2401內(nèi)置地址解碼器、先入后出堆棧區(qū)、解調(diào)處理器、時鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來非常方便。QFN24引腳封裝,外形尺寸只有5×5mm。

  工作模式

  nRF2401有工作模式有四種:收發(fā)模式、配置模式、空閑模式和關(guān)機模式。nRF2401的工作模式由PWR_UP 、CE、CS三個引腳決定。

  收發(fā)模式

  nRF2401的收發(fā)模式有ShockBurstTM收發(fā)模式和直接收發(fā)模式兩種,收發(fā)模式由器件配置字決定,具體配置將在器件配置部分詳細介紹。

  ShockBurstTM收發(fā)模式ShockBurstTM收發(fā)模式下,使用片內(nèi)的先入先出堆棧區(qū),數(shù)據(jù)低速從微控制器送入,但高速(1Mbps)發(fā)射,這樣可以盡量節(jié)能,因此,使用低速的微控制器也能得到很高的射頻數(shù)據(jù)發(fā)射速率。與射頻協(xié)議相關(guān)的所有高速信號處理都在片內(nèi)進行,這種做法有三大好處:盡量節(jié)能;低的系統(tǒng)費用(低速微處理器也能進行高速射頻發(fā)射);數(shù)據(jù)在空中停留時間短,抗干擾性高。nRF2401的ShockBurstTM技術(shù)同時也減小了整個系統(tǒng)的平均工作電流。在ShockBurstTM收發(fā)模式下,nRF2401自動處理字頭和CRC校驗碼。在接收數(shù)據(jù)時,自動把字頭和CRC校驗碼移去。在發(fā)送數(shù)據(jù)時,自動加上字頭和CRC校驗碼,當發(fā)送過程完成后,數(shù)據(jù)準備好引腳通知微處理器數(shù)據(jù)發(fā)射完畢。

  ShockBurstTM發(fā)射流程接口引腳為CE,CLK1,DATAA. 當微控制器有數(shù)據(jù)要發(fā)送時,其把CE置高,使nRF2401工作;B. 把接收機的地址和要發(fā)送的數(shù)據(jù)按時序送入nRF2401;C. 微控制器把CE置低,激發(fā)nRF2401進行ShockBurstTM發(fā)射;D. nRF2401的ShockBurstTM發(fā)射給射頻前端供電;射頻數(shù)據(jù)打包(加字頭、CRC校驗碼);高速發(fā)射數(shù)據(jù)包;發(fā)射完成,nRF2401進入空閑狀態(tài)。

  ShockBurstTM接收流程接口引腳CE、DR1、CLK1和DATA(接收通道1)A. 配置本機地址和要接收的數(shù)據(jù)包大??;B. 進入接收狀態(tài),把CE置高;C. 200us后,nRF2401進入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來;D. 當接收到正確的數(shù)據(jù)包(正確的地址和CRC校驗碼),nRF2401自動把字頭、地址和CRC校驗位移去;E. nRF2401通過把DR1(這個引腳一般引起微控制器中斷)置高通知微控制器;F. 微控制器把數(shù)據(jù)從nRF2401移出;G. 所有數(shù)據(jù)移完,nRF2401把DR1置低,此時,如果CE為高,則等待下一個數(shù)據(jù)包,如果CE為低,開始其它工作流程。

  直接收發(fā)模式在直接收發(fā)模式下,nRF2401如傳統(tǒng)的射頻收發(fā)器一樣工作。直接發(fā)送模式接口引腳為CE、DATAA. 當微控制器有數(shù)據(jù)要發(fā)送時,把CE置高;B. nRF2401射頻前端被激活;C. 所有的射頻協(xié)議必須在微控制器程序中進行處理(包括字頭、地址和CRC校驗碼)。

  直接接收模式接口引腳為CE、CLK1和DATAA. 一旦nRF2401被配置為直接接收模式,DATA引腳將根據(jù)天線接收到的信號開始高低變化(由于噪聲的存在);B. CLK1引腳也開始工作;C. 一旦接收到有效的字頭,CLK1引腳和DATA引腳將協(xié)調(diào)工作,把射頻數(shù)據(jù)包以其被發(fā)射時的數(shù)據(jù)從DATA引腳送給微控制器;D. 這頭必須是8位;E. DR引腳沒用上,所有的地址和CRC校驗必須在微控制器內(nèi)部進行。

  配置模式在配置模式,15字節(jié)的配置字被送到nRF2401,這通過CS、CLK1和DATA三個引腳完成,具體的配置方法請參考本文的器件配置部分。

  空閑模式nRF2401的空閑模式是為了減小平均工作電流而設(shè)計,其最大的優(yōu)點是,實現(xiàn)節(jié)能的同時,縮短芯片的起動時間。在空閑模式下,部分片內(nèi)晶振仍在工作,此時的工作電流跟外部晶振的頻率有關(guān),如外部晶振為4MHz時工作電流為12uA,外部晶振為16MHz時工作電流為32uA。在空閑模式下,配置字的內(nèi)容保持在nRF2401片內(nèi)。

  關(guān)機模式在關(guān)機模式下,為了得到最小的工作電流,一般此時的工作電流小于1uA。關(guān)機模式下,配置字的內(nèi)容也會被保持在nRF2401片內(nèi),這是該模式與斷電狀態(tài)最大的區(qū)別。

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片主要特點:

  工作在2.4~2.5GHz頻段;

  無線數(shù)據(jù)傳輸率可達1~2MHz;

  SPI接口速率0~8MHz;

  125可選工作頻道(可跳頻);

  工作電壓1.9~3.6V;

  增強型ShockBurst™模式;

  當NRF2401+模塊工作在增強型ShockBurst™模式時,可以使用自動應(yīng)答和自動重發(fā)功能,當然這些都不具有誘惑力,最多提高了數(shù)據(jù)傳輸?shù)男屎头€(wěn)定性,數(shù)據(jù)傳輸依然是單方向的。增強型ShockBurst™模式下有一種ACK帶數(shù)據(jù)返回的功能,這個功能很強大,不需要人為的在程序中切換接收和發(fā)送狀態(tài),只需要通過寄存器簡單的配置,就可以實現(xiàn)數(shù)據(jù)的雙向傳輸,對于平常的學習,尤其是利用上位機調(diào)試參數(shù),非常方便。本文主要介紹這種模式的配置以及自己對過程的理解、總結(jié)和一些疑問。

  一、SPI指令和一部分寄存器如下:

  SPI指令:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  部分寄存器:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  二、增強型ShockBurst™模式下ACK帶數(shù)據(jù)返回功能的配置過程解釋:

  1、關(guān)于ACK帶數(shù)據(jù)返回功能需要的額外配置:

  參考手冊部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  由手冊可知,如果要使用ACK帶數(shù)據(jù)返回功能,必須額外滿足:

  ~使能動態(tài)數(shù)據(jù)長度,即接收和發(fā)送數(shù)據(jù)長度可變,詳見主接收設(shè)備配置部分解釋;

  ~主接收端將隨ACK返回的數(shù)據(jù)利用W_ACK_PAYLOADAY指令放入發(fā)送緩沖區(qū),詳見后文;

  ~置位FEATURE寄存器中的位EN_ACK_PAY,使能ACK帶數(shù)據(jù)返回功能;

  ~最大重發(fā)時間間隔的設(shè)置步進值為250us,設(shè)置為500us適用于0~32任意長度字節(jié)的負載數(shù)據(jù);(感覺翻譯很別扭,上面的英文意思倒是很清晰!?。?/p>

  注:此程序配置中一個主發(fā)送設(shè)備,一個主接收設(shè)備,均使用通道0進行數(shù)據(jù)傳輸;

  2、主發(fā)送設(shè)備的配置過程解析

  //函數(shù)名 : void NRF_TX_Mode(void)

  //功能 : 初始化NRF2401+模塊為發(fā)送模式

  //輸入?yún)?shù): 無

  //返回參數(shù): 無

  void NRF_TX_Mode(void)

  {

  //CE拉低,配置寄存器

  NRF_CE_LOW();

  // 寫TX節(jié)點地址(1)

  SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);

  // 寫RX節(jié)點地址 (2)

  SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);

  // 使能通道0的自動應(yīng)答(3)

  SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);

  // 使能通道0的接收地址(4)

  SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);

  //設(shè)置自動重發(fā)間隔時間:500us最大自動重發(fā)次數(shù):10次(5)

  SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);

  // 設(shè)置RF頻率,手冊有詳細解釋(6)

  SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,50);

  // 設(shè)置TX發(fā)射參數(shù),0db增益,2Mbps,低噪聲增益開啟(7)

  SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f);

  //清除發(fā)送和接收緩沖區(qū)(8)

  SPI_NRF_WriteReg(FLUSH_TX,0xff);

  SPI_NRF_WriteReg(FLUSH_RX,0xff);

  //IRQ收發(fā)完成中斷開啟,16位CRC,主發(fā)送(9)

  SPI_NRF_WriteReg(NRF_WRITE_REG + CONFIG_NRF, 0x0e);

  //Active命令(10)

  SPI_NRF_RW(0x50);

  SPI_NRF_RW(0x73);

  //使能動態(tài)數(shù)據(jù)長度(11)

  SPI_NRF_WriteReg(NRF_WRITE_REG+0x1c,0x01);

  //使能ACK帶數(shù)據(jù)返回功能(12)

  SPI_NRF_WriteReg(NRF_WRITE_REG+0x1d,0x06);

  //CE拉高,進入發(fā)送模式(13)

  NRF_CE_HIGH();

  }

  程序解釋:

  (1)僅用于主發(fā)送設(shè)備,寫主發(fā)送設(shè)備發(fā)送節(jié)點地址,地址通過軟件設(shè)定,可通過操作寄存器SETUP_AW修改地址寬度(1~5字節(jié)),寄存器復位之后,默認地址寬度為5字節(jié);

  主發(fā)送設(shè)備的發(fā)送節(jié)點地址必須和主接收設(shè)備的接收節(jié)點地址一致,否則接收不到數(shù)據(jù)。

  通道0和1有5個字節(jié)寬度;

  通道2~5的高32位必須和通道1相同,低8位可以通過軟件設(shè)置;

  參考手冊寄存器部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

 ?。?)寫接收節(jié)點地址,只有通道0可以用來接收ACK信號或ACK+返回數(shù)據(jù),此地址必須和主發(fā)送設(shè)備的發(fā)送節(jié)點地址相同,即和(1)的相同。

  (3)通道0的自動應(yīng)答,必須;

  (4)使能通道0的接收地址,必須;

  (5)最大重發(fā)間隔時間至少設(shè)置為500us,最大重發(fā)次數(shù)1~15;

  參考手冊:ARD=500µs will be long enough for any payload length.

  (6)設(shè)置通信頻率,取值為0~125,取值50,即NEF模塊的射頻頻率為2.450GHz;

  參考手冊:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  上文大概意思是:可以通過給寄存器RF_CH這個寄存器寫入?yún)?shù)0~125,使得NRF模塊射頻通道的通信頻率在2.400GHz~2.525GHz范圍內(nèi),射頻信道的頻率分辨率為1MHz,為了防止信道發(fā)生重疊,不同信道之間的射頻頻率相差至少2MHz, 射頻信道的頻率由下列公式計算:

  F = 2400 + rf_ch [MHz]

  為了能夠彼此通信,發(fā)射機和接收機的射頻信道的頻率必須相同,即寄存器RF_CH設(shè)置一致。

 ?。?)設(shè)置發(fā)射參數(shù),具體參考手冊寄存器部分;

  (8)清除發(fā)送和接收緩沖區(qū),如果不進行清除,測試可用;

 ?。?)配置中斷和CRC校驗等,CRC校驗8位和16位均可;

 ?。?0)激活命令,用于激活R_RX_PL_WID、W_ACK_PAYLOAD 、W_TX_PAYLOAD_NOACK;

  參考手冊SPI指令部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  從手冊中可以看到,使用ACTIVE(0x50)指令并寫入數(shù)據(jù)0x73可以激活R_RX_PL_WID、W_ACK_PAYLOAD 指令和W_TX_PAYLOAD_NOACK (存在于寄存器FEATURE)狀態(tài),使用 R_RX_PL_WID指令可以得到接收到的數(shù)據(jù)長度;W_ACK_PAYLOAD 指令僅用于主接收設(shè)備,存儲將要和ACK一起返回的數(shù)據(jù),PPP的取值范圍為000~101,表示0~6六個數(shù)據(jù)通道,所以W_ACK_PAYLOAD 指令的取值范圍為0xa8~0xad,分別表示0~6六個通道,具體使用在主接收部分講解。

 ?。?1)操作寄存器DYNPD使能通道0的動態(tài)數(shù)據(jù)長度;

  ACK帶數(shù)據(jù)返回功能必須使用動態(tài)數(shù)據(jù)長度,詳見靜態(tài)和動態(tài)數(shù)據(jù)長度介紹部分。

 ?。?2)置位寄存器 FEATURE寄存器里的 EN_DPL 和 EN_ACK_PAY狀態(tài)位;

  從下面的參考手冊可以得知,要想使能通道0的動態(tài)數(shù)據(jù)長度,還需要使能EN_DPL位;

  置位 EN_ACK_PAY狀態(tài)位的目的是使能ACK帶數(shù)據(jù)返回功能。

  參考手冊寄存器部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

 ?。?3)進入發(fā)送模式。

  // 函數(shù)名 : void NRF_Tx_Dat(u8 *txbuf , u8 datlen)

  // 功能 :發(fā)送數(shù)據(jù)

  // 輸入?yún)?shù): txbuf(需要發(fā)送的數(shù)據(jù)包),datlen(數(shù)據(jù)長度)

  // 返回參數(shù): 無

  void NRF_Tx_Dat(u8 *txbuf , u8 datlen)

  {

  // CE拉低,將數(shù)據(jù)寫入緩沖區(qū)

  NRF_CE_LOW();

  // 寫數(shù)據(jù)到TX BUF 最大32個字節(jié) (14)

  SPI_NRF_WriteBuf(WR_TX_PLOAD,txbuf,datlen);

  // CE為高,發(fā)送數(shù)據(jù)包(15)

  NRF_CE_HIGH();

  }

 ?。?4)使用W_TX_PAYLOAD指令將要發(fā)送的數(shù)據(jù)寫入發(fā)送緩沖區(qū);

 ?。?5)CE置高10us后,主發(fā)送設(shè)備開始發(fā)送數(shù)據(jù);

  // 函數(shù)名 : void Nrf_Check_Event(u8 *rxbuf)

  // 功能 :接收ACK返回的數(shù)據(jù),并清除相應(yīng)中斷標志位

  // 輸入?yún)?shù): txbuf(需要發(fā)送的數(shù)據(jù)包),datlen(數(shù)據(jù)長度)

  // 返回參數(shù): 無

  注:此函數(shù)在主程序中每隔2ms執(zhí)行一次,檢測是否接收到和ACK一起返回的數(shù)據(jù)

  void Nrf_Check_Event(u8 *rxbuf)

  {

  //得到中斷標志位(16)

  u8 sta = SPI_NRF_ReadReg(NRF_READ_REG + STATUS);

  if(sta & RX_DR)

  {

  //得到數(shù)據(jù)長度(17)

  u8 rx_len = SPI_NRF_ReadReg(R_RX_PL_WID);

  if(rx_len《33)

  {

  // 接收返回數(shù)據(jù)

  SPI_NRF_ReadBuf(RD_RX_PLOAD,rxbuf,rx_len);

  // 解析收到數(shù)據(jù)

  Data_Receive_Anl(rxbuf,rx_len);

  }

  else

  {

  // 清空接收緩沖區(qū)

  SPI_NRF_WriteReg(FLUSH_RX,0xff);

  }

  }

  if(sta & TX_DS)

  {

  }

  if(sta & MAX_RT)

  {

  if(sta & 0x01)

  {

  // 清空發(fā)送緩沖區(qū)

  SPI_NRF_WriteReg(FLUSH_TX,0xff);

  }

  }

  // 清除中斷標志位(18)

  SPI_NRF_WriteReg(NRF_WRITE_REG + STATUS, sta);

  }

 ?。?6)初始化過程中使能了發(fā)送成功、接收成功、達到最大重發(fā)次數(shù)中斷,此處目的是得到中斷標志位,從而執(zhí)行相應(yīng)的操作;

  (17)從上面的指令部分可以得知,利用R_RX_PL_WID指令可以得到接收到的數(shù)據(jù)的長度;

 ?。?8)中斷標志位必須清除。

  3、主接收設(shè)備的配置過程解析

  //函數(shù)名 : void NRF_RX_Mode(void)

  //功能 : 初始化NRF2401+模塊為發(fā)送模式

  //輸入?yún)?shù): 無

  //返回參數(shù): 無

  void NRF_RX_Mode(void)

  {

  NRF_CE_LOW();

  //寫TX節(jié)點地址(1)

  // SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);

  //寫RX節(jié)點地址(2)

  SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);

  //使能通道0的自動應(yīng)答(3)

  SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01);

  //使能通道0的接收地址(4)

  SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);

  //設(shè)置RF通信頻率(5)

  SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,50);

  //設(shè)置自動重發(fā)間隔時間:500us;最大自動重發(fā)次數(shù):10次(6)

  // SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);

  //選擇通道0的有效數(shù)據(jù)寬度(靜態(tài)數(shù)據(jù)長度需要配置,動態(tài)數(shù)據(jù)長度不需要配置)(7)

  //SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);

  //設(shè)置RX發(fā)射參數(shù),0db增益,2Mbps,低噪聲增益開啟(8)

  SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f);

  SPI_NRF_WriteReg(FLUSH_TX,0xff);

  SPI_NRF_WriteReg(FLUSH_RX,0xff);

  // IRQ收發(fā)完成中斷開啟,16位CRC,主接收(9)

  SPI_NRF_WriteReg(NRF_WRITE_REG + CONFIG, 0x0f);

  // ACTIVE (10)

  SPI_NRF_RW(0x50);

  SPI_NRF_RW(0x73);

  //使能動態(tài)數(shù)據(jù)長度(11)

  SPI_NRF_WriteReg(NRF_WRITE_REG+0x1c,0x01);

  //使能ACK帶數(shù)據(jù)返回功能 (12)

  SPI_NRF_WriteReg(NRF_WRITE_REG+0x1d,0x06);

  //CE拉高,進入接收模式(13)

  NRF_CE_HIGH();

  }

 ?。?)寄存器TX_ADDR “ Used for a PTX device only”,即用于主發(fā)送設(shè)備,主接收設(shè)備配置這個寄存器不起作用;

 ?。?)配置主接收設(shè)備的接收數(shù)據(jù)節(jié)點地址,必須和主發(fā)送設(shè)備的發(fā)送端節(jié)點數(shù)據(jù)地址相同,否則接收不到數(shù)據(jù);

 ?。?)使能通道0的自動應(yīng)答,因為主發(fā)送設(shè)備通過通道0進行數(shù)據(jù)發(fā)送;

  從手冊中可以看到,如果使能ACK,則需要使能相應(yīng)通道的自動應(yīng)答;

  參考手冊部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  (4)使能通道0的接收地址,目的是能接受數(shù)據(jù);

 ?。ǎ担┤≈?0,即NEF主接收模塊的射頻頻率為2.450GHz;

  主發(fā)送模塊的射頻頻率必須和主接收模塊的射頻頻率相同;

  詳見主發(fā)送部分介紹;

  (6)設(shè)置”最大重發(fā)次數(shù)“和”自動重發(fā)延時“;

  如手冊所示,只應(yīng)用于主發(fā)送端,主接收端不需要配置;

  所謂“自動重發(fā)”是指,當發(fā)送端在特定的時間內(nèi)沒有接收到返回的ACK時,則重新發(fā)送剛才的數(shù)據(jù),直到達到最大重發(fā)次數(shù);

  參考手冊部分:NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

 ?。?)配置接收數(shù)據(jù)長度;

  只有靜態(tài)數(shù)據(jù)長度模式下需要配置,動態(tài)數(shù)據(jù)長度模式下不需要配置;

  參考手冊部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  通過手冊可知,在增強型ShockBurst 模式下,傳輸數(shù)據(jù)長度(最大32字節(jié))有靜態(tài)和動態(tài)兩種模式,所謂靜態(tài)指每次發(fā)送的數(shù)據(jù)長度固定,所謂動態(tài)是指每次發(fā)送的數(shù)據(jù)可隨意長度,但是在ACK帶數(shù)據(jù)返回模式下,只能使用動態(tài)數(shù)據(jù)長度。

  靜態(tài)數(shù)據(jù)長度模式下,主接收端可通過配置RX_PW_P0寄存器,設(shè)置接收數(shù)據(jù)長度,接收數(shù)據(jù)長度必須和發(fā)送端發(fā)送的數(shù)據(jù)長度相等;

  動態(tài)數(shù)據(jù)長度模式下,接收端(無論是主接收端還是主發(fā)送端處于接受模式時)可以使用用R_RX_PL_WID(0110 0000)指令得到接收數(shù)據(jù)長度;

  為了使能動態(tài)數(shù)據(jù)長度模式,F(xiàn)EATURE寄存器中的EN_DPL位必須置位(無論主發(fā)送端還是主接收端),同時主發(fā)送端的寄存器DYNPD中的位DPL_P0必須置位,主接收端寄存器DYNPD中的位DPL_PX必須置位(用到哪個通道置位哪個通道)。

 ?。?)參數(shù)配置,必須和主發(fā)送設(shè)備一致,詳見手冊;

 ?。?)基本配置;

  必須和主發(fā)送端設(shè)置一致;

 ?。?0)(11)(12)詳見主發(fā)送端配置說明;

 ?。?3)CE置高130us后,主接收設(shè)備開始檢測是否有數(shù)據(jù)需要接收;

  //函數(shù)名 : void NRF_Tx_Dat_AP(u8 * tx_buf, u8 len)

  //功能 : ACK帶數(shù)據(jù)返回函數(shù)

  //輸入?yún)?shù): tx_buf(發(fā)送數(shù)據(jù)包),len(數(shù)據(jù)長度)

  //返回參數(shù): 無

  void NRF_Tx_Dat_AP(u8 * tx_buf, u8 len)

  {

  // CE拉低,將數(shù)據(jù)寫入緩沖區(qū)

  NRF_CE_LOW();

  // 寫數(shù)據(jù)到TX BUF 最大32個字節(jié)(14)

  SPI_NRF_WriteBuf(0xa8, tx_buf, len);

  // CE為高,發(fā)送數(shù)據(jù)包

  NRF_CE_HIGH();

  }

  (14)ACK帶數(shù)據(jù)返回時,使用W_ACK_PAYLOAD(10101PPP)指令存儲將要返回的數(shù)據(jù),PPP表示通道0~5,取值為001~101;如果同時有六個設(shè)備(主發(fā)送)與一個設(shè)備(主接收)進行通信,則0xac表示接收端此時使用的是第4通道帶數(shù)據(jù)返回;

  // 函數(shù)名 : u8 Nrf_Check_Event(u8 *rxbuf)

  // 功能 :接收數(shù)據(jù),并清除相應(yīng)中斷標志位

  // 輸入?yún)?shù): txbuf(接收的數(shù)據(jù)包),datlen(數(shù)據(jù)長度)

  // 返回參數(shù): sta (中斷標志位)

  u8 Nrf_Check_Event(u8 *rxbuf)

  {

  u8 sta = 0;

  sta = SPI_NRF_ReadReg(STATUS);

  if(sta & RX_DR)//接收中斷

  {

  //得到數(shù)據(jù)長度

  u8 rx_len = SPI_NRF_ReadReg(R_RX_PL_WID);

  //讀取數(shù)據(jù)

  SPI_NRF_ReadBuf(RD_RX_PLOAD,rxbuf,rx_len);

  SPI_NRF_WriteReg(FLUSH_RX,NOP);

  }

  if(sta & TX_DS)

  {

  }

  if(sta & MAX_RT)

  {

  if(sta & 0x01)

  {

  SPI_NRF_WriteReg(FLUSH_TX,0xff);

  }

  }

  // 清除中斷標志位

  SPI_NRF_WriteReg(NRF_WRITE_REG + STATUS, sta);

  return sta;

  }

  三、增強型ShockBurst™模式下多機通信:

  這部分主要介紹一下多機通信,即一個主接收設(shè)備與六個主發(fā)送設(shè)備進行通信,當然大多數(shù)情況下,我們用不到這個,這部分的主要目的理解接收數(shù)據(jù)地址和發(fā)送數(shù)據(jù)地址之間的關(guān)系。

  參考手冊部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

  這部分主要提到多機通信的過程中,所有設(shè)備的如下設(shè)置要一致:

  ~CRC使能;

  ~CRC配置(8位或16位);

  ~接收數(shù)據(jù)地址寬度;

  ~RF_CH配置相同,即射頻頻率需要配置一致;

  ~無線數(shù)據(jù)傳輸速率;

  ~低噪聲放大器增益;

  置位寄存器EN_RXADDR相應(yīng)位可以使能相應(yīng)的數(shù)據(jù)通道,數(shù)據(jù)通道地址可以通過RX_ADDR_PX寄存器來進行配置;

  參考手冊部分:

  NRF2401+芯片的ACK帶數(shù)據(jù)返回功能的理解和總結(jié)

查看詳情

nrf2401技術(shù)

一種基于GPS的智能寵物防丟失器設(shè)計

一種基于GPS的智能寵物防丟失器設(shè)計

本文主要介紹了一種基于GPS的智能寵物防丟失器設(shè)計。AT89C52單片機作為MCU,結(jié)合無線通信模塊nRF2401的無線距離報警器,通過從機向主機不間斷...

2017-12-28 標簽:gpsgsmnrf2401 7945 0

查看更多>>

nrf2401資訊

NRF2401的工作原理

NRF2401的工作原理

nRF2401是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻...

2017-11-20 標簽:振蕩器nrf2401 1.2萬 0

基于S3C2440的nRF2401驅(qū)動設(shè)計

基于S3C2440的nRF2401驅(qū)動設(shè)計

通信頻率為2.4GHz 的ISM 頻段,由于其免許可證、波長較短、天線的尺寸小、外圍器件少等優(yōu)點,適合于近距離無線通信。將ARM9 與nRF24E1 結(jié)...

2012-08-02 標簽:arm9S3C2440nRF2401 3010 0

nRf2401+CP2102實現(xiàn)USB2.0無線測控網(wǎng)絡(luò)

nRf2401+CP2102實現(xiàn)USB2.0無線測控網(wǎng)絡(luò)

nRf2401+CP2102實現(xiàn)USB2.0無線測控網(wǎng)絡(luò):使用USB-UART橋接電路CP2102可以避免缺少開發(fā)知識等麻煩。

2012-03-20 標簽:無線USB2.0nRf2401 3568 0

基于nRF2401的手持式讀寫器的設(shè)計

基于nRF2401的手持式讀寫器的設(shè)計

本文設(shè)計了一款有源RFID便攜式讀寫器。本讀寫器工作在2.4GHz~2.5GHz的頻率范圍內(nèi),其特點是讀寫距離遠、數(shù)據(jù)傳輸量大、存儲能力強,主要應(yīng)用于大...

2011-09-19 標簽:RFIDnRF2401W77E58 1522 0

基于nRF2401的牲畜信息讀寫器的研究

基于nRF2401的牲畜信息讀寫器的研究

實現(xiàn)設(shè)計的過程中,電磁干擾問題很突出。將讀寫器的PCB設(shè)計成雙層板,底層作為地層不放置元件,頂層的空地方敷上銅,并將敷銅通過過孔與底層的地相連,可大大降...

2011-08-24 標簽:讀寫器nRF2401牲畜信息 1190 1

查看更多>>

nrf2401數(shù)據(jù)手冊

相關(guān)標簽

相關(guān)話題

換一批
  • IOT
    IOT
    +關(guān)注
    IoT是Internet of Things的縮寫,字面翻譯是“物體組成的因特網(wǎng)”,準確的翻譯應(yīng)該為“物聯(lián)網(wǎng)”。物聯(lián)網(wǎng)(Internet of Things)又稱傳感網(wǎng),簡要講就是互聯(lián)網(wǎng)從人向物的延伸。
  • 海思
    海思
    +關(guān)注
  • STM32F103C8T6
    STM32F103C8T6
    +關(guān)注
    STM32F103C8T6是一款集成電路,芯體尺寸為32位,程序存儲器容量是64KB,需要電壓2V~3.6V,工作溫度為-40°C ~ 85°C。
  • 數(shù)字隔離
    數(shù)字隔離
    +關(guān)注
    數(shù)字隔離技術(shù)常用于工業(yè)網(wǎng)絡(luò)環(huán)境的現(xiàn)場總線、軍用電子系統(tǒng)和航空航天電子設(shè)備中,尤其是一些應(yīng)用環(huán)境比較惡劣的場合。數(shù)字隔離電路主要用于數(shù)字信號和開關(guān)量信號的傳輸。另一個重要原因是保護器件(或人)免受高電壓的危害。本文詳細介紹了數(shù)字隔離器工作原理及特點,選型及應(yīng)用,各類數(shù)字隔離器件性能比較等內(nèi)容。
  • 硬件工程師
    硬件工程師
    +關(guān)注
    硬件工程師Hardware Engineer職位 要求熟悉計算機市場行情;制定計算機組裝計劃;能夠選購組裝需要的硬件設(shè)備,并能合理配置、安裝計算機和外圍設(shè)備;安裝和配置計算機軟件系統(tǒng);保養(yǎng)硬件和外圍設(shè)備;清晰描述出現(xiàn)的計算機軟硬件故障。
  • wifi模塊
    wifi模塊
    +關(guān)注
    Wi-Fi模塊又名串口Wi-Fi模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或TTL電平轉(zhuǎn)為符合Wi-Fi無線網(wǎng)絡(luò)通信標準的嵌入式模塊,內(nèi)置無線網(wǎng)絡(luò)協(xié)議IEEE802.11b.g.n協(xié)議棧以及TCP/IP協(xié)議棧。傳統(tǒng)的硬件設(shè)備嵌入Wi-Fi模塊可以直接利用Wi-Fi聯(lián)入互聯(lián)網(wǎng),是實現(xiàn)無線智能家居、M2M等物聯(lián)網(wǎng)應(yīng)用的重要組成部分。
  • 74ls74
    74ls74
    +關(guān)注
    74LS74是雙D觸發(fā)器。功能多,可作雙穩(wěn)態(tài)、寄存器、移位寄存器、振蕩器、單穩(wěn)態(tài)、分頻計數(shù)器等功能。本章詳細介紹了74ls112的功能及原理,74ls74引腳圖及功能表,74ls112的應(yīng)用等內(nèi)容。
  • MPU6050
    MPU6050
    +關(guān)注
    MPU-6000(6050)為全球首例整合性6軸運動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時間軸之差的問題,減少了大量的封裝空間。
  • UHD
    UHD
    +關(guān)注
    UHD是”超高清“的意思UHD的應(yīng)用在電視機技術(shù)上最為普遍,目前已有不少廠商推出了UHD超高清電視。
  • Protues
    Protues
    +關(guān)注
    Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風標電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。
  • STC12C5A60S2
    STC12C5A60S2
    +關(guān)注
    在眾多的51系列單片機中,要算國內(nèi)STC 公司的1T增強系列更具有競爭力,因他不但和8051指令、管腳完全兼容,而且其片內(nèi)的具有大容量程序存儲器且是FLASH工藝的,如STC12C5A60S2單片機內(nèi)部就自帶高達60K FLASHROM,這種工藝的存儲器用戶可以用電的方式瞬間擦除、改寫。
  • 循跡小車
    循跡小車
    +關(guān)注
    做單片機的工程師相比都堆循跡小車有所認識,它是自動引導機器人系統(tǒng)的基本應(yīng)用,那么今天小編就給大家介紹下自動自動循跡小車的原理,智能循跡小車的應(yīng)用,智能循跡小車程序,循跡小車用途等知識吧!
  • 光立方
    光立方
    +關(guān)注
    光立方是由四千多棵光藝高科技“發(fā)光樹”組成的,在2009年10月1日天安門廣場舉行的國慶聯(lián)歡晚會上面世。這是新中國成立六十周年國慶晚會最具創(chuàng)意的三大法寶之首。
  • K60
    K60
    +關(guān)注
  • LM2596
    LM2596
    +關(guān)注
    LM2596是降壓型電源管理單片集成電路的開關(guān)電壓調(diào)節(jié)器,能夠輸出3A的驅(qū)動電流,同時具有很好的線性和負載調(diào)節(jié)特性。固定輸出版本有3.3V、5V、12V,可調(diào)版本可以輸出小于37V的各種電壓。
  • 光模塊
    光模塊
    +關(guān)注
    光模塊(optical module)由光電子器件、功能電路和光接口等組成,光電子器件包括發(fā)射和接收兩部分。簡單的說,光模塊的作用就是光電轉(zhuǎn)換,發(fā)送端把電信號轉(zhuǎn)換成光信號,通過光纖傳送后,接收端再把光信號轉(zhuǎn)換成電信號。
  • STM32單片機
    STM32單片機
    +關(guān)注
    STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARM Cortex-M3內(nèi)核
  • 步進驅(qū)動器
    步進驅(qū)動器
    +關(guān)注
    步進驅(qū)動器是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速和定位的目的。
  • Nexperia
    Nexperia
    +關(guān)注
    Nexperia是大批量生產(chǎn)基本半導體的領(lǐng)先專家,這些半導體是世界上每個電子設(shè)計都需要的組件。該公司廣泛的產(chǎn)品組合包括二極管、雙極晶體管、ESD 保護器件、MOSFET、GaN FET 以及模擬和邏輯IC。
  • CD4046
    CD4046
    +關(guān)注
    cD4046是通用的CMOS鎖相環(huán)集成電路,其特點是電源電壓范圍寬(為3V-18V),輸入阻抗高(約100MΩ),動態(tài)功耗小,在中心頻率f0為10kHz下功耗僅為600μW,屬微功耗器件。本章主要介紹內(nèi)容有,CD4046的功能 cd4046鎖相環(huán)電路,CD4046無線發(fā)射,cd4046運用,cd4046鎖相環(huán)電路圖。
  • COMSOL
    COMSOL
    +關(guān)注
    COMSOL集團是全球多物理場建模解決方案的提倡者與領(lǐng)導者。憑借創(chuàng)新的團隊、協(xié)作的文化、前沿的技術(shù)、出色的產(chǎn)品,這家高科技工程軟件公司正飛速發(fā)展,并有望成為行業(yè)領(lǐng)袖。其旗艦產(chǎn)品COMSOL Multiphysics 使工程師和科學家們可以通過模擬,賦予設(shè)計理念以生命。
  • 加速度傳感器
    加速度傳感器
    +關(guān)注
    加速度傳感器是一種能夠測量加速度的傳感器。通常由質(zhì)量塊、阻尼器、彈性元件、敏感元件和適調(diào)電路等部分組成。
  • 聯(lián)網(wǎng)技術(shù)
    聯(lián)網(wǎng)技術(shù)
    +關(guān)注
  • 服務(wù)機器人
    服務(wù)機器人
    +關(guān)注
    服務(wù)機器人是機器人家族中的一個年輕成員,到目前為止尚沒有一個嚴格的定義。不同國家對服務(wù)機器人的認識不同。
  • 四軸飛行器
    四軸飛行器
    +關(guān)注
    四軸飛行器,又稱四旋翼飛行器、四旋翼直升機,簡稱四軸、四旋翼。這四軸飛行器(Quadrotor)是一種多旋翼飛行器。四軸飛行器的四個螺旋槳都是電機直連的簡單機構(gòu),十字形的布局允許飛行器通過改變電機轉(zhuǎn)速獲得旋轉(zhuǎn)機身的力,從而調(diào)整自身姿態(tài)。具體的技術(shù)細節(jié)在“基本運動原理”中講述。
  • 基站測試
    基站測試
    +關(guān)注
    802.11ac與11基站測試(base station tests) 在基站設(shè)備安裝完畢后,對基站設(shè)備電氣性能所進行的測量。n的區(qū)別,802.11n無線網(wǎng)卡驅(qū)動,802.11n怎么安裝。
  • TMS320F28335
    TMS320F28335
    +關(guān)注
    TMS320F28335是一款TI高性能TMS320C28x系列32位浮點DSP處理器
  • 靜電防護
    靜電防護
    +關(guān)注
    為防止靜電積累所引起的人身電擊、火災(zāi)和爆炸、電子器件失效和損壞,以及對生產(chǎn)的不良影響而采取的防范措施。其防范原則主要是抑制靜電的產(chǎn)生,加速靜電泄漏,進行靜電中和等。
  • OBD
    OBD
    +關(guān)注
    OBD是英文On-Board Diagnostic的縮寫,中文翻譯為“車載診斷系統(tǒng)”。這個系統(tǒng)隨時監(jiān)控發(fā)動機的運行狀況和尾氣后處理系統(tǒng)的工作狀態(tài),一旦發(fā)現(xiàn)有可能引起排放超標的情況,會馬上發(fā)出警示。
  • SDK
    SDK
    +關(guān)注
      SDK一般指軟件開發(fā)工具包,軟件開發(fā)工具包一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件時的開發(fā)工具的集合。軟件開發(fā)工具廣義上指輔助開發(fā)某一類軟件的相關(guān)文檔、范例和工具的集合。

關(guān)注此標簽的用戶(3人)

救贖621799 耳鳴你好我叫 五岳散人

編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語言教程專題