日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.4G无线通信

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.4G无线通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

NRF24L01是NORDIC公司生產的一款無線通信通信芯片,采用FSK 調制,集成NORDIC自家的Enhanced Short Burst協議。可以實現點對點或是1對6的無線通信。無線通信速度最高可達到2Mbps。NRF24L01采用SPI通信,可以很方便的連接到MCU上面。

NRF24L01的特點

①2.4G全球開放的ISM頻段,免許可證使用。

②最高工作速率2Mbps,高校的GFSK調制,抗干擾能力強。

③126個可選的頻道,滿足多點通信和調頻通信的需要。

④內置CRC檢錯和點對多點的通信地址控制。

⑤可設置自動應答,確保數據可靠傳輸。

NRF24L01模塊介紹

?CE:模式控制線。在 CSN為低的 情況下,CE 協同CONFIG 寄存器 共同決定NRF24L01 的狀態(參照 NRF24L01 的狀態機)?? ??? ? ?? ??? ?

CSN:SPI片選線

SCK:SPI時鐘線

MOSI:SPI數據線(主機輸出,從機輸入)

MISO:SPI數據線(主機輸入,從機輸出)

IRQ:中斷信號線。中斷時變為低電平,在以下三種情況變低:Tx FIFO 發完并且收到ACK(使能ACK情況下)、Rx FIFO 收到數據、達到最大重發次數。

SPI時序

?空閑狀態SCK為0,CPOL=0;數據在時鐘第一個時間邊沿采集,CPHA=0;

Cn:SPI命令位

Sn:STATUS寄存器位 ? ? ? ?

Dn:數據位( MSB,多字節傳輸時,低字節在前)

NRF24L01的工作模式,由CE和CONFIG寄存器(0X00)的PWR_UP(第1位)和PRIM_RX(第0位)位共同控制:

其中,收發模式又有: Enhanced ShockBurstTM收發模式和ShockBurstTM收發模式,只有Enhanced ShockBurstTM收發模式支持自動ACK和自動重發。開啟自動ACK,則默認選擇Enhanced模式?。

Enhanced ShockBurstTM模式介紹

Enhanced ShockBurstTM收發模式,使用片內的先入先出堆棧區,數據可以低速從微控制器送入,但高速(1Mbps/2Mbps)發射,這樣可以盡量節能。與射頻協議相關的所有高速信號處理都在片內進行,這種做法有大好處:

1,節能;

2,低的系統費用(低速微處理器也能進行高速射頻發射);

3,數據在空中停留時間短,抗干擾性高; ? ?

在Enhanced ShockBurstTM收發模式下, NRF24L01自動處理字頭和CRC校驗碼。在接收數據時,自動把字頭和CRC校驗碼移去。在發送數據時,自動加上字頭和CRC校驗碼,在發送模式下,置CE為高,至少10us,將使能發送過程。

Enhanced ShockBurstTM發送流程

1. 把地址和要發送的數據按時序送入NRF24L01;

2. 配置CONFIG寄存器,使之進入發送模式;

3. 微控制器把CE置高(至少10us),激發Enhanced ShockBurstTM發射;

4. Enhanced ShockBurstTM發射:① 給射頻前端供電;②射頻數據打包(加字頭、CRC校驗碼); ③ 高速發射數據包; ④發射完成,NRF24L01進入空閑狀態。

Enhanced ShockBurstTM發送模式初始化

1)寫Tx 節點的地址 TX_ADDR

2)寫Rx 節點的地址(主要是為了使能Auto Ack) RX_ADDR_P0

3)使能AUTO ACK EN_AA

4)使能PIPE 0 EN_RXADDR

5)配置自動重發次數 SETUP_RETR

6)選擇通信頻率 RF_CH

頻率計算公式:2400+RF_CH ?(Mhz)

7)配置發射參數(低噪放大器增益、發射功率、無線速率) RF_SETUP

8)配置24L01 的基本參數以及切換工作模式 CONFIG。

Enhanced ShockBurstTM接收流程

1. 配置接收地址和要接收的數據包大小;

2. 配置CONFIG寄存器,使之進入接收模式,把CE置高。

3. 130us后,NRF24L01進入監視狀態,等待數據包的到來;

4. 當接收到正確的數據包(正確的地址和CRC校驗碼),NRF2401自動把字頭、地址和CRC校驗位移去;

5. NRF24L01通過把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中斷)通知微控制器;

6. 微控制器把數據從FIFO讀出(0X61指令);

7. 所有數據讀取完畢后,可以清除STATUS寄存器。NRF2401可以進入 四種主要的模式之一;

Enhanced ShockBurstTM接收模式初始化

1)寫Rx 節點的地址 RX_ADDR_P0

2)使能AUTO ACK EN_AA

3)使能PIPE 0 EN_RXADDR

4)選擇通信頻率 RF_CH

5)選擇通道0 有效數據寬度 RX_PW_P0

6)配置發射參數(低噪放大器增益、發射功率、無線速率) RF_SETUP

7)配置24L01 的基本參數以及切換工作模式 CONFIG。
硬件設計

這里NRF24L01也是使用的SPI1,和W25Q128共用一個SPI接口,所以在使用的時候,他 們分時復用SPI1。本章我們需要把W25Q128的片選信號置高,以防止這個器件對NRF24L01 的通信造成干擾。另外,NRF_IRQ和RS485_RE共用了PG8,所以,他們不能同時使用,不過 我們一般用不到NRF_IRQ這個信號,因此,RS485和NRF一般也可以同時使用。?

代碼講解

打開 24l01.c 文件,在 NRF24L01_Init 函數里面, 我們調用了 SPI1_Init()函數,SCK 空閑的時候是低電平的,而數據在 SCK 的上升沿被讀寫。所以,我們需要設置 SPI 的 CPOL 和 CPHA 均為 0,來滿足 NRF24L01 對 SPI 操作的要求。所以,我們在 NRF24L01_Init 函數里面又單獨添 加了將 CPOL 和 CPHA 設置為 0 的函數 NRF24L01_SPI_Init。

24l01.h 頭文件,部分代碼,主要定義了一些 24L01 的命令字,以及函數聲明,這里還通過 TX_PLOAD_WIDTH 和 RX_PLOAD_WIDTH 決定了發射和接收的數據寬度,也就是我們每次發射和接受的有效字節數。NRF24L01 每次最多傳輸 32 個字節,再多的字節傳輸則需要多次傳送。

main函數,程序運行時先通過 NRF24L01_Check 函 數檢測 NRF24L01 是否存在,如果存在,則讓用戶選擇發送模式(KEY1)還是接收模式(KEY0), 在確定模式之后,設置 NRF24L01 的工作模式,然后執行相應的數據發送/接收處理。

總結

以上是生活随笔為你收集整理的2.4G无线通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。