Логический анализатор: какие данные идут по проводу
Осциллограф показывает, какой формы сигнал: уровни, фронты, помехи. Логический анализатор видит только 0 и 1, зато сам читает по ним данные: буквы по UART, адреса и байты по I2C. Ученик сначала расшифровывает посылку по битам на xSTEM Scope, потом сверяет с анализатором — и видит, что декодер делает то же, что он, только быстрее.
| Осциллограф (датчик НАУРА) | Логический анализатор | |
|---|---|---|
| Что видно | форма: 0…3,3 В, фронты, звон, просадки | только 0 и 1 на 8 проводах сразу |
| Самая частая точка | 10 мкс (100 кГц) | до 24 МГц |
| Кто читает байты | ученик, по битам и курсорами | декодер — если правильно настроен |
| Настоящий I2C 100 кГц | нет, только замедленный до 1 кГц | да |
| Для чего | «почему сигнал плохой» | «что в нём передаётся» |
Что нужно
- Анализатор — дешёвый клон на 8 каналов, 24 МГц (на плате микросхема Cypress CY7C68013A, «FX2»). На Linux своя программа ему не нужна.
- PulseView — бесплатная программа проекта sigrok:Пакет
sudo apt install pulseview sigrok-cli sigrok-firmware-fx2lafwsigrok-firmware-fx2lafwзагружает в анализатор прошивку при подключении; после этого он виден как sigrok FX2 LA (8ch) (USB1d50:608c). - Плата ESP32 со скетчем урока 9
(
examples/lesson9): она шлёт слово по UART на GPIO17 и опрашивает I2C на GPIO21/22.
Подавать на входы — только логику плат: 3,3 и 5 В. Батареи, моторы и трансформатор — на осциллограф, не сюда.
Подключение
| Анализатор | ESP32 | Что |
|---|---|---|
| GND | GND | общий провод — первым |
| D0 (CH0) | GPIO17 | UART, 9600 бод |
| D1 (CH1) | GPIO21 | I2C SDA |
| D2 (CH2) | GPIO22 | I2C SCL |
Первая запись
PulseView → вверху устройство sigrok FX2 LA (8ch).
В том же списке может оказаться ftdi-la — это датчик НАУРА, в нём тоже стоит FTDI. Его не выбирать: PulseView заберёт порт у xSTEM Scope.
Частота 1 MHz, длина 500 k отсчётов — это 0,5 с. Run.
Уже без расшифровки видно ритм: пачки UART каждые 100 мс, пачка I2C раз в 300 мс — так написан скетч.
Частоту выбирают по тому же правилу, что у осциллографа: на самый короткий бит — хотя бы 5–10 отсчётов. Бит UART 9600 длится 104 мкс — нужно от 100 кГц. На 20 кГц (так PulseView может предложить сам) на бит приходится два отсчёта, и декодер собьётся. Для I2C на 100 кГц нужно уже 1–4 МГц.
Декодеры
Жёлтая кнопка на панели → список декодеров.
UART. Щёлкнуть по зелёной метке декодера слева и назначить:
- RX → D0, Baud rate → 9600;
- Bit order → lsb-first — UART передаёт младшим битом вперёд;
- Data format → ascii — над сигналом будут буквы, а не коды.

Строка RX bits — это те же биты, что ученик читал на осциллографе: под
«G» (0x47) стоит 1 1 1 0 0 0 1 0.
I2C. Добавить декодер I2C: SCL → D2, SDA → D1. Над шиной:
Start, Address read: 38, R, NACK, Stop. NACK означает, что по
адресу 0x38 никто не ответил — датчика AHT20 на шине нет. С датчиком будет ACK
и байт состояния.

Ловушка: уверенный неверный ответ
С порядком бит msb-first вместо lsb-first декодер прочитал слово «MGPU» как B2 E2 0A AA. Биты он снял верно — собрал каждый байт задом наперёд: M = 0100 1101 → 1011 0010 = B2.

Это хороший вопрос группе: «почему анализатор прочитал B2, а не M?» Прибор не ошибся — ошибся человек, который его настроил. Тот же урок, что с частотой оцифровки у осциллографа: прибор показывает результат измерения, а не правду.
Опыты
Все — на скетче урока 9, без перепрошивки; слово меняется командой text
в мониторе порта или полем «Слово по UART» на странице
xSTEM Scope.
| Опыт | Что сделать | Что увидеть |
|---|---|---|
| Буква | char A, потом char B, char C | 41, 42, 43: меняются младшие биты |
| Своё имя | латиницей, до 24 символов | имя над D0; сверить с кодами, которые печатает ? |
| Сначала глазами | прочитать слово на xSTEM Scope по битам, потом включить декодер | совпало ли |
| Порядок бит | переключить lsb-first ↔ msb-first | одно и то же слово — две разные «расшифровки» |
| Мало отсчётов | 20 кГц вместо 1 МГц | декодер сбивается; почему |
| I2C | приблизить пачку раз в 300 мс | адрес 0x38 старшим битом вперёд — наоборот к UART; NACK |
Проверено 2026-11-04: анализатор FX2 8ch, PulseView 0.4.2, sigrok-cli 0.7.2,
ESP32 DevKit v1 со скетчем урока 9. Записью из командной строки
(sigrok-cli -d fx2lafw --config samplerate=1m --time 400 -C D0,D1,D2 -P uart:rx=D0:baudrate=9600) слово «MGPU» расшифровано четыре раза за 0,4 с.