正点原子minifly学习
對正點原子的開發板學習已經好幾個月了,暫且了解了一點freertos和stm32的一些知識。本著從項目入手的原則,從今天開始,對正點原子小四軸無人機minifly進行學習。
** 目錄**
minifly_v1.3學習筆記(一)main.c
minifly_v1.3學習筆記(二)radiolinkTask
minifly_v1.3學習筆記(三)usblink.c
minifly_v1.3學習筆記(四) atkp.c
程序框圖
minifly四軸部分由NRF51822和STM32F411兩個芯片共同控制。NRF51822主要負責無線通信和電源管理;STM32F411則負責接受、發送各種數據,以及數據融合從而進行pid控制。
程序框架如下:
esb.c 是無線通信驅動代碼;
systick.c 是系統滴答定時器驅動代碼;
uart.c 是串口驅動代碼;
button.c 是按鍵驅動代碼;
pm.c 是電源管理驅動代碼。
遙控器發送過來的數據包通過radiolink.c 傳送至 main.c,main.c 解析數據包,如果不 是發給 NRF51822 的則通過 uartlink.c 轉發給 STM32F411;當 STM32F411 接收到一條數據 包后會立即通過uartlink.c返回一條數據包到main.c,main.c再通過radiolink.c轉發給遙控器。 就這樣 NRF51822 起到了通信橋梁的作用。
STM32F411主控芯片,使用freertos實時操作系統,任務關系如下:
radiolinkTask:無線通信任務。該任務主要負責接收從 NRF51822 發送(串口方式)過 來的數據,然后對數據進行打包和校驗,打包成 ATKP 格式并校驗無誤后發送到 atkpRxAnlTask 的接收隊列里,同時回傳一幀數據給 NRF51822。
usblinkRxTask:USB 通信接收任務。該任務主要負責接收上位機發下來(USB 虛擬串 口方式)的數據,然后對數據進行打包和校驗,打包成 ATKP 格式并校驗無誤后發送到 atkpRxAnlTask 的接收隊列里。
atkpRxAnlTask:ATKP 數據包接收處理任務。該任務主要是處理遙控器和上位機發下 來的數據包,解析到的控制指令則發送到 stabilizerTask 中去。
stabilizerTask:四軸平衡控制任務。該任務運行的內容比較多,也是比較關鍵的內容。 包括傳感器數據讀取,數據融合,獲取控制數據,空翻檢測,異常檢測,PID 控制,PWM 輸出控制等。
wifilinkTask:手機控制任務。該任務主要是接收 WiFi 攝像頭模塊的串口數據,然后按 照 WiFi 攝像頭模塊通訊協議解析成對應的控制指令,并將控制指令發送到 stabilizerTask。
atkpTxTask:ATKP 數據包發送任務。該任務主要是獲取 stabilizerTask 中的傳感器數據、 姿態數據、電機 PWM 輸出數據等數據以定周期發送給 radiolinkTask 和 usblinkTxTask,由這 兩個任務分別發送飛遙控器和上位機。
usblinkRxTask:USB 通信發送任務。該任務主要負責發送 atkpTxTask 發送過來的數據 包,這些數據包主要是傳感器數據、姿態數據等。
兩者通過串口進行通信。
- 使用NRF51822電源管理的優勢
1.可以讓四軸關機時,NRF51822運行在待機模式,STN32處于斷電狀態,功耗極低。
2.可以控制STM32的啟動模式
以下是開發手冊對此的敘述:
四軸在關機狀態時,NRF51822 運行在待機模式,STM32F411 屬于斷電狀態,功耗極低。 當按鍵按下時,NRF51822 從待機模式被喚醒,喚醒后程序先判斷當前按下時間,如果是短 按或沒有按下則啟動 STM32F411 到固件模式,如果是長按則啟動 STM32F411 到固件升級 模式。啟動方式:NRF51822 拉高 UART_RTS_PIN 引腳,使能電源芯片給 STM32F411 供電, STM32F411 上電后先運行 bootloader 程序,程序中判斷 UART_RTS_PIN 引腳為高電平的話 則留在 bootloader 程序等待固件升級,如果不是高電平則跳轉至固件。NRF51822 程序運行 后,main.c 中以 100ms 周期時間獲取 pm.c 采集四軸電池的電壓值并轉發給 STM32F411。就 這樣 NRF51822 起到了電源管理的作用。
總結
以上是生活随笔為你收集整理的正点原子minifly学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机语言与硬件相关,搞懂程序语言与计算
- 下一篇: 7CCSMCMP: Coursework