BetaFlight代码解析(15)—通信系统

BetaFlight开源飞控源码分析 BetaFlight是穿越机领域比较成熟的开源飞控,本篇文章主要分析一下源代码以及如何使用这个开源代码 阅读详情

Betaflight 的通信系统为所有串行通信接口提供了一个统一的抽象层。该系统管理多种类型的串行端口(UART、软件串行、USB VCP),处理不同功能之间的端口共享,并为协议实现提供一致的 API。该系统支持与外部设备通信,包括飞行控制器、遥测接收器、GPS 模块和视频发射器。

系统架构

该通信系统基于分层架构构建,抽象化了硬件差异,并为所有串行通信需求提供了统一的接口。

串口类型及识别

Betaflight 支持多种类型的串行通信接口,每种接口都由一个唯一的serialPortIdentifier_e值标识,并通过一个通用的抽象层进行管理。

港口类型分类

端口类型标识符范围描述
USB VCPSERIAL_PORT_USB_VCP(20)通过 USB 的虚拟 COM 端口
UART/USART50-69硬件 UART 外设
SoftSerial30-31基于定时器的软件 UART
LPUART40岁以上低功耗UART外设
PIOUART70-79基于 PIO 的 UART(RP2040)

端口功能分配

每个串口都可以通过serialPortFunction_e位掩码分配一个或多个功能:

端口配置和共享

串行系统支持复杂的端口共享机制,允许多个功能在特定条件下使用同一个物理端口。

配置结构

端口共享规则

该系统强制执行特定的端口共享规则,以防止冲突:

  1. MSP共享:MSP可以通过遥测协议或黑盒日志共享数据。
  2. RX/遥测共享:串口RX可以与遥测共享(RX使用RX线,遥测使用TX线)
  3. VTX MSP:必须与 RX 或 MSP 串口共享
  4. 验证:所有共享组合均经过验证。isSerialConfigValid()

端口开放和运行时管理

串行系统提供了一个统一的接口,用于打开和管理串行端口,而无需考虑底层硬件实现。

波特率管理

该系统支持一组预定义的波特率,并具备自动选择功能:

指数波特率常用用法
波特率自动0自动检测
BAUD_96009600GPS,一些遥测技术
波特率_5760057600GPS默认设置
波特率_115200115200MSP 默认
BAUD_250000250000高速协议
BAUD_921600921600高性能链路

虚拟表格模式

该通信系统采用虚拟表模式,在不同的串行实现中提供一致的 API,同时允许针对特定驱动程序进行优化。

这种设计允许应用程序使用串行端口而无需了解底层实现细节,同时每个驱动程序都可以为硬件特定功能(如 DMA 传输)提供优化的实现。

BetaFlight之穿越机F4飞控设置 BetaFlight之穿越机设置 在这里插入图片描述 阅读详情

相关推荐

Betaflight开源飞控系统——代码架构与任务调度系统初探以及视频字符叠加OSD源码详细实战分析

Betaflight开源飞控系统采用模块化架构设计,核心包含硬件抽象层、传感器处理层、飞行控制层和用户接口层。系统采用基于时间片的任务调度机制,将任务分为高、中、低三个优先级等级,其中高优先级任务(如传感器数据采集)执行周期最短(1.25ms),中等优先级任务(如PID控制)周期为2.5ms,低优先级任务(如OSD更新)周期为20ms。OSD系统AT7456E等芯片,提供电池电压、姿态角、GPS等信息的实时显示,并允许通过CLI和配置菜单进行自定义布局设置。系统通过任务调度优化、显示按需更新和硬件接口优化等

bother3000的博客 3161

BetaFlight开源代码框架简介

框架设计重点要做到各切分模块的业务融合,分析的主要考量点:C语言工程代码函数入口为main,之前启动及C环境初始化代码不做介绍,启动文件代码文件(lib\main\STM32H7\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\arm\startup_stm32h745xx.s)。业务逻辑方面主要是从main来分析框架代码,这里也不会对HAL(Hardware Adapter Layer)做分析,对底层感兴趣的朋友可以从STM官网或者其他网站得到更多的S

lida2003的专栏 1万+

(一~)Betaflight开源AT32飞控Makefile详解

AT32国产飞控最近比较火,佬儿出了一些关于BF飞控移植的文章,但不太详细。这里记录了本人学习BF飞控时关于Makefile部分的总结,留待参照。

qq_53043199的博客 4315

BetaFlight开源工程结构简明介绍

BetaFlight是穿越机比较成熟的飞控OpenSouce。这里有一点需要注意的是BetaFlight官网只是提供开源软件工程,任何相关穿越机硬件的生产制造都不是BetaFlight提供。当然开源飞控代码并非BetaFlight一家,这里提供一张开源飞控代码历史发展图,可以给大家一个更直观的了解。有兴趣的朋友可以点开链接,以便有更多信息(当然这个是youtube的,国内不知道哪里有这个视频链接,VPN还是需要的,否则无法打开)。 因为,之前DIY四轴飞控调试起飞用的就是这套代码,所以这里深入一下开源工程结

