1、什么是nRF24L01
nRF24L01是由NORDIC生產的工作在2.4GHz~2.5GHz的ISM 頻段的單片無線收發(fā)器芯片。有著極低的電流消耗。
nRF24L01與5V單片機的連接通過SPI接口進行通訊,輸出功率頻道選擇和協(xié)議的設置可以通過SPI 接口進行設置,幾乎可以連接到各種單片機芯片,并完成無線數據傳送工作。
2、接口電路
引腳說明
通過以下六個引腳,便可實現(xiàn)模塊的所有功能:
(1)MOSI:主器件數據輸出,從器件數據輸入
(2)MISO:主器件數據輸入,從器件數據輸出
(3)SCLK:時鐘信號,由主器件產生
(4) CSN :從器件使能信號(片選線)
(5)CE:芯片使能,使能器件的發(fā)送模式或者接收模式。高電平有效,在發(fā)送和接收過程中都要將這個引腳拉高,
(6)IRQ:中斷信號線,中斷輸出。低電平有效,中斷時變?yōu)榈碗娖?,在以下三種情況變低:Tx FIFO 發(fā)完并且收到ACK(使能ACK情況下)、Rx FIFO收到數據、達到最大重發(fā)次數。
(7)VCC:電壓范圍1.9V~3.6V,超過3.6V將會燒毀模塊。一般電壓3.3V左右。除電源VCC和接地端,其余腳都可以直接和普通的5V單片機IO口直接相連,無需電平轉換。
通過 SPI 接口,可激活在數據寄存器 FIFO 中的數據,或者通過 SPI 命令訪問寄存器。
在待機或掉電模式下,單片機通過 SPI 接口配置模塊;
在發(fā)射或接收模式下,單片機通過 SPI 接口接收或發(fā)射數據。
3、工作模式:
工作模式由 CE 和 PWR_UP (CONFIG寄存器第1位)、 PRIM_RX(CONFIG寄存器第0位) 兩寄存器共同操縱:
也可以理解為NRF2401有工作模式有四種:
收發(fā)模式,配置模式,空閑模式,關機模式
收發(fā)模式(三種)
Enhanced ShockBurstTM收發(fā)模式
ShockBurstTM收發(fā)模式
直接收發(fā)模式
(只有Enhanced ShockBurstTM收發(fā)模式支持自動ACK和自動重發(fā))
Enhanced ShockBurstTM收發(fā)模式(常用)
NRF24L01自動處理字頭和CRC校驗碼。在接收數據時,自動把字頭和CRC校驗碼移去。在發(fā)送數據時,自動加上字頭和CRC校驗碼。
ShockBurstTM收發(fā)模式
發(fā)送方要求終端設備在接收到數據后有應答信號,以便發(fā)送方檢測有無數據丟失,一旦丟失則重發(fā)數據。
直接收發(fā)模式
和傳統(tǒng)的射頻器件一樣。數據必須是在傳輸頻率為1Mbps、250kbps 或者低頻狀態(tài)進行設定,以保證接收機能探測到信號。
在接收模式下,最多可以接收6路不同的數據。每一個數據通道使用不同的地址,但是共用相同的頻道。也就是說6 個不同的NRF24L01設置為發(fā)送模式后可以與同一個設置為接收模式的NRF24L01 進行通訊,而設置為接收模式的NRF24L01可以對這6個發(fā)射端進行識別。
數據通道0是唯一的一個可以配置為40位自身地址的數據通道;而數據通道1~5 都為8位自身地址和32位公用地址(由通道1設置)。所有的數據通道都可以設置為Enhanced ShockBurst 模式。
在接收端,確認收到數據后記錄地址,并以此地址為目標地址發(fā)送應答信號。在發(fā)送端,通道0被用作接收應答信號,因此通道0的接收地址要與發(fā)送地址端地址相等,以確保接收到正確的應答信號。
配置模式 15 字節(jié)的配置字會在配置模式時下載到nRF2401 中,CE為0才能配置。
空閑模式(睡眠/待機模式):用來減小平均電流的損耗,在該模式下,晶體振蕩器處于部分工作狀態(tài),電流損耗由晶體振蕩器頻率決定。在待機模式期間,寄存器配置字內容保持不變。
掉電模式:nRF20L01 各功能關閉,保持電流消耗最小。該模式下,nRF24L01 停止工作,當設備達不到最小的電流損耗或最大電量枯竭時,設備就會進入掉電模式。
4、發(fā)送
Enhanced ShockBurstTM發(fā)送流程
1.把地址和要發(fā)送的數據按時序送入NRF24L01;
2.配置CONFIG寄存器,使之進入發(fā)送模式;
3.微控制器把CE置高(至少10us),激發(fā)Enhanced ShockBurstTM發(fā)射;
4. 發(fā)射完成,NRF24L01進入空閑狀態(tài)。
初始化NRF24L01到TX模式
1) CE置低
2) 寫Tx節(jié)點的地址
3) 寫Rx節(jié)點的地址,使能自動應答
4) 使能通道x的自動應答
5) 使能通道x的接收地址
6) 設置自動重發(fā)間隔時間和最大自動重發(fā)次數
7) 設置RF通道
8) 配置TX發(fā)射參數(低噪放大器增益、發(fā)射功率、無線速率)
9) 配置基本工作模式的參數
10)CE拉高,進入發(fā)送模式,注意CE要拉高一段時間才進入發(fā)送模式
/**
* @brief 配置發(fā)送模式
* @param 無
* @retval 無
*/
void NRF_TX_Mode(void)
{
NRF_CE_LOW();
SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //寫TX節(jié)點地址
SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); //設置RX節(jié)點地址,主要為了使能ACK
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自動應答
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);//設置自動重發(fā)間隔時間:500us + 86us;最大自動重發(fā)次數:10次
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); //設置RF通道為CHANAL
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x07); //設置TX發(fā)射參數,0db增益,2Mbps,低噪聲增益開啟
SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,發(fā)射模式,開啟所有中斷
/*CE拉高,進入發(fā)送模式*/
NRF_CE_HIGH();
Delay(0xffff); //CE要拉高一段時間才進入發(fā)送模式
}
5、接收
Enhanced ShockBurstTM接收流程
1.配置接收地址和要接收的數據包大小;
2.配置CONFIG寄存器,使之進入接收模式,把CE置高;
3. 130us后,NRF24LO1進入監(jiān)視狀態(tài),等待數據包的到來;
4.當接收到正確的數據包(正確的地址和CRC校驗碼),NRF2401自動把字頭、地址和CRC校驗位移去;
5.NRF24LO1通過把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中斷)通知微控制器;
6.微控制器把數據從FIFO讀出(0X61指令);
7.所有數據讀取完畢后,可以清除STATUS寄存器。進入四種主要的模式之—。
初始化NRF24L01到RX模式
1) CE置低
2)寫RX節(jié)點地址
3)使能通道x的自動應答
4)使能通道0的接收地址
5)設置RF通信頻率
6)選擇通道x的有效數據寬度
7)設置TX發(fā)射參數
8)配置基本工作模式的參數
9)CE拉高,進入接收模式
/**
* @brief 配置并進入接收模式
* @param 無
* @retval 無
*/
void NRF_RX_Mode(void)
{
NRF_CE_LOW();
SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);//寫RX節(jié)點地址
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自動應答
SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); //設置RF通信頻率
SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//選擇通道0的有效數據寬度
SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x07); //設置TX發(fā)射參數,0db增益,2Mbps,低噪聲增益開啟
SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG, 0x0f); //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式
/*CE拉高,進入接收模式*/
NRF_CE_HIGH();
}
此外,還應有系統(tǒng)的初始化,主要有GPIO初始化,SPI初始化,NRF24L01中斷初始化。
在GPIO初始化中,需要注意各引腳的工作模式:
SPI時鐘,設置為復用推挽輸出
SPI輸出引腳(SOMI),設置為復用推挽輸出
SPI輸入引腳(SOMO),設置為懸浮輸入
CS、CE引腳,使用軟件控制,所以直接設置成推挽輸出
SPI指令
所有的 SPI 指令均在當 CSN 由低到高開始跳變時執(zhí)行;從 MOSI 寫命令的同時, MISO實時返回 24L01 的狀態(tài)值; SPI 指令由命令字節(jié)和數據字節(jié)兩部分組成。文章來源:http://www.zghlxwxcb.cn/news/detail-789812.html
寄存器內容及說明
在寫寄存器之前,一定要進入待機模式或掉電模式。文章來源地址http://www.zghlxwxcb.cn/news/detail-789812.html
到了這里,關于無線收發(fā)模塊——NRF24L01的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!