BetaFlight代码解析(12)—电机输出系统

目的和范围

电机输出系统负责将飞行控制指令转换为驱动电机和舵机的PWM信号。该系统接收来自混控器的PID控制器输出和油门指令,并生成电子调速器(ESC)和舵机所需的精确时序信号。

系统架构

电机输出系统位于飞行控制流程的最后阶段,接收处理后的控制信号并将其转换为硬件特定的 PWM 输出。

电机输出系统概述


核心数据结构

PWM输出端口结构

pwmOutputPort_t结构代表每个电机或伺服输出通道:

场地类型目的
channeltimerChannel_t使用 CCR 寄存器和 TIM 实例配置定时器通道
pulseScalefloat脉冲宽度计算的比例因子
pulseOffsetfloat脉冲定时偏移值
forceOverflowbool强制特定协议的定时器溢出
enabledbool通道启用/禁用状态
ioIO_t输出的 GPIO 引脚分配

全球汽车管理

模拟信号处理

终点计算

analogInitEndpoints()函数计算电机控制的PWM脉冲宽度范围,可处理普通飞行模式和3D飞行模式:

普通模式与3D模式操作

模式解除武装价值输出范围死区
普通的motorConfig->mincommandminThrottlemaxthrottle不适用
3Dflight3DConfig()->neutral3dlimit3d_lowlimit3d_highdeadband3d_lowdeadband3d_high

电机控制接口

汽车状态管理

该系统提供多种电机状态管理和验证功能:

伺服输出支持

电机输出系统还通过专用配置结构处理伺服控制:

伺服配置结构

场地类型目的
servoCenterPulseuint16_t中心位置脉冲宽度(通常为 1500μs)
servoPwmRateuint16_t更新频率(50-498Hz)
ioTags[MAX_SUPPORTED_SERVOS]ioTag_t[]伺服输出的 GPIO 引脚分配

伺服控制功能

  • servoDevInit()根据配置初始化伺服输出通道
  • pwmWriteServo()将 PWM 值写入指定的伺服索引

与定时器系统的集成

电机输出系统高度依赖硬件定时器抽象层来生成精确的PWM信号:

系统依赖关系

电机输出系统与 Betaflight 的多个其他子系统连接:

  • PID控制器:接收电机混合的控制输出
  • 遥控控制flight3DConfig_t3D模式配置入口
  • 功能系统:检查FEATURE_3D启用状态
  • 电机配置motorConfig_t用于定时参数
  • 定时器系统:依赖于硬件定时器抽象层生成 PWM 信号。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值