lida2003的专栏 9871

Betaflight飞控系统固件与配置工具大全

Betaflight是专门为多旋翼飞行器和类似飞行模型设计的开源飞控软件。它不仅提供了一个完整的飞行控制平台,而且还允许用户深入调整飞行行为,以适应不同的飞行环境和风格。这一章将带领读者入门Betaflight,包括其基本功能和如何开始配置。Betaflight 提供了丰富的定制选项,包括但不限于PID(比例-积分-微分)控制器参数的调整、飞行模式的设定、以及各种传感器的校准。此固件的易用性与强大的功能得到了广大飞控爱好者和专业人士的认可。

weixin_35636570的博客 2416

Disk Drill 使用教程

Disk Drill只需单击几下,即可恢复USB闪存驱动器上已删除的数据,包括丢失的照片,文档和其他文件类型。Disk Drill是真正的多合一应用程序,可在Mac上恢复闪存驱动器。Disk Drill将自动应用最佳的笔式驱动器恢复算法来恢复Mac数据。 USB闪存驱动器是一种传输和存储信息的好方法,但是如果错误地丢失或删除了存储在其中的文件,会发生什么呢?当您需要Mac的闪存驱动器数据恢复软件时,Disk Drill是您的最佳选择。Disk Drill将扫描您的USB闪存驱动器(也称为笔式驱动器)并查找

zjj778899的博客 1万+

3大革新!Betaflight 2025.12开源飞控固件深度进化指南

Betaflight 2025.12开源飞控固件带来全方位升级,助你实现飞控性能优化与穿越机固件升级的完美结合。本文将从核心突破、实战升级到场景化调优,带你全面解锁新一代飞控的强大能力。 ## 一、核心突破解析 ### 1. 飞控大脑重构:多任务调度系统革新 飞控系统的核心在于任务调度,Betaflight 2025.12采用全新的实时多任务调度架构,就像给飞控装上了更智能的"大脑"。 [

gitblog_00840的博客 515

离线语音识别模块LD3320实战:如何低成本给STM32设备加上‘耳朵’和‘嘴巴’?

本文详细介绍了如何为STM32设备集成LD3320离线语音识别模块,实现低成本语音交互方案。从硬件连接到STM32底层驱动实现,再到指令训练与词条优化技巧,完整解析了唤醒词检测与自定义指令识别的全过程。LD3320作为非特定人声识别芯片,无需网络连接,适用于智能家居、工业控制等场景,是嵌入式开发者的理想选择。

weixin_30906185的博客 555

突破飞控性能瓶颈:Betaflight 2025.12技术升级全解析

在高速穿越机竞赛现场,飞行员突然发现无人机对操控指令的响应出现明显滞后,这种延迟在复杂障碍物环境中直接导致了碰撞事故。这一场景暴露出传统飞控固件在实时性、稳定性与扩展性方面的三大核心挑战: **实时任务调度瓶颈** 传统架构采用轮询机制处理飞行控制任务,在多传感器数据处理和复杂控制算法运行时,任务响应延迟常高达20ms。当无人机进行每秒30次姿态调整的高机动动作时,这种延迟会累积形成显著的控

gitblog_00177的博客 283

西门子 S7-200 SMART 系列六:手把手教你配置S7-200 SMART Modbus RTU

最新发表:https://www.ics-pedia.com/%e8%a5%bf%e9%97%a8%e5%ad%90-s7-200-smart-%e7%b3%bb%e5%88%97%e5%85%ad%ef%bc%9a%e6%89%8b%e6%8a%8a%e6%89%8b%e6%95%99%e4%bd%a0%e9%85%8d%e7%bd%aes7-200-smart-modbus-rtu%e5%ae%9e%e4%be%8b/

John_09040211的博客 3278

做小程序支付时,我是怎么被“虚拟支付”绊了一跤的

微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。

zhurizhe71的学习之路 2576

BetaFlight飞控启动&运行过程简介疑问跟踪

上述问题基本已经得到回复,虽然有些问题尚有存疑部分。显然很多历史的问题,并不一定都是能寻根究底的。我们暂且考一段落,希望能有更加明确的场景和rootcause给出,以便工程角度更好的分析和定位问题。这也是我通常比较强调的为什么很多事情要搞清楚rootcause的原因。相信上面的问题是有这些内容的,但是需要挖掘出来,需要和真正处理的当事人非常紧密和深入的探讨。当然这样也就为后面设计和重构提供了基础。

lida2003的专栏 1306

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

wojuzi的博客 2445

Betaflight配置器下载与安装指南

