4、固件与协议:BLHeli_S / BLHeli_32 固件特性、DShot / Oneshot 协议对比与选择

电调固件和通信协议,说白了就是飞控和电机之间的“翻译官”和“执行者”。选对了,你的飞机指哪打哪;选错了,轻则手感怪异,重则空中断电。这一节,我把这几年在 BLHeli 固件和数字协议上踩过的坑、总结的经验,一次性说清楚。

4.1 BLHeli_S 与 BLHeli_32:两代固件的分水岭

先聊固件。目前市面上主流的就是 BLHeli_S 和 BLHeli_32。很多人觉得“32 比 S 新,肯定更好”,其实不一定。你得看自己的飞控和需求。

4.1.1 BLHeli_S:成熟稳定的性价比之选

BLHeli_S 是基于 8 位 MCU 的固件。它最大的优势就是——稳。我在 2018 年做第一批 5 寸花飞测试机时,用的就是 BLHeli_S 电调。那时候 DShot 协议刚普及,BLHeli_S 对 DShot300/600 的支持已经非常成熟,几乎没有遇到过丢包或失控的情况。

核心特性:
  • 基于 8 位处理器(如 Silabs EFM8BB2)
  • 支持 DShot150/300/600、Oneshot125/42、Multishot
  • 固件升级需通过 C2 接口(需要专用烧录器)
  • PWM 频率最高 48kHz(实际多数电调跑 24kHz)
  • 不支持双向 DShot(RPM 滤波)
注意:BLHeli_S 的固件升级比较麻烦。我曾经在野外飞丢了一台机,回来想给电调刷个新固件,结果发现没带烧录器。嗯,从那以后我包里永远备着一个 C2 烧录器。如果你经常折腾固件,建议直接上 BLHeli_32。

4.1.2 BLHeli_32:性能怪兽,但需要好飞控

BLHeli_32 是 32 位 ARM 架构的固件。它带来的最大提升是——双向 DShot。说白了,就是电调能实时告诉飞控“我现在转得多快”,飞控就能更精准地控制电机。这在做 RPM 滤波时特别有用。

我记得第一次在 7 寸远航机上用 BLHeli_32 电调,配合 Betaflight 4.2 的 RPM 滤波,那手感……怎么说呢,就像从开卡车换成了开跑车。震动直接降了一半,PID 可以拉得更高,飞起来特别跟手。

对比项 BLHeli_S BLHeli_32
处理器架构 8 位 (Silabs EFM8BB2) 32 位 ARM (STM32/AT32)
PWM 频率 最高 48kHz 最高 96kHz
双向 DShot 不支持 支持
固件升级 C2 烧录器 USB/蓝牙直刷
价格 便宜 贵 30%-50%
适用场景 入门、花飞、低成本 竞速、远航、高端装机
我的建议:如果你飞的是 3-5 寸花飞机,预算有限,BLHeli_S 完全够用。但如果你上 6 寸以上,或者追求极致的操控手感,直接上 BLHeli_32。别犹豫,省下的钱不够买一次炸机的教训。

4.2 DShot 与 Oneshot:数字协议的前世今生

协议这块,很多人搞混。我简单梳理一下:Oneshot 是模拟协议,DShot 是数字协议。现在主流是 DShot,但 Oneshot 在某些老飞控上还有用武之地。

4.2.1 Oneshot125/42:模拟时代的遗珠

Oneshot 协议的原理,是通过脉冲宽度来传递油门值。Oneshot125 的脉冲范围是 125-250μs,Oneshot42 更短,只有 42-84μs。脉冲越短,延迟越低。

但有个问题——它容易受干扰。我早期用 Oneshot125 飞穿越机,有一次在高压线塔附近飞,电机突然抽搐了一下。后来查日志发现是信号线上串入了噪声。换成 DShot 后,再也没出现过。

Oneshot 的优缺点:
  • 优点:兼容老飞控(F3、F4 早期版本)
  • 优点:延迟低(Oneshot42 约 42μs)
  • 缺点:无校验,易受干扰
  • 缺点:需要校准油门行程
  • 缺点:不支持双向通信

4.2.2 DShot:数字协议的王者

DShot 是数字协议,油门值通过一串数字脉冲来编码。它最大的好处是——不需要校准油门行程。你想想看,每次换电调都要重新校准,多麻烦。DShot 直接省了这一步。

DShot 有多个速率:150、300、600、1200。数字越大,延迟越低。但要注意,不是所有飞控都能跑 DShot600 以上。我试过在 F411 飞控上跑 DShot1200,结果飞控直接死机。后来查资料才知道,F411 的硬件定时器频率不够。

协议 延迟 校验 校准油门 双向通信
Oneshot125 ~125μs 无 需要 不支持
Oneshot42 ~42μs 无 需要 不支持
DShot150 ~106μs CRC 不需要 支持(32位固件)
DShot300 ~53μs CRC 不需要 支持(32位固件)
DShot600 ~27μs CRC 不需要 支持(32位固件)
DShot1200 ~13μs CRC 不需要 支持(32位固件)
避坑指南:我曾经在 F405 飞控上跑 DShot1200,结果发现电机有轻微的抖动。后来用示波器一看,信号波形已经变形了。DShot1200 对飞控的定时器精度要求很高,不是所有飞控都能跑。建议:F411 用 DShot300,F405 用 DShot600,H7 系列可以上 DShot1200。

4.3 如何选择:一个实用的决策流程

说了这么多,到底怎么选?我画了个流程图,你照着走一遍就行。

固件与协议选择决策流程 开始选择 预算是否充足? 是 飞控是否支持双向DShot? 是 推荐:BLHeli_32 + DShot600 支持RPM滤波,延迟低,手感好 否 推荐:BLHeli_S + DShot300 稳定可靠,性价比高 否 推荐:BLHeli_S + Oneshot42 兼容老飞控,延迟尚可 注意事项 • F411飞控建议DShot300 • F405飞控建议DShot600 • H7飞控可上DShot1200 • 老飞控用Oneshot42

4.4 实战配置:以 Betaflight 为例

最后,给个实际配置的例子。假设你用的是 BLHeli_32 电调 + F405 飞控,想跑 DShot600 并开启双向 DShot。

# 在 Betaflight CLI 中输入:
set dshot_bidir = ON
set motor_pwm_protocol = DSHOT600
save

# 然后在 BLHeliSuite32 中:
# 1. 连接电调
# 2. 确保 "Bidirectional" 选项已勾选
# 3. 设置 PWM Frequency 为 48kHz
# 4. 点击 "Write Setup"
小技巧:配置完成后,在 Betaflight 的 "Motors" 页面里,如果能看到每个电机的 RPM 数值,说明双向 DShot 已经生效了。如果 RPM 显示为 0,检查一下电调固件版本是否支持双向模式。

嗯,这一节的内容就到这里。固件和协议的选择,说白了就是平衡性能、预算和兼容性。记住一个原则:能用 DShot 就别用 Oneshot,能用 BLHeli_32 就别省那几十块钱。但如果你飞的是入门机,BLHeli_S + DShot300 也完全够用,别被参数绑架了。