iNavFlight之MSP v2 Sensor报文格式
iNavFlight之MSP v2 Sensor报文格式
- 1. MSP v2传感报文介绍
- 2. MSP v2协议格式
- 3. MSP v2传感代码流程
- 4. MSP v2 传感器
- 4.1 光流传感报文-MSP2_SENSOR_RANGEFINDER
- 4.2 测距传感报文-MSP2_SENSOR_OPTIC_FLOW
- 4.3 GPS传感报文-MSP2_SENSOR_GPS
- 4.4 磁力计传感报文-MSP2_SENSOR_COMPASS
- 4.5 气压计传感报文-MSP2_SENSOR_BAROMETER
- 4.6 空速计传感报文-MSP2_SENSOR_AIRSPEED
- 5. 参考资料
1. MSP v2传感报文介绍
鉴于飞控近年来发展历程及趋势
- 设计成熟度的提升
- 大量传感器的应用
- 传感器干扰问题分析
- 硬件接口多样化问题
- 软件设计复杂度的提高
- 配置&使用的简洁化要求
在传感器应用领域,期望更多的标准化设计,MSPv2协议在拓展v1时,就考虑了这方面的需求。
- 硬件接口:Rx/Tx/VCC/GND (UART)
- 软件接口:MSP v2协议格式
- 报文解析:根据command来表征和区分不同传感器数据
2. MSP v2协议格式
+---+---+--------+---------+--------+------+---------+------------------------------+-------------+| Multiwii Serial Protocol V2 length = 9 + payload size |+---+---+--------+---------+--------+------+---------+------------------------------+-------------+| $ | X | < ! > | flag(1) | cmd(2) | size(2) | payload(16bit len) | checksum_v2 |+---+---+--------+---------+--------+------+---------+------------------------------+-------------+
- ‘$’:表示SOF(Start Of a frame)
- ‘X’:表示V2
- ‘<’: 表示request
- ‘>’:表示response
- ‘!’:表示error
- payload: 传感数据
这里要注意的一个问题是网络字节序,尤其是对通信比较熟悉的朋友。常规的逻辑是这样的:
发送端CPU字节序 — Host2Network转换字节序 —> 网络传输(大端字节序) — Network2Host转换字节序 —> 接收端CPU字节序
上述两个逻辑转换:Host2Network/Network2Host来确保发送和接受CPU能根据本地的存储字节序来解析多字节变量
【但是】飞控代码上看,串口收到报文以后,直接将buffer一个指针强行变换到定义的结构体上了。
【好嘛,这么粗暴处理!!!】STM32可是小端字节序的呀,这么大胆??? 猜测这些传感模块大都是小端字节序或者8位单片机,所以整个系统都是小端的,就没有大系统这么复杂了。
3. MSP v2传感代码流程
iNav应用代码从main开始进入,根据配置信息使能串口;当串口收到传感器MSP v2传感报文时,将信息送到mspProcessSensorCommand进行解析。
taskHandleSerial└──> mspSerialProcess└──> mspFcProcessCommand└──> mspProcessSensorCommandmain└──> init└──> fcTasksInit //setTaskEnabled(TASK_SERIAL, true);
4. MSP v2 传感器
截止发稿日,在MSP v2协议上支持的传感器根据cmd(2),有如下几种:
src/main/msp/msp_protocol_v2_sensor.h
#define MSP2_IS_SENSOR_MESSAGE(x) ((x) >= 0x1F00 && (x) <= 0x1FFF)#define MSP2_SENSOR_RANGEFINDER 0x1F01
#define MSP2_SENSOR_OPTIC_FLOW 0x1F02
#define MSP2_SENSOR_GPS 0x1F03
#define MSP2_SENSOR_COMPASS 0x1F04
#define MSP2_SENSOR_BAROMETER 0x1F05
#define MSP2_SENSOR_AIRSPEED 0x1F06
4.1 光流传感报文-MSP2_SENSOR_RANGEFINDER
mspSensorOpflowDataMessage_t
typedef struct __attribute__((packed)) {uint8_t quality; // [0;255]int32_t motionX;int32_t motionY;
} mspSensorOpflowDataMessage_t;
4.2 测距传感报文-MSP2_SENSOR_OPTIC_FLOW
mspSensorRangefinderDataMessage_t
typedef struct __attribute__((packed)) {uint8_t quality; // [0;255]int32_t distanceMm; // Negative value for out of range
} mspSensorRangefinderDataMessage_t;
4.3 GPS传感报文-MSP2_SENSOR_GPS
mspSensorGpsDataMessage_t
typedef struct __attribute__((packed)) {uint8_t instance; // sensor instance number to support multi-sensor setupsuint16_t gpsWeek; // GPS week, 0xFFFF if not availableuint32_t msTOW;uint8_t fixType;uint8_t satellitesInView;uint16_t horizontalPosAccuracy; // [cm]uint16_t verticalPosAccuracy; // [cm]uint16_t horizontalVelAccuracy; // [cm/s]uint16_t hdop;int32_t longitude;int32_t latitude;int32_t mslAltitude; // cmint32_t nedVelNorth; // cm/sint32_t nedVelEast;int32_t nedVelDown;uint16_t groundCourse; // deg * 100, 0..36000uint16_t trueYaw; // deg * 100, values of 0..36000 are valid. 65535 = no data availableuint16_t year;uint8_t month;uint8_t day;uint8_t hour;uint8_t min;uint8_t sec;
} mspSensorGpsDataMessage_t;
4.4 磁力计传感报文-MSP2_SENSOR_COMPASS
mspSensorCompassDataMessage_t
typedef struct __attribute__((packed)) {uint8_t instance;uint32_t timeMs;int16_t magX; // mGauss, frontint16_t magY; // mGauss, rightint16_t magZ; // mGauss, down
} mspSensorCompassDataMessage_t;
4.5 气压计传感报文-MSP2_SENSOR_BAROMETER
mspSensorBaroDataMessage_t
typedef struct __attribute__((packed)) {uint8_t instance;uint32_t timeMs;float pressurePa;int16_t temp; // centi-degrees C
} mspSensorBaroDataMessage_t;
4.6 空速计传感报文-MSP2_SENSOR_AIRSPEED
mspSensorAirspeedDataMessage_t
typedef struct __attribute__((packed)) {uint8_t instance;uint32_t timeMs;float diffPressurePa;int16_t temp; // centi-degrees C
} mspSensorAirspeedDataMessage_t;
5. 参考资料
【1】BetaFlight模块设计之三十二:MSP协议模块分析
【2】Multiwii Serial Protocol Version 2
【3】传感模块:MATEKSYS Optical Flow & LIDAR 3901-L0X
iNavFlight之MSP v2 Sensor报文格式相关推荐
- iNavFlight之MSP DJI协议飞控端请求应答
iNavFlight之MSP DJI协议飞控端请求应答 1. 报文格式 2. 报文标志(flag) 3. 报文命令(cmd) 4. 请求应答 & 反馈报文 4.1 DJI_MSP_API_VE ...
- ARP协议的报文格式
结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息 用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr结构外, 还包含源主 ...
- tcp报文格式_面试必备TCP(一):三次握手
TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...
- 四、HTTP响应报文格式
一.响应报文格式 HTTP的响应报文的通用格式如下 主要包括状态行.首部行.空行和实体体,和请求报文的结构类似 示例 状态行 HTTP/1.1 200 OK\r\n 常见的状态码的类别如下 常用状态码 ...
- MQTT——控制报文格式
了解控制报文格式是学习MQTT中,笔者认为最为重要的一个知识点.MQTT的所有行为都离不开他.控制报文可以分为三个部分组成,分别为:固定报头.可以变报头.有效载荷部分. 注意:上面的说的报文的类型.是 ...
- RLC协议简单理解1-RLC报文格式
RLC协议简介 RLC(Radio Link Control)在无线协议架构中属于数据面协议中的一部分,数据传输从基站到终端的过程中,一共要经历UDP/SCTP-->SDAP/RRC--> ...
- webservice发送xml报文_海关总署公告2020年第120号(关于发布进出境公路运输工具货运舱单电子传输报文格式V1.1的公告)...
点击上方蓝色字体,关注我们 为切实加强公路进出境运输工具及货运舱单管理,进一步规范相关电子数据申报传输要求,根据海关总署2020年第113号公告,我署对进出境公路运输工具货运舱单电子传输报文中部分数据 ...
- DNS报文格式(RFC1035)
2.资源记录定义(RR definitions) 2.1 格式 后面分析报文的时候详细解释. 2.2 类型值(TYPE values) 类型主要用在资源 ...
- 【计算机网络】HTTP 与 HTTPS ( HTTP 发展过程 | HTTP/1.1 与 HTTP/2 对比 | HTTP 报文格式 )
文章目录 前言 一.HTTP 发展过程 二.HTTP/1.1 与 HTTP/2 对比 三.HTTP 报文格式 前言 目前如果在浏览器中访问 http 网站 , 浏览器会提示不安全 , 如下图 : 如果 ...
最新文章
- Paddle Release Note
- 2016.4.2 动态规划练习--讲课整理
- 「Python」ubuntu使用make命令安装python(带详细解释和防坑指南)
- linux 定时器 代码,linux C++ 定时器代码
- linux 如何取执行一个脚本5000次,【shell笔记脚本】嵌套、控制循环以及处理循环输出...
- 使用sersync实现多台服务器实时同步文件
- 北理计算机未来,2021北理计算机专硕889考研经验分享
- 尚硅谷设计模式-观察者模式
- 使用正则表达式实现网页爬虫的思路详解
- 小学计算机专业说课稿模板,小学信息技术说课稿模板汇总八篇
- mariadb相关说明
- 短期盈利无望,Uber到底值多少钱?
- web渗透--vnc密码破解
- 安全检查监理项目部材料清单
- 微信公众号开发(五)个性化菜单
- 参考文献格式国家标准GB T7714-2015
- 怎么将几张pdf合并成一张_如何将多个pdf文件合并成一个pdf文件?
- 0.96寸OLED显示屏驱动手册(SSD1306)
- spring boot车辆管理系统毕业设计源码031034
- 同一张表查询一个字段为空则取另一个字段
热门文章
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java宠物医院管理系统fy9ez
- opencv学习笔记十八:模板匹配(cv2.matchTemplate、cv2.minMaxLoc)
- 后浪HTML5推前浪Flash:2020,为何大家都不支持Flash了?
- static变量和普通变量的区别
- 解决 Vmware 虚拟机安装linux系统无法联网的的问题
- 2-44 JQuery
- 异常:getInputStream() has already been called for this request
- 《石头迷阵》游戏业务数据设计、游戏功能制作、游戏界面绘制
- 55 非谓语动词语法
- 对比学习-SimSiam-论文精读解析