目的和范围
电机输出系统负责将飞行控制指令转换为驱动电机和舵机的PWM信号。该系统接收来自混控器的PID控制器输出和油门指令,并生成电子调速器(ESC)和舵机所需的精确时序信号。
系统架构
电机输出系统位于飞行控制流程的最后阶段,接收处理后的控制信号并将其转换为硬件特定的 PWM 输出。
电机输出系统概述
核心数据结构
PWM输出端口结构
该pwmOutputPort_t结构代表每个电机或伺服输出通道:
| 场地 | 类型 | 目的 |
|---|---|---|
channel | timerChannel_t | 使用 CCR 寄存器和 TIM 实例配置定时器通道 |
pulseScale | float | 脉冲宽度计算的比例因子 |
pulseOffset | float | 脉冲定时偏移值 |
forceOverflow | bool | 强制特定协议的定时器溢出 |
enabled | bool | 通道启用/禁用状态 |
io | IO_t | 输出的 GPIO 引脚分配 |
全球汽车管理
模拟信号处理
终点计算
该analogInitEndpoints()函数计算电机控制的PWM脉冲宽度范围,可处理普通飞行模式和3D飞行模式:

普通模式与3D模式操作
| 模式 | 解除武装价值 | 输出范围 | 死区 |
|---|---|---|---|
| 普通的 | motorConfig->mincommand | minThrottle到maxthrottle | 不适用 |
| 3D | flight3DConfig()->neutral3d | limit3d_low到limit3d_high | deadband3d_low到deadband3d_high |
电机控制接口
汽车状态管理
该系统提供多种电机状态管理和验证功能:

伺服输出支持
电机输出系统还通过专用配置结构处理伺服控制:
伺服配置结构
| 场地 | 类型 | 目的 |
|---|---|---|
servoCenterPulse | uint16_t | 中心位置脉冲宽度(通常为 1500μs) |
servoPwmRate | uint16_t | 更新频率(50-498Hz) |
ioTags[MAX_SUPPORTED_SERVOS] | ioTag_t[] | 伺服输出的 GPIO 引脚分配 |
伺服控制功能
servoDevInit()根据配置初始化伺服输出通道pwmWriteServo()将 PWM 值写入指定的伺服索引
与定时器系统的集成
电机输出系统高度依赖硬件定时器抽象层来生成精确的PWM信号:

系统依赖关系
电机输出系统与 Betaflight 的多个其他子系统连接:
- PID控制器:接收电机混合的控制输出
- 遥控控制:
flight3DConfig_t3D模式配置入口 - 功能系统:检查
FEATURE_3D启用状态 - 电机配置:
motorConfig_t用于定时参数 - 定时器系统:依赖于硬件定时器抽象层生成 PWM 信号。

被折叠的 条评论
为什么被折叠?



