DShot и прошивки ESC
Протоколы в БАС: полный курс · Урок 12 из 18 · Модуль 4. Моторы и сервы: PWM и DShot
Цифровые кадры с контрольной суммой, отсутствие калибровки, телеметрия оборотов — и состояние прошивок регуляторов в 2026 году.
DShot не требует калибровки диапазона и поддерживает bidirectional-телеметрию оборотов — без неё невозможен RPM-фильтр, основной инструмент подавления вибраций квадрокоптера.
Содержание
1. Цели урока
После этого урока вы сможете:
- объяснять структуру 16-битного кадра DShot и роль CRC
- выбирать скорость DShot150/300/600/1200 под свою плату
- включать bidirectional DShot и использовать телеметрию оборотов
- ориентироваться в прошивках ESC: AM32, Bluejay, BLHeli_S, BLHeli_32
2. Кадр DShot
DShot (Digital Shot) — цифровой протокол управления регуляторами: команда передаётся кодом из 16 бит, а не длиной импульса. Кадр устроен так:
Кадр DShot: 11 бит газа (0–2047), 1 бит запроса телеметрии (T), 4 бита контрольной суммы (CRC).

Один бит передаётся парой уровней: короткий импульс — «0», длинный — «1».
Биты DShot600: у логического «0» высокий уровень 625 нс, у «1» — 1250 нс. Период одного бита — 1,67 мкс (1670 нс) — примерно в 600 раз короче импульса серво-PWM.
| Скорость | Бит | Кадр (16 бит) | Применение |
|---|---|---|---|
| DShot150 | 6,67 мкс | 107 мкс | совместимость со старыми ESC |
| DShot300 | 3,33 мкс | 53 мкс | стандарт для большинства сборок |
| DShot600 | 1,67 мкс | 27 мкс | гонки, частые обновления контура |
| DShot1200 | 0,83 мкс | 13 мкс | только F7/H7 с поддержкой |
Значение газа 0–47 зарезервировано под спецкоманды (звуковые сигналы, реверс, настройка). Газ 48–2047 — обычный диапазон 0–100 %. Контрольная сумма позволяет ESC молча отбрасывать повреждённый кадр — команда просто повторится со следующего цикла.
↑ К оглавлению3. Bidirectional DShot и телеметрия оборотов
Обычный DShot — односторонний: контроллер командует, ESC молчит. Bidirectional DShot добавляет ответ: по биту T контроллер запрашивает телеметрию, и ESC возвращает пакет с текущими eRPM — электрическими оборотами (число коммутаций фаз в минуту). Пересчёт в механические обороты:
RPM = eRPM / число пар полюсов
Пример: мотор 2207 на 14 полюсов (7 пар) выдаёт eRPM 210000 — механические обороты 30000 об/мин.
Данные оборотов нужны для RPM-фильтра: частоты вибраций, порождаемых моторами и пропеллерами, точно известны по оборотам, и фильтр вырезает их, не трогая полезный сигнал гироскопа. В Betaflight включается во вкладке Motors: протокол DSHOT300 и переключатель Bidirectional DShot; после этого в телеметрии появляются обороты каждого мотора.
4. Прошивки ESC в 2026
| Прошивка | Статус | Настройка |
|---|---|---|
| AM32 | ✓ актуальная, открытая | стандарт новых регуляторов; настраивается через ESC Configurator (веб-приложение) |
| Bluejay | ✓ актуальная, открытая | для регуляторов BLHeli_S; добавляет bidirectional DShot |
| BLHeli_S | 🕰 старая, но массовая | сток на недорогих ESC; лучше перешить в Bluejay ради телеметрии RPM |
| BLHeli_32 | ✗ закрыта | проект свёрнут, новые версии не выходят; существующие регуляторы работают, новые приобретать нецелесообразно |
Типовой FPV-стек: полётный контроллер и 4-в-1 ESC. Между платами — шлейф или пайка: четыре сигнальных провода моторов (DShot), телеметрия, питание 5 В (BEC от ESC питает контроллер) и общий GND.
Настройка через ESC Configurator: подключи регулятор к компьютеру (обычно по USB через полётный контроллер или напрямую), открой веб-приложение, выбери прошивку — и меняй параметры: тайминги, частоту ШИМ, направление вращения, прошивку целиком. Прошивка 4-в-1 ESC обновляется одним действием для всех четырёх регуляторов сразу.
↑ К оглавлению5. Настройка в Betaflight и ArduPilot
- Betaflight: вкладка Motors → ESC/Motor protocol →
DSHOT300(или DSHOT600). Там же — Bidirectional DShot и громкость маяка (beacon) на случай поиска потерянного аппарата. - ArduPilot: тип сигнала моторов —
MOT_PWM_TYPE:5= DShot300,6= DShot600. Частота обновления —SERVO_DSHOT_RATE(0–3, от DShot150 до DShot1200). Телеметрия оборотов включается при выборе DShot автоматически. - Ограничение DMA: DShot требует пины с прямым доступом к памяти. В Betaflight при выборе DShot конфигуратор сам подскажет, если пин не подходит.
| Что настраиваем | Betaflight | ArduPilot |
|---|---|---|
| Протокол ESC | Motors → DShot300/600 | MOT_PWM_TYPE = 5 (DShot300) |
| Телеметрия оборотов | Bidirectional DShot | включается автоматически |
| Маяк (beacon) | DShot Beacon | не используется (свой механизм) |
6. Для программиста
💻 Для программиста
Кадр DShot передаётся из буфера памяти через DMA: процессор готовит 16 бит заранее, а таймер «передаёт» их на пин без участия ядра — отсюда точность таймингов в сотни наносекунд. Программная генерация DShot на не-DMA пинах не даст стабильного сигнала: микросекундные прерывания размывают фронты.
Если пишешь драйвер: «0» и «1» различаются только шириной первого импульса (625 нс против 1250 нс на DShot600), полная длительность бита — 1,67 мкс. Значения 0–47 — спецкоманды, 48–2047 — газ. CRC считается по всем 12 битам кадра (11 бит газа + бит T).
7. Чек-лист самопроверки
Урок освоен, если каждый пункт выполнен на практике:
- Настроил DShot300 и bidirectional DShot в Betaflight
- Вижу обороты моторов во вкладке Motors (столбец RPM)
- Включил RPM-фильтр и сравнил вибрации до и после
- Перешил BLHeli_S-регулятор в Bluejay через ESC Configurator
- Знаю, почему BLHeli_32 больше не развивается
8. Что дальше
- Предыдущий урок: Урок 11. PWM: сервы и классические ESC
- Следующий урок: Урок 13. SBUS и IBUS: кадры и параметры
- Полный перечень тем — в статье «Содержание курса».


