Перейти к основному содержимому

Отладка обмена

Робот и логический анализатор для отладки цифрового обмена

Когда модуль не отвечает, причина не всегда в программе. Может быть перепутан провод, отсутствовать общий GND, не хватать подтяжки, быть неверным режим SPI или неподходящим уровень 5 В/3,3 В.

Коротко

Отладку начинают с простых электрических проверок: распиновка, питание, общий GND, отсутствие короткого замыкания. Только после этого смотрят сигналы анализатором и настраивают декодер протокола.

Порядок отладки обмена: от проводки к команде

Главная идея

Идём снизу вверх:

провода -> питание -> уровни -> сырые сигналы -> декодер -> команда устройства

Если поменять сразу адрес, скорость, библиотеку и провода, станет невозможно понять, что именно помогло. Лучше сделать одно изменение и повторить один короткий тест.

Подключение анализатора

Логический анализатор подключён к Arduino и модулю

Логический анализатор подключают к тем же сигналам, которые участвуют в обмене. Его GND обязательно соединяют с общим GND схемы.

ПротоколЧто подключить к анализатору
UARTTX, RX, GND
I2CSDA, SCL, GND
1-WireDQ, GND
SPISCK, MOSI, MISO, CS, GND

Декодер протокола показывает байты только при правильной настройке. Для UART нужна скорость, для SPI — режим CPOL/CPHA, для I2C — правильные каналы SDA/SCL.

Типовые ошибки

Типовые ошибки на осциллограмме для разных протоколов

СимптомСначала проверитьПотом проверить
модуль молчитпитание на контактах, GND, распиновкуесть ли переходы на сигнальных линиях
UART показывает мусорTX/RX, общий GND, скоростьформат кадра и переполнение буфера
I2C-сканер ничего не находитуровни покоя SDA/SCL, подтяжкиадрес, питание, перепутанные линии
SPI возвращает одинаковое значениеCS, MISO, режим SPIкоманду устройства и фиктивные байты
1-Wire не даёт presenceDQ, подтяжку, GNDдлительность reset и питание датчика

Проверка по шагам

  1. Отключите питание и прозвоните провода по pinout.
  2. Проверьте, нет ли короткого замыкания между питанием и GND.
  3. Включите питание с разумным ограничением тока.
  4. Измерьте напряжение у модуля, а не только на источнике.
  5. Снимите сырые сигналы анализатором.
  6. Настройте декодер и сравните результат с документацией устройства.

Что записывать в журнал

ПолеПример
схемаArduino Uno + BME280, A4/A5, питание 3.3 В
ожиданиеадрес I2C должен быть 0x76
измерениеSDA и SCL в покое высокие
изменениезаменил провод SCL
результатсканер увидел 0x76

Запись нужна не для бюрократии. Она помогает не ходить по кругу, когда проблема исчезает на минуту и возвращается после сборки робота.

Что запомнить

  • Сначала проверяют питание, GND и провода.
  • Логический анализатор должен иметь общий GND со схемой.
  • Декодированный байт не является истиной, если декодер настроен неверно.
  • Для каждого протокола есть свои частые ошибки: TX/RX, подтяжки, CS, режим SPI, presence.
  • Без короткого повторяемого теста отладка быстро превращается в угадывание.

Практика

  1. Подключите анализатор к UART-линии и подпишите TX, RX, GND.
  2. Снимите I2C-сканирование и найдите START, адрес и ACK.
  3. Для SPI запишите, какой канал анализатора соответствует CS.
  4. Для 1-Wire отметьте на захвате reset и presence.

Проверьте себя

  1. Почему прозвонку делают без питания?
  2. Зачем анализатору общий GND?
  3. Почему I2C-сканер не доказывает, что датчик измеряет правильно?
  4. Какие параметры нужно задать декодеру SPI?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

  • Логический анализатор — прибор для записи цифровых уровней во времени.
  • Декодер протокола — программа, которая превращает записанные фронты в биты, байты и события протокола.
  • Прозвонка — проверка электрического соединения при отключённом питании.
  • Осциллограмма — изображение изменения сигнала во времени.
  • Повторяемый тест — короткий опыт с заранее известными условиями и ожидаемым результатом.

Связанные темы

  • UART — проверка TX/RX и скорости.
  • I2C — подтяжки, адреса и ACK.
  • 1-Wirereset, presence и подтяжка DQ.
  • SPICS, режимы и линии данных.
  • Сравнение протоколов — как выбрать интерфейс до отладки.

Источники