下这个的驱动的目的是让电脑能识别设备、控制设备,并让设备正常发挥功能(但是大多数是都可以直接识别出的)然后就一直往下面翻,翻到最后面,再到这个Assets资产,根据自己的需要进行下载即可。Betaflight右上角的这个是识别出的端口号,有这个说明已成功识别,点击选择。点击下载“最新版本”,因为它是在github当中,所以可能需要一点小手段。此处有两个选项,一个是下载最新版本,一个是直接在浏览器运行。下载Betaflight先直接搜索其官网,点击进入。安装完成后即可进入程序,这和浏览器的几乎一样。

2302_80134745的博客 3997

视觉机器人抓取实战:从物体定位到抓取估计的完整流程解析(附Python代码示例)

本文详细解析了视觉引导机器人抓取的完整技术流程,涵盖从物体定位、位姿估计到抓取估计的核心步骤。通过Python代码示例,演示了如何使用Open3D等工具进行点云处理、平面分割、PCA与ICP位姿估计,以及基于几何启发式的抓取生成方法,为机器人视觉抓取开发提供了清晰的实战指南。

peach的博客 912

【WRF-Chem】预处理工具(Preprocessors)总结

预处理工具(Preprocessors)总结

WW、forever的博客 1179

BetaFlight统一硬件配置文件研读

统一硬件配置文件的设计是一种非常好的设计模式,可以将硬件和软件的工作进行解耦。

lida2003的专栏 3555

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

探索未来飞行体验:Betaflight——您的多旋翼控制软件选择

探索未来飞行体验:Betaflight——您的多旋翼控制软件选择 项目地址:https://gitcode.com/gh_mirrors/be/betaflight Betaflight是一个专为多旋翼和固定翼飞行器设计的飞控软件(固件)。作为Baseflight和Cleanflight的进化版,它专注于飞行性能提升,引入前沿功能,并支持广泛的硬件目标。随着4.5版本即将发布,现在是加入这个社区...

gitblog_00157的博客 2593

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

探秘 BetaFlight: 开源多轴无人机飞控系统的技术魅力

探秘 BetaFlight: 开源多轴无人机飞控系统的技术魅力 项目地址:https://gitcode.com/gh_mirrors/be/betaflight 是一个高度可定制、开源的多轴无人机飞行控制系统,致力于提供卓越的飞行性能和易用性。对于无人机爱好者、开发者和DIY爱好者来说,这是一个不可错过的平台。本文将深入解析BetaFlight的特性、技术细节以及它在实际应用中的潜力。 项目简介...

gitblog_00088的博客 3362

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

BetaFlight参数配置解读

BetaFlight参数配置解读

perseverance51博客 3465

Betaflight 开源飞行控制器固件使用教程

Betaflight 开源飞行控制器固件使用教程 项目地址:https://gitcode.com/gh_mirrors/be/betaflight 项目介绍 Betaflight 是一个开源的飞行控制器固件,专为多旋翼飞行器设计。它是从 Cleanflight 分支出来的,继承了 Cleanflight 的许多特性,并在此基础上进行了优化和扩展。Betaflight 提供了强大的功能,如串行接收...

gitblog_00510的博客 3908

探索未来飞行控制的边界:Betaflight 开源项目

探索未来飞行控制的边界:Betaflight 开源项目 项目地址:https://gitcode.com/gh_mirrors/be/betaflight 在飞行控制系统的世界里,Betaflight 是一个璀璨的明星。作为一项专注于飞行性能提升、创新特性添加和广泛硬件支持的开源项目,它为无人机爱好者和专业人士提供了无比自由的选择。 项目介绍 Betaflight 是一款用于多旋翼飞行器和固定翼...

gitblog_00171的博客 1175

Betaflight固件编译和烧录说明

Betaflight固件编译和烧录说明

perseverance51博客 6285

BetaFlight模块设计之三:芯片温度&参考电压和电池监测模块分析

BetaFlight模块设计之三:芯片温度&参考电压和电池监测模块分析1. 芯片温度&参考电压监测任务(ADCINTERNAL)2. 电池监测模块2.1 电压监测任务2.2 电流监测任务2.3 电池告警任务 基于BetaFlight开源代码框架简介的框架设计,逐步分析内部模块功能设计。 1. 芯片温度&参考电压监测任务(ADCINTERNAL) 描述:主要监控参考电压以及芯片温度。 ├──> 初始化 │ ├──> [v]硬件初始化adcInit/pgResetAl

lida2003的专栏 1891

Open FPV VTX开源之betaflight配置

有图有真相,我们有视频有真相!

lida2003的专栏 2616
上一篇: BetaFlight代码解析(14)—定时器系统
下一篇: BetaFlight代码解析(16)—串口管理
timmy-uav
博客等级 码龄26年 526粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timmy-uav

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值