MAVLink通讯协议在STM32上移植,并⾃定义协议
mavlink全称是(Micro Air Vehicle Message Marshalling Library),从名字可以看出,mavlink是主要⾯向飞控的⼀种开源通信协议。因此它默认定义了很多适⽤于飞控的信息格式,⽐如heartbeat(⼼跳信号,每隔⼀两秒主从通信⼀次,以验证通信是否正常)。
⾸先要说明的是,mavlink作为⼀个⾮常可靠(⾄少两字节校验)、⽀持类型丰富(message ID、component ID等)的通信协议,每次通信时,除了payload以外,还要占⽤⾄少8个字节的冗余信息,具体的这⼋个字节都是什么,可以参考别⼈的详细介绍。因此在使⽤mavlink之前需要考虑,在硬件资源⾮常有限的情况下,是否有必要牺牲效率来换取可靠性。
先放⼀些参考⽂章
1. 【⽆⼈机开发】通讯协议MavLink详解
2. Mavlink协议理解Pixhawk APM(⼀)
3. 移植mavlink协议到STM32详细教程
4. 移植mavlink到stm32详细教程,后⾯附快速移植⽅法
5. 移植MAVLINK到STM32详细教程之三
MAVLink除了能够⽀持ardupilot等⽆⼈机通信协议外,最⼤的特点是可以定制通信协议。前⾯两篇⽂章主要在讲MAVLink的主要结构,后⾯三篇出⾃同⼀个⼈,完整再现了⼀个如何从⾃动⽣成代码并移植到STM32上的过程,本⽂参考其甚多,但是正如前⾯所⾔,这⾥⾯没有对如何定制通信协议进⾏讨论,并且也没有对整个MAVLink的结构有介绍,在移植的过程中总是报错。
定制通信协议
MAVLink的通信协议是根据xml⽂件⾃动⽣成的。
image.png
从官⽹下载MAVLink的源码后,可以得知定义通信协议的xml⽂件位于message_definitions/v1.0/下⾯,其中参考⽂章3、4和5就利⽤的l进⾏⾃动⽣成的。
image.png
python处理xml文件l是其中最简单的⼀种协议,l的代码如下所⽰:
image.png image.png image.png
image.png
image.png checksum.h
image.png

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。