APM中SBUS信号解析
一、SBUS信號(hào)概述
????????SBUS信號(hào)以串口傳輸,波特率為100000bps。每2ms一幀,一幀25個(gè)字節(jié)。其中第0字節(jié)為起始幀,固定為0x0F。第24字節(jié)為幀尾。第1~22字節(jié)為1-16比例通道數(shù)據(jù)字節(jié)。第23字節(jié)為狀態(tài)字,具體位含義如下:
????????第3位:是否丟幀標(biāo)識(shí),1為丟幀,0為正常。
????????第4位:是否失控保護(hù)是否激活,1為激活。
二、APM中SBUS數(shù)據(jù)流
????????老規(guī)矩,先上類(lèi)圖。
????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
?????????如圖(1)所示,硬件抽象層AP_HAL::RCInput是具體應(yīng)用平臺(tái)的父類(lèi),根據(jù)具體的芯片選擇對(duì)應(yīng)的子類(lèi)與子類(lèi)的方法。由于雷迅的x7-pro用的stm32H7的芯片,故實(shí)例化ChibiOS::RCInput子類(lèi)。
????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)
? ? ? ? APM中sbus數(shù)據(jù)在AP_RCProtocol_SBUS::sbus_decode()函數(shù)中解析,該函數(shù)的調(diào)用關(guān)系見(jiàn)圖(2)。在ChibiOS命名空間下的RCInput類(lèi)中的_timer_tick()函數(shù)中獲取了AP_RCProtocol_SBUS類(lèi)的實(shí)例化對(duì)象rcprot。rcprot調(diào)用read函數(shù),獲取_rc_values值,該值通過(guò)hal.rcin接口傳輸?shù)缴蠈討?yīng)用中。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
? ? ? ? 如圖(3)所示,Copter::rc_loop()以100Hz的頻率調(diào)用read_radio();遙控器的數(shù)據(jù)以100Hz的頻率更新。
? ? ? ??
三、SBUS協(xié)議解析
? ? ? ? ? ?APM具體SBUS解析見(jiàn)下圖。
????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)
? ? ? ? ? ?如圖(4)所示,sbus_decode首先判斷幀頭,若幀頭非0x0F,直接退出解析,返回false。幀尾未作處理。
????????
總結(jié)
以上是生活随笔為你收集整理的APM中SBUS信号解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS2010
- 下一篇: timeSetEvent、回调函数、CC