cart_firmware_added
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# Протокол старого пульта тележки (реверс-инжиниринг)
|
||||
|
||||
Снято 2026-08-20 осциллографом Hantek DPO7204C с сигнального провода пульта
|
||||
(канал CH3). Инструменты: `tools/capture.py` (захват), `tools/decode.py`
|
||||
(декодер), сырые данные и картинки — в `captures/`.
|
||||
|
||||
## Физический уровень
|
||||
|
||||
- Один сигнальный провод, логика **3.3 В**.
|
||||
- **Инвертированный UART** (стандартная полярность SBUS): в покое линия
|
||||
**низкая** (~0 В), импульсы вверх до ~3.3 В.
|
||||
- Скорость **100 000 бод**, формат **8E2** (8 бит данных, чётность even,
|
||||
2 стоп-бита), биты LSB-first. Длительность бита 10 мкс.
|
||||
|
||||
## Кадровый уровень — SBUS
|
||||
|
||||
Стандартный кадр Futaba SBUS, 25 байт (3 мс на линии):
|
||||
|
||||
| Смещение | Размер | Содержимое |
|
||||
|---|---|---|
|
||||
| 0 | 1 | Заголовок `0x0F` |
|
||||
| 1 | 22 | 16 каналов × 11 бит, упакованы подряд LSB-first |
|
||||
| 23 | 1 | Флаги: bit0=CH17, bit1=CH18, bit2=frame_lost, bit3=failsafe |
|
||||
| 24 | 1 | Футер `0x00` |
|
||||
|
||||
Распаковка каналов: 22 байта складываются в 176-битное число LSB-first,
|
||||
канал N (N=0..15) = биты [11·N .. 11·N+10], диапазон значений 0–2047.
|
||||
|
||||
- Кадры отправляются каждые **50 мс** (20 Гц). Это медленнее стандартного
|
||||
SBUS (7/14 мс) — ответная часть с этим темпом работает.
|
||||
- Флаги во всех наблюдениях = `0x00`.
|
||||
|
||||
## Карта каналов (нумерация с 1)
|
||||
|
||||
| Управление | Канал | Мин | Нейтраль | Макс |
|
||||
|---|---|---|---|---|
|
||||
| Стик вперёд/назад | **2** | 433 (назад) | 1024 | 1643 (вперёд) |
|
||||
| Стик влево/вправо | **4** | 446 (влево) | 1024 | 1654 (вправо) |
|
||||
| Остальные 14 | — | всегда 1024 | | |
|
||||
|
||||
Диапазон осей ~±600 от нейтрали (не полная шкала SBUS). Других органов
|
||||
управления на пульте нет.
|
||||
|
||||
Эталонный кадр нейтрали (hex):
|
||||
|
||||
```
|
||||
0F 00 04 20 00 01 08 40 00 02 10 80 00 04 20 00 01 08 40 00 02 10 80 00 00
|
||||
```
|
||||
|
||||
## Воспроизведение на STM32G431
|
||||
|
||||
- USART: 100000 бод, 8 бит + чётность even (в терминах STM32: M=1, 9-bit
|
||||
с PCE=1), 2 стоп-бита, **TXINV=1** (аппаратная инверсия TX) — бит-бэнг
|
||||
не нужен.
|
||||
- Отправлять 25-байтовый кадр по таймеру каждые 50 мс.
|
||||
- Нейтраль: все каналы 1024; управление — каналы 2 и 4 в измеренных
|
||||
диапазонах.
|
||||
Reference in New Issue
Block a user