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