瘋殼AI開源無人機SPI 2 4G雙機通訊

2021-10-06 07:31:47 字數 2707 閱讀 1341

nrf24l01是由nordic生產的工作在2.4ghz~2.5ghz的ism 頻段的單片無線收發器晶元。無線收發器包括:頻率發生器、增強型「schockburst」模式控制器、功率放大器、晶體振盪器、調製器和解調器。

nrf24l01的輸出功率頻道選擇和協議的設定均可以通過spi 介面進行設定,因此,其具有極高的相容性,幾乎可以連線到各種微控制器晶元,並完成無線資料傳送工作。除此之外,nrf24l01的功耗也非常的低,當工作在發射模式下發射功率為0dbm 時電流消耗僅為11.3ma ,接收模式時為12.3ma,掉電模式和待機模式下電流消耗更低。所以nrf24l01可以廣泛地應用在無線鍵鼠、無線門禁、無線電台、智慧型工業裝置、玩具等場合。

如下表所示列舉了nrf24l01的特性引數。

引數名稱

引數特性

小體積qfn20 4x4mm封裝

寬電壓工作範圍

1.9v~3.6v,輸入引腳可承受5v電壓輸入

工作溫度範圍

-40℃~+80℃

工作頻率範圍

2.400ghz~2.525ghz

發射功率

可選擇為0dbm、-6dbm、-12dbm和-18dbm

資料傳輸速率

支援1mbps、2mbps

低功耗設計

接收時工作電流12.3ma,0dbm功率發射時11.3ma,掉電模式時僅為900na

多通道設計

126個通訊通道,6個資料通道,滿足多點通訊和調頻需要

多模式支援增強型「shockburst」工作模式,硬體的crc校驗和點對多點的位址控制

單次資料傳輸

資料報每次可傳輸1~32byte的資料

介面4線spi通訊埠,通訊速率最高可達8mbps,適合與各種mcu連線,程式設計簡單

中斷mcu可通過irq引腳塊判斷是否完成資料接收和資料傳送

如下圖所示為nrf24l01晶元實物圖

nrf24l01是以包的形式進行傳送的,具體的包格式如下表所示。

前導碼位址

包控制字

負載資料

crcnrf24l01在通訊前需要進行一系列的引數配置,而在配置其引數時,nrf24l01必須工作待機模式,即ce腳拉低。在傳送模式下的配置流程如下表所示。

寫入傳送位址和接受應答通道位址

使能應答通道

使能接收位址

設定自動重發時間和重發次數

設定通訊頻道

設定引數(功率、增益等)

設定模式(傳送、接收)

配置為接收模式的流程如下表所示。

配置接收通道位址

設定接收通道有效資料寬度

使能通道自動應答

使能接受通道位址

設定通訊頻道

設定引數(功率、增益等)

設定模式(傳送、接收)

配置完後就是傳送和接收的處理了,傳送的流程如下表所示。

向fifo中寫入資料,等待irq傳送完成中斷

讀取狀態暫存器中的值

將讀取到的狀態暫存器中的值寫入狀態暫存器

判斷之前讀取到的狀態暫存器中的值判斷是傳送完成還是傳送失敗

清空fifo暫存器

接收流程如下表所示。

讀取狀態暫存器中的值

將讀取到的狀態暫存器中的值寫入狀態暫存器

判斷狀態暫存器中得值,是否接受成功

(成功就讀取fifo中的資料,並且清空fifo)

2.4g雙機通訊實驗涉及到遙控器端和飛控端,兩者的2.4g通道均設定為110。首先配置遙控器端的左搖桿的按鍵為外部中斷模式,一旦按下做搖桿按鍵,就傳送「remoter」這個字串到飛控上,飛控接收到後,把led航情燈進行閃爍,然後再向遙控器回發「airplane」這個字串,遙控收到後,閃爍電源指示燈。無論是遙控器還是飛控使用nrf24l01均使用到了stm32的硬體spi,不同的是遙控器使用的是spi2,而飛控使用的是spi1。stm32的spi配置方法可以參考飛控開發基礎《spi(六軸感測器資料獲取)》。

本次實驗中遙控器端觸發無線資料的傳送是通過外部中斷實現的,具體的外部中斷配置可以參考《遙控器開發實戰-中斷》。在該中斷中向飛控傳送「remoter」字串,具體**如下圖所示。

遙控器端的nrf24l01的初始化**如下圖所示。

遙控器端的接收處理是在主迴圈中輪詢實現的,收到飛控發來的資訊後,電源指示燈閃爍,具體**如下圖所示。

飛控端的無線資料接收在主迴圈中實現,接收到遙控器傳送的資訊後,電源指示燈閃爍,且向遙控端回發「airplane」,具體**如下圖所示。

飛控端的nrf24l01的初始化**如下。

瘋殼AI開源無人機PID基礎

pid控制是自動控制系統中最常用的一種控制手段,它的誕生主要是為了解決自動控制系統的快 穩 準的問題。pid控制中的p指的是proportion 比例 即對輸入的偏差乘以乙個係數 i指的是integral 積分 即對輸入偏差進行積分運算 而d指的是derivative 微分 即對輸入偏差進行微分運算...

瘋殼AI開源無人機串列埠(基礎收發)

在嵌入式開發領域講的串列埠通常指的是uart,uart即為通用非同步收發傳輸器 universal asynchronous receiver transmitter 是一種通用序列資料匯流排,用於非同步通訊。該匯流排雙向通訊,可以實現全雙工傳輸和接收。uart常常用於兩個微控制器之間進行資料傳輸,...

瘋殼AI開源無人機PWM(電機控制)

脈衝寬度調製 pwm 是英文 pulse width modulation 的縮寫,簡稱脈寬調變,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量 通訊到功率控制與變換的許多領域中。pwm在生活中非常的常見,小到呼吸燈的閃爍,達到航天飛船都會應用到pwm技術。pwm...