![NRF24l01使用手冊函數介紹(共8頁)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/22/70a90b28-33e2-473a-a46b-9c1dce1dc41d/70a90b28-33e2-473a-a46b-9c1dce1dc41d1.gif)
![NRF24l01使用手冊函數介紹(共8頁)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/22/70a90b28-33e2-473a-a46b-9c1dce1dc41d/70a90b28-33e2-473a-a46b-9c1dce1dc41d2.gif)
![NRF24l01使用手冊函數介紹(共8頁)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/22/70a90b28-33e2-473a-a46b-9c1dce1dc41d/70a90b28-33e2-473a-a46b-9c1dce1dc41d3.gif)
![NRF24l01使用手冊函數介紹(共8頁)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/22/70a90b28-33e2-473a-a46b-9c1dce1dc41d/70a90b28-33e2-473a-a46b-9c1dce1dc41d4.gif)
![NRF24l01使用手冊函數介紹(共8頁)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/22/70a90b28-33e2-473a-a46b-9c1dce1dc41d/70a90b28-33e2-473a-a46b-9c1dce1dc41d5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 NRF24l01使用手冊以及函數指令寄存器介紹芯片簡介NRF24L01 是 NORDIC 公司最近生產的一款無線通信通信芯片,采用 FSK 調制,內部集成 NORDIC 自己的 Enhanced Short Burst 協(xié)議??梢詫崿F點對點或是 1 對 6 的無線通信。無線通信速度可以達到 2M( bps)。 NORDIC 公司提供通信模塊的 GERBER 文件,可以直接加工生產。嵌入式工程師或是單片機愛好者只需要為單片機系統(tǒng)預留 5 個 GPIO, 1 個中斷輸入引腳,就可以很容易實現無線通信的功能,非常適合用來為 MCU 系統(tǒng)構建無線通信功能。NRF24L01功能框圖NRF24L01 的
2、框圖如 Fig.1 所示,從單片機控制的角度來看,我們只需要關注 Fig.1 右面的六個控制和數據信號,分別為 CSN、 SCK、 MISO、 MOSI、 IRQ、 CE。CSN:芯片的片選線, CSN 為低電平芯片工作。SCK:芯片控制的時鐘線( SPI 時鐘)MISO:芯片控制數據線( Master input slave output)MOSI:芯片控制數據線( Master output slave input)IRQ:中斷信號。無線通信過程中 MCU 主要是通過 IRQ 與 NRF24L01 進行通信。CE:芯片的模式控制線。 在 CSN 為低的情況下, CE 協(xié)同 NRF24L01
3、 的 CONFIG 寄存器共同決定 NRF24L01 的狀態(tài)(參照 NRF24L01 的狀態(tài)機)。NRF24L01狀態(tài)機NRF24L01 的狀態(tài)機見 Fig.2 所示,對于 NRF24L01 的固件編程工作主要是參照NRF24L01 的狀態(tài)機。主要有以下幾個狀態(tài)Power Down Mode:掉電模式Tx Mode:發(fā)射模式Rx Mode:接收模式Standby-1Mode:待機 1 模式Standby-2 Mode:待機 2 模式上面五種模式之間的相互切換方法以及切換所需要的時間參照 Fig.2。對 24L01 的固件編程的基本思路如下:1) 置 CSN 為低,使能芯片,配置芯片各個參數。(
4、過程見 3.Tx 與 Rx 的配置過程)配置參數在 Power Down 狀態(tài)中完成。2) 如果是 Tx 模式,填充 Tx FIFO。3) 配置完成以后,通過 CE 與 CONFIG 中的 PWR_UP 與 PRIM_RX 參數確定 24L01要切換到的狀態(tài)。Tx Mode: PWR_UP=1; PRIM_RX=0; CE=1 (保持超過 10us 就可以);Rx Mode: PWR_UP=1; PRIM_RX=1; CE=1;4) IRQ 引腳會在以下三種情況變低:Tx FIFO 發(fā)完并且收到 ACK(使能 ACK 情況下)Rx FIFO 收到數據達到最大重發(fā)次數將 IRQ 接到外部中斷輸入
5、引腳,通過中斷程序進行處理。Tx 模式初始化過程1)寫 Tx 節(jié)點的地址 TX_ADDR2)寫 Rx 節(jié)點的地址(主要是為了使能 Auto Ack) RX_ADDR_P03)使能 AUTO ACK EN_AA4)使能 PIPE 0 EN_RXADDR5)配置自動重發(fā)次數 SETUP_RETR6)選擇通信頻率 RF_CH7)配置發(fā)射參數(低噪放大器增益、發(fā)射功率、無線速率) RF_SETUP8 ) 選擇通道 0 有效數據寬度 Rx_Pw_P09)配置 24L01 的基本參數以及切換工作模式 CONFIG。Rx 模式初始化過程:初始化步驟 24L01 相關寄存器1)寫 Rx 節(jié)點的地址 RX_AD
6、DR_P02)使能 AUTO ACK EN_AA3)使能 PIPE 0 EN_RXADDR4)選擇通信頻率 RF_CH5) 選擇通道 0 有效數據寬度 Rx_Pw_P06)配置發(fā)射參數(低噪放大器增益、發(fā)射功率、無線速率) RF_SETUP7)配置 24L01 的基本參數以及切換工作模式 CONFIG4 控制程序詳解NRF24L01 的控制程序主要包括以下幾個函數 uchar SPI_RW(uchar byte); uchar SPI_RW_Reg(uchar reg, uchar value); uchar SPI_Read(uchar reg); uchar SPI_Read_Buf(uc
7、har reg, uchar *pBuf, uchar bytes); uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytes); void RX_Mode(void); void TX_Mode(void);4.1.1 uchar SPI_RW(uchar byte)uchar SPI_RW(uchar byte)uchar bit_ctr;for(bit_ctr=0;bit_ctr8;bit_ctr+) / output 8-bitMOSI = (byte & 0x80); / output byte, MSB to MOSIbyte
8、 = (byte 1); / shift next bit into MSB.SCK = 1; / Set SCK high.byte |= MISO; / capture current MISO bitSCK = 0; / .then set SCK low againreturn(byte); / return read byte最基本的函數,完成 GPIO 模擬 SPI 的功能。將輸出字節(jié)( MOSI)從 MSB 循環(huán)輸出,同時將輸入字節(jié)( MISO)從 LSB 循環(huán)移入。上升沿讀入,下降沿輸出。(從 SCK 被初始化為低電平可以判斷出)。4.1.2 uchar SPI_RW_Reg
9、(uchar reg, uchar value)uchar SPI_RW_Reg(uchar reg, uchar value)uchar status;CSN = 0; / CSN low, init SPI transactionstatus = SPI_RW(reg); / select registerSPI_RW(value); / .and write value to it.CSN = 1; / CSN high againreturn(status); / return nRF24L01 status byte寄存器訪問函數:用來設置 24L01 的寄存器的值?;舅悸肪褪峭ㄟ^
10、 WRITE_REG 命令(也就是 0x20+寄存器地址)把要設定的值寫到相應的寄存器地址里面去,并讀取返回值。對于函數來說也就是把 value 值寫到 reg 寄存器中。需要注意的是,訪問 NRF24L01 之前首先要 enable 芯片( CSN=0;),訪問完了以后再 disable芯片( CSN=1;)。4.1.3 uchar SPI_Read (uchar reg);uchar SPI_Read(uchar reg)uchar reg_val;CSN = 0; / CSN low, initialize SPI communication.SPI_RW(reg); / Select
11、register to read from.reg_val = SPI_RW(0); / .then read registervalueCSN = 1; / CSN high, terminate SPI communicationreturn(reg_val); / return register value讀取寄存器值的函數:基本思路就是通過 READ_REG 命令(也就是 0x00+寄存器地址),把寄存器中的值讀出來。對于函數來說也就是把 reg 寄存器的值讀到 reg_val 中去。4.1.4 uchar SPI_Read_Buf (uchar reg, uchar *pBuf, u
12、char bytes);uchar SPI_Read_Buf(uchar reg, uchar *pBuf, uchar bytes)uchar status,byte_ctr;CSN = 0; / Set CSN low, init SPI tranactionstatus = SPI_RW(reg); / Select register to write to and read status bytefor(byte_ctr=0;byte_ctrbytes;byte_ctr+)pBufbyte_ctr = SPI_RW(0); / Perform SPI_RW to read byte f
13、rom nRF24L01CSN = 1; / Set CSN high againreturn(status); / return nRF24L01 status byte接收緩沖區(qū)訪問函數:主要用來在接收時讀取 FIFO 緩沖區(qū)中的值?;舅悸肪褪峭ㄟ^READ_REG 命令把數據從接收 FIFO( RD_RX_PLOAD)中讀出并存到數組里面去。4.1.5 uchar SPI_Write_Buf (uchar reg, uchar *pBuf, uchar bytes);uchar SPI_Write_Buf(uchar reg, uchar *pBuf, uchar bytesuchar
14、status,byte_ctr;CSN = 0; / Set CSN low, init SPI tranactionstatus = SPI_RW(reg); / Select register to write to and read status byteUart_Delay(10);for(byte_ctr=0; byte_ctrbytes; byte_ctr+) / then write all byte in buffer(*pBuf)SPI_RW(*pBuf+);CSN = 1; / Set CSN high againreturn(status); / return nRF24
15、L01 status byte發(fā)射緩沖區(qū)訪問函數:主要用來把數組里的數放到發(fā)射 FIFO 緩沖區(qū)中。基本思路就通過WRITE_REG 命令把數據存到發(fā)射 FIFO( WR_TX_PLOAD)中去。4.1.6 void RX_Mode(void)設定 24L01 為接收方式,配置過程詳見 3.2 Rx 模式初始化過程。void RX_Mode(void)CE=0;SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / Enable Auto.Ack
16、:Pipe0SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / Enable Pipe0SPI_RW_Reg(WRITE_REG + RF_CH, 40); / Select RF channel 40SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); / Set PWR_UP bit, enable CRC(2 bytes)& Prim:RX. RX_DR en
17、abled.CE = 1; / Set CE pin high to enable RX device/ This device is now ready to receive one packet of 16 bytes payload from a TX devicesending to address/ 3443101001, with auto acknowledgment, retransmit count of 10, RF channel 40 anddatarate = 2Mbps.4.1.7 void TX_Mode(void)設定 24L01 為發(fā)送方式,配置過程詳見 3.
18、1 Tx 模式初始化過程。void TX_Mode(void)CE=0;SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); / Writes data to TX payloadSPI_RW_Reg(WRITE_REG + EN_AA, 0x01); / Enable Auto.Ack:Pipe0
19、SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); / Enable Pipe0SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); / 500us + 86us, 10 retrans.SPI_RW_Reg(WRITE_REG + RF_CH, 40); / Select RF channel 40SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); / TX_PWR:0dBm, Datarate:2Mbps,LNA:HCURRSPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); /
20、Set PWR_UP bit, enable CRC(2 bytes)& Prim:TX. MAX_RT & TX_DS enabled.CE=1;4.2NRF24L01相關命令的宏定義nRF24L01 的基本思路就是通過固定的時序與命令,控制芯片進行發(fā)射與接收。控制命令如FIG.4.2.1 所示。前面提到的函數也要與這些命令配合使用,比如SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);相關命令的宏定義如下:#define READ_REG
21、0x00 / Define read command to register#define WRITE_REG 0x20 / Define write command to register#define RD_RX_PLOAD 0x61 / Define RX payload register address#define WR_TX_PLOAD 0xA0 / Define TX payload register address#define FLUSH_TX 0xE1 / Define flush TX register command#define FLUSH_RX 0xE2 / Def
22、ine flush RX register command#define REUSE_TX_PL 0xE3 / Define reuse TX payload register command#define NOP 0xFF / Define No Operation, might be used to read statusregister4.3NRF24l01相關寄存器地址宏定義#define CONFIG 0x00 / Config register address#define EN_AA 0x01 / Enable Auto Acknowledgment register addre
23、ss#define EN_RXADDR 0x02 / Enabled RX addresses register address#define SETUP_AW 0x03 / Setup address width register address#define SETUP_RETR 0x04 / Setup Auto. Retrans register address#define RF_CH 0x05 / RF channel register address#define RF_SETUP 0x06 / RF setup register address#define STATUS 0x07 / Status register address#define OBSERVE_TX 0x08 / Observe TX register address#define CD 0x09 / Carrier Detect register address#define RX_ADDR_P0 0x0A / RX address pipe0 register address#defi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025家電銷售合同
- 2025的轉讓合同書樣書
- 會議咨詢合同范本
- 公路打混凝土合同范例
- 住宅單獨購買合同范例
- 2024年01月河南農業(yè)銀行河南省分行校園招考及大學生村官招考筆試歷年參考題庫附帶答案詳解
- 2024年01月河南2024東亞銀行鄭州分行企業(yè)銀行部客戶經理招考筆試歷年參考題庫附帶答案詳解
- 公司訂單生產合同范例
- 涂層生產線效率提升策略
- 保安公司疫情合同范例
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預測報告(智研咨詢)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學設計2022課標
- 甘肅省蘭州市蘭煉一中2025屆數學高一上期末統(tǒng)考試題含解析
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產市場季度簡報
- 蘇東坡詞十首
- 山東省臨沂市2024年中考物理真題
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
- 改善護理服務行動計劃方案
- 建筑材料包銷協(xié)議書
評論
0/150
提交評論