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

    文章

    1100

    浏览量

    42463
  • CAN
    CAN
    +关注

    关注

    59

    文章

    3111

    浏览量

    473881
  • uart
    +关注

    关注

    22

    文章

    1325

    浏览量

    107166
  • mavlink
    +关注

    关注

    0

    文章

    9

    浏览量

    2780
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    onsemi SL05T1G系列ESD保护二极管:高速接口的可靠防护方案

    onsemi SL05T1G系列ESD保护二极管:高速接口的可靠防护方案 在电子设备设计中,静电放电(ESD)和瞬态过电压对敏感电子元件的威胁始终是工程师们关注的重点。特别是在高速接口如通信系统
    的头像 发表于 05-15 16:05 131次阅读

    Onsemi SRDA05 - 4R2 ESD保护二极管:高速数据接口的可靠卫士

    Onsemi SRDA05 - 4R2 ESD保护二极管:高速数据接口的可靠卫士 在当今高速发展的电子科技领域,高速数据接口的稳定性和可靠性至关重要。ESD(静电放电)、EFT(电快速瞬变脉冲群
    的头像 发表于 05-15 15:40 117次阅读

    肖特基势垒二极管SB05 - 05C详细解析

    肖特基势垒二极管SB05 - 05C详细解析 在电子电路设计中,肖特基势垒二极管是一种常用的半导体器件,今天我们就来详细了解一下ON Semiconductor的SB05 - 05C肖
    的头像 发表于 05-12 16:20 201次阅读

    电子工程师的SB05W05C肖特基势垒二极管设计指南

    电子工程师的SB05W05C肖特基势垒二极管设计指南 在电子设计领域,选择合适的二极管对于电路性能至关重要。今天,我们将深入探讨ON Semiconductor的SB05W05C肖特基势垒二极管
    的头像 发表于 05-12 16:15 121次阅读

    深入解析NID9N05ACL和NID9N05BCL功率MOSFET

    深入解析NID9N05ACL和NID9N05BCL功率MOSFET 在电子工程师的日常设计工作中,功率MOSFET是一种常见且关键的元件。今天,我们将深入探讨ON Semiconductor推出
    的头像 发表于 05-09 16:15 280次阅读

    解析NIC9N05TS1与NIC9N05ATS1保护型功率MOSFET

    解析NIC9N05TS1与NIC9N05ATS1保护型功率MOSFET 在电子设计领域,功率MOSFET是不可或缺的关键元件,它在众多电路中发挥着重要作用。今天我们就来详细了解一下
    的头像 发表于 05-09 16:15 191次阅读

    STEVAL - LNBH05:卫星LNB电源评估板的技术剖析

    - LNBH05电源评估板,看看它在LNB供电方面有哪些独特的优势。 文件下载: STEVAL-LNBH05.pdf 一、STEVAL - LNBH05的功能特性 1. 接口与供电
    的头像 发表于 04-17 14:05 205次阅读

    驱动之路#03:LCD 时序参数分析

      题图:浙江普陀山客运中心最近获得2021年度凡尔赛建筑奖。 欢迎关注,每周更新!☞ 本合集分享的是,我当初学习Linux驱动的来时路——《《驱动之路》开篇:自序13 tvb: 垂直上宽/后肩
    的头像 发表于 02-10 08:27 3280次阅读
    驱动<b class='flag-5'>之路</b>#03:LCD 时序参数<b class='flag-5'>分析</b>

    嵌入式单片机开发学习路径

    ,但是确是不可缺少的。 3. 实践操作 3.1 学习并操作开发板 选择一款流行的单片机开发板(如Arduino、STM32等),通过实际操作熟悉开发环境、编程流程和调试方法。 3.2 完成简单
    发表于 02-09 15:42

    在Daraz平台获取搜索列表数据的API接口实现

    ​ 一、接口分析 Daraz平台未公开官方API文档,但可通过分析网络请求获取数据接口。核心步骤如下: 请求URL 搜索页面的数据接口通常为:   base_url = "https
    的头像 发表于 02-05 17:42 237次阅读
    在Daraz平台获取搜索列表数据的API<b class='flag-5'>接口</b>实现

    多协议可编程USB接口适配器

    多协议可编程USB接口适配器USB2S,全面支持UART/I2C/SPI/CAN/1-Wire USB2S(USB To Serial ports)是一款多功能可编程接口适配器,支持U
    的头像 发表于 01-15 14:06 383次阅读
    多协议可<b class='flag-5'>编程</b>USB<b class='flag-5'>接口</b>适配器

    如何选择吉时利数字源表2601B的编程接口

    将从应用场景出发,结合技术特性与工程实践,解析各接口方案的优劣与适用场景。   一、接口类型与基础特性分析 2601B数字源表支持以下主流编程接口
    的头像 发表于 12-17 16:05 467次阅读
    如何选择吉时利数字源表2601B的<b class='flag-5'>编程</b><b class='flag-5'>接口</b>

    USB接口的革命性进化之路

    USB(Universal Serial Bus,通用串行总线)自问世以来,凭借其传输速度快、使用方便、连接灵活等优势,迅速取代了其他同类接口标准,成为电子设备连接的主流选择。更关键的是,USB标准
    的头像 发表于 12-01 11:48 615次阅读

    Texas Instruments TSD05/TSD05C/TSD36C浪涌保护装置数据手册

    Texas Instruments TSD05/TSD05C/TSD36C浪涌保护器件专为箝位有害瞬变(如ESD和浪涌)而设计。TSD05是单向的,而TSD05C/TSD36C是双向的
    的头像 发表于 08-18 11:12 1494次阅读
    Texas Instruments TSD<b class='flag-5'>05</b>/TSD<b class='flag-5'>05</b>C/TSD36C浪涌保护装置数据手册

    零基础学习LuatOS编程:快速上手开发实战教程!

    无论你是刚接触物联网编程的新手,还是希望拓展技能的技术爱好者,本教程将为零基础的读者提供一条清晰的LuatOS学习路径。从安装开发工具到编写第一个程序,我们将通过实例讲解核心概念,助你快速实现从理论
    的头像 发表于 06-13 17:27 813次阅读
    零基础<b class='flag-5'>学习</b>LuatOS<b class='flag-5'>编程</b>:快速上手开发实战教程!