iNavFlight之电传MAVLink协议

iNavFlight之电传MAVLink协议

  • 1. 业务逻辑框架
  • 2. MAVLink电传报文
    • 2.1 MAVLink电传报文格式
    • 2.2 iNav支持地面站报文(接收)
    • 2.3 iNav支持飞控报文(发送)
  • 3. MAVLink报文处理
  • 4. 参考资料

本章重点介绍iNav飞控的MAVLink电传协议。

关于【电传框架设计】这里我们都不再重复了。如果前面那篇没有审阅过的同学,请点击iNavFlight之RC遥控CRSF协议。

1. 业务逻辑框架

从逻辑角度,需要三个步骤来完成电传的功能:

  1. 电传信息获取: 内部全局变量
  2. 电传信息处理: handleMAVLinkTelemetry
  3. 电传初始化: initMAVLinkTelemetry
taskTelemetry
 └──> telemetryProcess
     └──> handleMAVLinkTelemetry
         ├──> processMAVLinkIncomingTelemetry
         └──> processMAVLinkTelemetry

#ifdef USE_TELEMETRY
    [TASK_TELEMETRY] = {
        .taskName = "TELEMETRY",
        .taskFunc = taskTelemetry,
        .desiredPeriod = TASK_PERIOD_HZ(500),         // 500 Hz
        .staticPriority = TASK_PRIORITY_IDLE,
    },
#endif
main
 └──> init
     └──> telemetryInit
         ├──> initFrSkyTelemetry
         ├──> initHoTTTelemetry
         ├──> initSmartPortTelemetry
         ├──> initLtmTelemetry
         ├──> **initMAVLinkTelemetry**
         ├──> initJetiExBusTelemetry
         ├──> initIbusTelemetry
         ├──> initSimTelemetry
         ├──> initCrsfTelemetry
         ├──> initSrxlTelemetry
         ├──> initGhstTelemetry
         └──> telemetryCheckState
	         ├──> checkFrSkyTelemetryState
	         ├──> checkHoTTTelemetryState
	         ├──> checkSmartPortTelemetryState
	         ├──> checkLtmTelemetryState
	         ├──> **checkMAVLinkTelemetryState**
	         ├──> checkJetiExBusTelemetryState
	         ├──> checkIbusTelemetryState
	         ├──> checkSimTelemetryState
	         ├──> checkCrsfTelemetryState
	         ├──> checkSrxlTelemetryState
             └──> checkGhstTelemetryState

2. MAVLink电传报文

2.1 MAVLink电传报文格式

略,详见:PX4模块设计之四:MAVLink简介

2.2 iNav支持地面站报文(接收)

  1. MAVLINK_MSG_ID_HEARTBEAT 0
  2. MAVLINK_MSG_ID_MISSION_CLEAR_ALL 45
  3. MAVLINK_MSG_ID_MISSION_COUNT 44
  4. MAVLINK_MSG_ID_MISSION_ITEM 39
  5. MAVLINK_MSG_ID_MISSION_REQUEST_LIST 43
  6. MAVLINK_MSG_ID_MISSION_REQUEST 40
  7. MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE 70

2.3 iNav支持飞控报文(发送)

  1. MAVLINK_MSG_ID_SYS_STATUS 1
  2. MAVLINK_MSG_ID_RC_CHANNELS_RAW 35
  3. MAVLINK_MSG_ID_GPS_RAW_INT 24
  4. MAVLINK_MSG_ID_ATTITUDE 30
  5. MAVLINK_MSG_ID_VFR_HUD 74
  6. MAVLINK_MSG_ID_HEARTBEAT 0
  7. MAVLINK_MSG_ID_BATTERY_STATUS 147
  8. MAVLINK_MSG_ID_SCALED_PRESSURE 29
  9. MAVLINK_MSG_ID_STATUSTEXT 253

3. MAVLink报文处理

MAVLink是轻量级飞控与地面端,飞控与伴机电脑内部数据交互的消息协议,且具有非常久远的历史。详见:MAVLink Developer Guide

4. 参考资料

【1】iNavFlight之RC遥控MSP协议
【2】iNavFlight之RC遥控CRSF协议
【3】PX4模块设计之四:MAVLink简介
【4】PX4模块设计之五:自定义MAVLink消息
【5】MAVLink Developer Guide

你可能感兴趣的:(xFlight,stm32,嵌入式硬件,iNav)