0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MAVLink学习之路05_ MAVLink应用编程接口分析

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-07 16:21 次阅读

MAVLink应用编程主要内容

2.1 发送和接收说明

利用MAVLink通信协议进行编程,主要实现的功能就是:

1.发送端

将需要发送的数据(如:SysState, BatVol),添加MAVLink通信协议,通过硬件(如:UARTCAN)发送出去。

2.接收端

硬件(如:UART、CAN)接收到的数据,通过MAVLink协议解析,得到一帧完整的MAVLink数据包,提取发送端发送的数据(如:SysState, BatVol),将得到的数据应用到我们程序中。

主要流程:数据 -> MAVLink封装 -> 发送 -> 接收 -> MAVLink解析 ->数据

2.2 发送和接收流程图

该流程图是结合我上一篇文章提供的源代码例程画出来,包含的只是主要内容,更多细节没有在流程图中呈现。

提示:

我提供例程是针对初学者提供比较单一发送和接收例程(MDK-ARM和EWARM包含各自的发送和接收工程)。

而实际项目可能会:

1.发送和接收在一个工程;

2.包含操作系统

3.发送、接收数据FIFO(队列)处理;

所以,实际项目,请按需修改我提供的源码。

3

MAVLink函数接口详细说明

这一章节讲述发送和接收主要用到的函数接口,请参考我提供的源代码例程理解。

为方便初学者理解,我将其分为发送和接收两个部分来讲述。

3.1 发送主要函数接口

上面是我提供例程的代码,主要讲4个接口

1.MAVLink_SendTest

这个接口是根据自己情况进行封装函数,用于应用程序调用,这里不多说。

2.mavlink_msg_sys_info_pack

这个函数接口主要目的:将变量信息(SysID、CompID、SysState、BatVol)打包,最终得到MAVLink_Msg这个消息包。

3.mavlink_msg_to_send_buffer

将上一步得到的MAVLink_Msg转换成我们要发送的数据BUF缓存。

4.MAV_USART_SendNByte

这个函数接口也是我自己根据硬件(UART)封装的,如果你是其它硬件通信,只需要封装一个类似的接口(参数具有BUF,LEN)即可。

发送数据的流程:从应用代码 -> 底层硬件(发送出去)。

如果要深入了解,可以先熟悉软件流程,再结合源代码工程,同时参看接口函数具体实现。相信你很快就明白了。

3.2 接收主要函数接口

上面是我提供例程的代码(方便截图,去掉了部分),主要讲以上4点内容。

1.MAV_USART_GetByte

该函数接口也是硬件底层通信接口,请根据自己情况修改,只需要传递数据(流)进来即可。

2.mavlink_parse_char

MAVLink解析是按照一个一个字符进行解析,我们接收到一个字符,就对其进行解析,直到解析完(根据返回标志判断)一帧数据为止。

3.if(MAVLINK_MSG_ID_SYS_INFO == MAVLinkMsg.msgid)

这里就是对解析好的一包完整消息进行分类判断吧。其实,我是想说,这个地方还有两个ID需要进行判断,SysID系统ID和CompID部件ID。

我提供例程为方便初学者快速理解,未提供SysID和CompID判断,在后续应用编程中会用到。

接收数据的流程:从应用代码 -> 底层硬件(发送出去)。

以上就是发送和接收的主要函数接口,如果你只是简单的进行通信,这几个接口就够你使用了。当然,更高级的编程应用还需要你进一步掌握其中的内容。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    737

    浏览量

    39726
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2467

    浏览量

    459162
  • uart
    +关注

    关注

    22

    文章

    1158

    浏览量

    99947
  • mavlink
    +关注

    关注

    0

    文章

    8

    浏览量

    2563
