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