4. 通信协议概览

ESC(Electronic Speed Controller,电子调速器)与飞控之间的通信协议,决定了油门指令从飞控传到电调的速度、精度和可靠性。从最早的模拟PWM到今天的全数字DShot、ProShot,协议演进的核心驱动力始终是三个指标:延迟更低、分辨率更高、抗干扰更强。理解这条发展脉络,是后续开发DShot协议栈、调试时序问题的前提。

一、核心原理:从模拟脉宽到数字帧

所有ESC协议本质上都在解决同一个问题:如何把"油门大小"这个数值从飞控传给电调。早期方案用脉宽表示油门——这就是PWM。飞控输出一个周期固定、高电平宽度可变的方波,电调测量高电平持续时间,映射为0%~100%油门。

标准PWM周期为20ms(50Hz),脉宽1000μs对应最低油门,2000μs对应最高油门。这意味着飞控每20ms才能更新一次油门,理论刷新率仅50Hz,延迟高达20ms量级。对于需要快速姿态修正的多旋翼来说,这个延迟会直接表现为"手感迟钝、响应发飘"。

OneShot、MultiShot的思路是缩短周期:OneShot125把周期压到250μs(刷新率约4kHz),OneShot42进一步压到约167μs;MultiShot则把周期降到几十微秒,刷新率可达8kHz以上。但它们仍然是模拟脉宽协议,分辨率受限于定时器精度,且长脉宽在强电磁干扰下容易被误判。

DShot是质变:它不再用脉宽表示油门,而是发送一个16位数字帧,包含11位油门值(0~2047)、1位请求遥测标志、4位CRC校验。数字帧自带校验,抗干扰能力大幅提升;分辨率从PWM的约1000级提升到2048级;并且支持双向DShot(Bidirectional DShot),电调可以回传转速(RPM)用于滤波和转速闭环。ProShot则是在DShot基础上进一步压缩帧间隔、优化时序,追求更低延迟,常见于竞速场景。

ESC通信协议发展脉络与关键特征 PWM 周期 20ms 刷新率 50Hz 模拟脉宽 OneShot 周期 250μs 刷新率 ~4kHz 模拟脉宽 MultiShot 周期 数十μs 刷新率 8kHz+ 模拟脉宽 DShot 16位数字帧 11位油门+CRC 支持双向遥测 ProShot 数字帧 帧间隔更短 竞速低延迟 提速 再提速 数字化 极致低延迟 演进主线:模拟脉宽 → 缩短周期 → 数字帧校验 → 双向遥测 → 帧间隔压缩

二、方法流程:协议选型的判断路径

选型不是"越新越好",而是要与飞控、电调、机架用途匹配。建议按以下顺序判断:

  1. 确认硬件支持:飞控固件(Betaflight/INAV/PX4)和电调固件(BLHeli_S/BLHeli_32/AM32)是否支持目标协议。BLHeli_S通常只支持到DShot600,BLHeli_32和AM32可支持DShot1200及双向DShot。
  2. 确认用途:航拍/长航时优先稳定与遥测,选DShot300或DShot600;竞速/花飞追求低延迟,可选DShot600/1200或ProShot。
  3. 确认信号完整性:DShot速率越高,对信号线长度、走线、地线回流越敏感。长机臂或线束杂乱时,盲目上DShot1200反而会丢帧。
  4. 确认是否需要RPM遥测:需要转速滤波、动态怠速或转速闭环,必须使用双向DShot,并确认电调固件与飞控串口资源。
选型口诀:先看固件支持,再看飞行用途,最后看信号质量。协议速率是上限,实际稳定速率取决于布线与电调品质。

三、案例/场景:三种典型配置

场景A:5寸航拍机。飞控F7,电调BLHeli_32 4in1,追求画面稳定与转速滤波。配置为双向DShot600,开启RPM遥测,配合动态怠速和RPM滤波,飞行手感平顺,电机温度可控。

场景B:3寸竞速机。飞控H7,电调AM32,追求极限响应。配置为DShot1200或ProShot,关闭不必要的遥测以降低总线负载,PID可设得更激进,但需注意电调散热与信号线长度。

场景C:老款穿越机升级。飞控F4,电调BLHeli_S。受限于电调固件,最高稳定使用DShot300;若强行设DShot600,可能出现解锁失败或空中丢帧。此时应优先升级电调固件或更换电调,而不是硬调协议。

# Betaflight 中查看/设置协议(CLI 示例)
set motor_pwm_protocol = DSHOT600
set dshot_bidir = ON
set motor_poles = 14
save

# 查看当前协议与双向DShot状态
get motor_pwm_protocol
get dshot_bidir

四、误区与复盘

误区一:协议速率越高越好。DShot1200的位时间仅约0.83μs,对信号完整性要求极高。若电调采样窗口、线缆电容或地弹不满足,丢帧率会上升,表现为电机间歇性抖动甚至失控。稳定DShot600往往优于勉强DShot1200。

误区二:把OneShot/MultiShot当成数字协议。它们仍是模拟脉宽,只是周期更短,没有CRC校验,也没有遥测回传。需要RPM数据时必须换DShot双向模式。

误区三:忽略电调固件版本。同一颗电调刷不同固件,支持的协议上限不同。升级前应记录原固件版本与协议配置,升级后逐项验证解锁、怠速、遥测是否正常。

协议 信号类型 典型刷新率 分辨率 校验/遥测 典型适用
PWM 模拟脉宽 50Hz 约1000级 无 老式固定翼、车模
OneShot125/42 模拟脉宽 ~4kHz 约1000级 无 早期穿越机
MultiShot 模拟脉宽 8kHz+ 约1000级 无 过渡期多旋翼
DShot150/300/600/1200 数字帧 取决于速率 2048级 CRC,双向可遥测 主流多旋翼
ProShot 数字帧 帧间隔更短 2048级 CRC 竞速、低延迟
复盘要点:协议切换后必须做地面测试——解锁、怠速、快速推油门、收油门、电机停转,观察是否有丢帧、异响或电调重启。空中首次试飞应留足高度余量,避免在低空验证新协议。

理解这条从PWM到ProShot的演进线,关键不是记住参数表,而是抓住"延迟—分辨率—可靠性"三者的权衡。后续开发DShot协议栈时,你会反复回到这个权衡:帧结构怎么设计、CRC怎么算、双向遥测怎么在有限带宽内回传RPM,都是这条主线的具体展开。