收藏 人收藏

    评论

    相关推荐

    MAVLink在应用编程中的编程原理和思路

    嵌入式开发过程中,UART、 CAN、 USB等通信基本离不开通信协议。 下面给大家分享一种通信协议(MAVLink)在应用编程中的编程原理和思路。
    发表于 03-08 12:45 256次阅读
    <b class='flag-5'>MAVLink</b>在应用<b class='flag-5'>编程</b>中的<b class='flag-5'>编程</b>原理和思路

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
    的头像 发表于 03-07 10:56 200次阅读
    浅析MCU通信、存储常用的简单校验算法

    全志D1s开发板裸机开发之坏境搭建

    环境搭建 开发板介绍 张天飞老师编写的《RISC-V体系结构编程与实践》,里面的源码是基于 QEMU 模拟器的,可以认为它是一款虚拟的开发板。如果需要在真实开发板上学习,可以使用百问网
    发表于 03-06 13:54

    敏矽微电子Cortex-M0学习笔记05——端口外部中断实例

    敏矽微电子Cortex-M0学习笔记05——端口外部中断实例
    的头像 发表于 09-26 17:10 440次阅读
    敏矽微电子Cortex-M0<b class='flag-5'>学习</b>笔记<b class='flag-5'>05</b>——端口外部中断实例

    使用STM32F05xx微控制器设计智能卡接口

    电子发烧友网站提供《使用STM32F05xx微控制器设计智能卡接口.pdf》资料免费下载
    发表于 09-21 14:49 0次下载
    使用STM32F<b class='flag-5'>05</b>xx微控制器设计智能卡<b class='flag-5'>接口</b>

    USB接口防静电器件SR05 LEIDITECH

    USB接口防静电器件SR05 LEIDITECH
    的头像 发表于 08-11 11:55 309次阅读

    AP ATS-2音频分析仪120KHz

    仪,测量频率响应、电平和增益、相位互调失真、信噪比、串扰、时域显示和总谐波失真加噪声。 数字接口分析 使用多音分析仪进行超快速生产测试 带有“学习模式”、LabVIEW 和 GPIB 的 AP 基本脚本
    的头像 发表于 07-18 11:36 342次阅读
    AP ATS-2音频<b class='flag-5'>分析</b>仪120KHz

    tty驱动接口分析

    tty这个名称源于电传打字节的简称,在linux表示各种终端,终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标,输出设备显示器的控制终端和串口终端。也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题。
    的头像 发表于 07-14 12:21 578次阅读
    tty驱动<b class='flag-5'>接口分析</b>

    如何让ESP8266通过TCP或UDP中继该串行数据?

    嗨朋友们!抱歉,因为我确定有人在这里寻求类似应用程序的帮助。我进行了大量搜索,只是不知道从哪里开始使用我的硬件。因此,假设我对网络、编程、终端等知之甚少。有人能为我指明正确的方向,让我知道如何让这个
    发表于 06-07 08:42

    AP/ATS-2音频分析仪120KHz

    仪,测量频率响应、电平和增益、相位互调失真、信噪比、串扰、时域显示和总谐波失真加噪声。 数字接口分析 使用多音分析仪进行超快速生产测试 带有“学习模式”、LabVIEW 和 GPIB 的 AP 基本脚本
    发表于 05-31 11:55 365次阅读
    AP/ATS-2音频<b class='flag-5'>分析</b>仪120KHz

    HC05蓝牙模块编程实例

    今天分享一个实践项目——HC05蓝牙模块的编程
    的头像 发表于 05-26 16:01 2263次阅读
    HC<b class='flag-5'>05</b>蓝牙模块<b class='flag-5'>编程</b>实例

    如何使用WIFI模块进行飞控与地面站之间的MAVlink通信?

    ESP8266系列模组其主要包括ESP-01,ESP-01S,ESP-12F等型号。本文主要以ESP-01为例,介绍如何使用WIFI模块进行飞控与地面站之间的MAVlink通信。
    发表于 05-22 15:36 1926次阅读
    如何使用WIFI模块进行飞控与地面站之间的<b class='flag-5'>MAVlink</b>通信?

    学习上位机编程还是PLC编程

    当我们们谈到学习自动化编程时,可能会面临一个选择:学习上位机编程还是PLC编程?针对这个问题,我想说,这两种
    发表于 05-09 14:23 3次下载
    先<b class='flag-5'>学习</b>上位机<b class='flag-5'>编程</b>还是PLC<b class='flag-5'>编程</b>

    USB接口防静电器件SR05 LEIDITECH介绍

    了解SR05防静电器件" 上海雷卯生产的USB防静电器件SR05是一种专门为USB接口设计的保护器件。
    的头像 发表于 04-28 10:08 1725次阅读
    USB<b class='flag-5'>接口</b>防静电器件SR<b class='flag-5'>05</b> LEIDITECH介绍

    USB接口防静电器件SR05 LEIDITECH

    USB防静电器件SR05LEIDITECH"了解SR05防静电器件"上海雷卯生产的USB防静电器件SR05是一种专门为USB接口设计的保护器件。它具有快速响应、低漏电流等特点
    的头像 发表于 04-28 09:35 559次阅读
    USB<b class='flag-5'>接口</b>防静电器件SR<b class='flag-5'>05</b> LEIDITECH