Урок 2 из 18 · Модуль 1. Азбука передачи данных: биты, уровни, дуплекс, инверсия
Протоколы в БАС: полный курс · Урок 2 из 18 · Модуль 1. Карта дрона и основы передачи данных
Семь понятий, без которых дальнейшее изложение будет непонятным: уровни логики, дуплексность, шины, мастер и слейв, синхронность, дифференциальный сигнал и инверсия.
Общий GND обязателен всегда: без общего провода сигнал не имеет точки отсчёта. И всегда проверяй уровни логики — 5-вольтовый передатчик может вывести из строя 3,3-вольтовый вход контроллера.
Содержание
1. Цели урока
После этого урока вы будете понимать:
- различать 3,3-вольтовую и 5-вольтовую логику и понимать, когда их нельзя соединять напрямую
- объяснять разницу между симплексом, полудуплексом и полным дуплексом
- понимать, чем синхронный протокол отличается от асинхронного и что такое инверсия
2. Азбука передачи данных
Бит — это просто напряжение
Цифровая электроника различает только два состояния, и кодирует их уровнем напряжения на проводе. В дронах доминирует логика 3,3 В: логическая «1» — это ~3,3 В, логический «0» — ~0 В. Старые платы и Arduino работают с логикой 5 В. Внутри контроллера есть пороги: например, вход считает сигнал «единицей», если на нём больше ~2 В.
Симплекс, полудуплекс, полный дуплекс
| Режим | Суть | Житейская аналогия | В дронах |
|---|---|---|---|
| Симплекс | данные идут только в одну сторону, всегда | телевизор: он только вещает | SBUS (приёмник → FC), сигнал DShot (FC → ESC), видео с VTX |
| Полудуплекс | линия одна, говорят по очереди | рация: «приём» | SmartAudio/Tramp (VTX), SmartPort, шина I²C |
| Полный дуплекс | две линии, обе стороны говорят одновременно | телефонный разговор | UART (TX и RX), SPI (MOSI и MISO), CAN |
Точка-точка против шины
Точка-точка — соединение ровно двух устройств: UART и SPI такие. Один передатчик, один приёмник, никто лишний. Шина — общий «провод-дорога», к которому подключаются сразу несколько устройств: I²C и CAN. У шины всегда есть правила доступа к линии: адресация у I²C, арбитраж у CAN.
Мастер и слейв — кто главный
В большинстве протоколов есть ведущий (master) и ведомые (slave). Ведущий задаёт темп: в I²C и SPI слейв молчит, пока его не спросят. Полётный контроллер почти всегда — мастер. Исключение — CAN: там все узлы равноправны, каждый может начать передачу, а конфликт решается автоматически (раздел 5).
Синхронные и асинхронные протоколы
Чтобы приёмник понял, где заканчивается один бит и начинается другой, нужны «часы». Есть два подхода:
- Синхронные — тактовый сигнал идёт по отдельному проводу (SCK/SCL). Обе стороны работают по общему тактовому сигналу, поэтому скорость может быть очень высокой. Так работают I²C и SPI.
- Асинхронные — отдельного такта нет, стороны договариваются о скорости заранее (бодрейт), а начало байта отмечается стартовым битом. Так работает UART. Отсюда главная особенность UART: если стороны настроены на разную скорость, приёмник получает искажённые данные.
Обычный сигнал и дифференциальный
Обычные протоколы меряют напряжение относительно общего провода (GND) — это так называемые single-ended сигналы. Они просты и недороги, но плохо подходят для длинных линий и чувствительны к помехам: наводка складывается с сигналом, и приёмник может прочитать искажённые данные. CAN использует другой трюк — дифференциальную пару: данные передаются разностью напряжений между двумя скрученными проводами CAN_H и CAN_L. Помеха наводится на оба провода одинаково, а разность между ними не меняется — поэтому CAN надёжно работает на дистанциях в десятки метров, тогда как UART на таких линиях уже неустойчив. Подробности — в разделе 5.
Инверсия — особенность сигнала, из-за которой «не работает» SBUS
У каждого цифрового протокола есть «состояние покоя» — уровень на линии, когда никто ничего не передаёт. UART в покое держит высокий уровень. А SBUS — тот же UART с инвертированными уровнями: в покое у него низкий уровень, все биты перевёрнуты. Поэтому SBUS нельзя подключить напрямую к обычному UART-входу на некоторых контроллерах — об этом целый раздел 7. Технику достаточно запомнить: инвертированный сигнал имеет перевёрнутые уровни, поэтому нужен либо специальный вход, либо неинвертированная точка на плате приёмника.
- Общий GND обязателен всегда. Без общего провода сигнал не имеет «точки отсчёта» — данные превращаются в шум.
- Проверяй уровни: 3,3 В или 5 В — прежде чем соединять, особенно старые GPS и новые FC.
- Скорость должна совпадать у обеих сторон — это источник половины проблем с UART.
- Длина проводов: UART, I²C и SPI рассчитаны на короткие линии (сантиметры, максимум десятки сантиметров), CAN — метры.
3. Чек-лист самопроверки
Урок освоен, если каждый пункт выполнен на практике:
- Могу измерить мультиметром уровень на линии и определить её состояние покоя
- Объясняю, почему CAN тянет десятки метров, а UART — нет
- Знаю, что такое инверсия, и умею быстро определить её мультиметром
4. Что дальше
- Предыдущий урок: Урок 1. Карта дрона: кто с кем и как разговаривает
- Следующий урок: Урок 3. UART: соединение, кадр и скорость
- Полный перечень тем — в статье «Содержание курса».

