BetaFlight模块设计之十二:电传任务分析
BetaFlight模块设计之十二:电传任务分析
- 电传任务
- taskTelemetry任务分析
- subTaskTelemetryPollSensors函数分析
- telemetryProcess函数分析
基于BetaFlight开源代码框架简介的框架设计,逐步分析内部模块功能设计。
电传任务
描述:主要用于向地面砖发送飞机状态信息,以便地面站了解飞机的实时工作状态,位置信息等。
├──> 初始化│ ├──> [x]硬件初始化│ └──> [v]业务初始化telemetryInit├──> 任务│ ├──> [x]实时任务│ ├──> [x]事件任务│ └──> [v]时间任务[TASK_TELEMETRY] = DEFINE_TASK("TELEMETRY", NULL, NULL, taskTelemetry, TASK_PERIOD_HZ(250), TASK_PRIORITY_LOW),├──> 驱动│ ├──> [x]查询│ └──> [x]中断└──> 接口├──> void telemetryCheckState(void)├──> bool telemetryCheckRxPortShared(const serialPortConfig_t *portConfig, const SerialRXType serialrxProvider)└──> 支持FRSKY、HOTT、SMARTPORT、LTM、JETIEXBUS、MAVLINK、CRSF、GHST、SRXL、IBUS协议
taskTelemetry任务分析
任务并不复杂,只要不是连计算机的情况下,使能电传功能,就没3秒更新下温度,并调用telemetryProcess。
taskTelemetry└──> <!cliMode && featureIsEnabled(FEATURE_TELEMETRY)>├──> subTaskTelemetryPollSensors└──> telemetryProcess
subTaskTelemetryPollSensors函数分析
这里估计是飞控都有IMU,所以从gyro获取温度更加通用吧。
subTaskTelemetryPollSensors└──> <cmpTimeUs(currentTimeUs, lastGyroTempTimeUs) >= GYRO_TEMP_READ_DELAY_US> // read the gyro temp every 3 seconds├──> sgyroReadTemperature└──> lastGyroTempTimeUs = currentTimeUs;
telemetryProcess函数分析
从这里可以看出目前代码4.3支持的电传协议种类:FRSKY、HOTT、SMARTPORT、LTM、JETIEXBUS、MAVLINK、CRSF、GHST、SRXL、IBUS,详细的电传协议可以仔细阅读相应的处理函数代码。
telemetryProcess├──> <USE_TELEMETRY_FRSKY_HUB>│ └──> handleFrSkyHubTelemetry├──> <USE_TELEMETRY_HOTT>│ └──> handleHoTTTelemetry├──> <USE_TELEMETRY_SMARTPORT>│ └──> handleSmartPortTelemetry├──> <USE_TELEMETRY_LTM>│ └──> handleLtmTelemetry├──> <USE_TELEMETRY_JETIEXBUS>│ └──> handleJetiExBusTelemetry├──> <USE_TELEMETRY_MAVLINK>│ └──> handleMAVLinkTelemetry├──> <USE_TELEMETRY_CRSF>│ └──> handleCrsfTelemetry├──> <USE_TELEMETRY_GHST>│ └──> handleGhstTelemetry├──> <USE_TELEMETRY_SRXL>│ └──> handleSrxlTelemetry└──> <USE_TELEMETRY_IBUS>└──> handleIbusTelemetry
BetaFlight模块设计之十二:电传任务分析相关推荐
- BetaFlight模块设计之十:磁力计任务分析
BetaFlight模块设计之十:磁力计任务分析 磁力计任务 taskUpdateMag函数分析 compassUpdate函数分析 磁力计配置 基于BetaFlight开源代码框架简介的框架设计,逐 ...
- BetaFlight模块设计之三十二:MSP协议模块分析
BetaFlight模块设计之三十二:MSP协议模块分析 1. MSP协议模块 1.1 MSP描述 1.2 MSP版本优缺点 1.3 MSP代码资源 2. MSP报文解析 2.1 MSP收包状态机 2 ...
- BetaFlight模块设计之三十五:RSSI信号强度链路稳定性分析
BetaFlight模块设计之三十五:RSSI信号强度&链路稳定性分析 1. RSSI信号强度 1.1 RSSI Value 1.2 RSSI dBm Value 2. 链路稳定性 3. RS ...
- BetaFlight模块设计之三十:Cli模块分析
BetaFlight模块设计之三十:Cli模块分析 Cli模块 Cli接口 Cli框架 Cli命令结构 主要函数分析 cliProcess函数 processCharacterInteractive函 ...
- BetaFlight模块设计之三十四:OSD模块分析
BetaFlight模块设计之三十四:OSD模块分析 1. OSD模块 1.1 osd状态机子模块 1.2 osd_warnings检查子模块 1.3 osd_elements子模块 2. OSD设备 ...
- BetaFlight模块设计之九:气压计任务分析
BetaFlight模块设计之九:气压计任务分析 气压计任务 taskUpdateBaro气压计任务函数 baroUpdate气压计数据更新函数 气压计配置 基于BetaFlight开源代码框架简介的 ...
- BetaFlight模块设计之十七:pinioBox任务分析
BetaFlight模块设计之十七:pinioBox任务分析 pinioBox任务 业务配置 硬件配置 pinioBoxUpdate任务分析 基于BetaFlight开源代码框架简介的框架设计,逐步分 ...
- BetaFlight模块设计之二:SERIAL任务分析
BetaFlight模块设计之二:SERIAL任务分析 SERIAL任务 1.总体情况 2.主要函数分析 2.1 taskHandleSerial任务 2.2 命令行处理函数cliProcess 2. ...
- PX4模块设计之三十五:MulticopterAttitudeControl模块
PX4模块设计之三十五:MulticopterAttitudeControl模块 1. MulticopterAttitudeControl模块简介 2. 模块入口函数 2.1 主入口mc_att_c ...
最新文章
- 福禄克网络与NBASE-T联盟联合发布电缆布线基础设施白皮书
- linux ls 输出对齐,理解 Linux 中 `ls` 的输出
- openstack 重启mysql_突然断电导致mariadb数据库无法启动(openstack 命令无法使用)...
- 一个半路出家的前端工程师的2018 | 掘金年度征文
- SAP Spartacus的Component 请求
- 【洛谷 P4051】 [JSOI2007]字符加密(后缀数组)
- openwrt使用linux内核版本,降低OpenWRT的Linux内核版本
- 【ASP.NET】HTTP中的 get 和 post 请求
- 【超链接】一些OI学习网站
- 成功就是成为最好的你自己
- 此windows7副本不是正版、黑屏7601的解决办法
- 新手不要再被误导!这是一篇最新的Xposed模块编写教程
- SPSS Modeler 统计指标计算(指南 第七章)
- 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例
- python国际象棋ai程序_Python开发AI应用-国际象棋应用
- SQL查询表中重复数据
- Nearly Lucky Number
- 人工智能-用matlab实现数字识别
- 剑灵网一的服务器在哪个文件夹,wegame剑灵安装包在哪个文件夹
- yii2高级模板安装和yii migrate的使用
热门文章
- 带内全双工水声通信系统自干扰抵消技术研究框架与思路
- 权限维持——获取登陆账号及安装后门程序
- iPhone开发中的技巧整理
- Revit中模型文字的放置和族库工具介绍
- 如何在线压缩图片至200K?图片压缩用什么?
- Opencv学习笔记 基于HOG和SVM的行人检测
- 用计算机对音频信息进行处理 要将模拟信号,[电脑基础知识]大学计算机第五章.ppt...
- 用javascript控制调用media player播放器例子[转]
- 怎么查询ESI排名(ESI全称:Essential Science Indicators)
- 一台计算机数据丢失与恢复,电脑文件丢失怎么找回?电脑文件数据丢失原因及恢复方法...