← Все статьи

Логический анализатор в ремонте: разбираем обмен по UART, I2C и SPI

Логический анализатор наблюдает сигналы между контроллером и периферией относительно общей земли

Питание и тактирование в порядке, но устройство не видит датчик, не читает память или молчит в терминале. Осциллограф показывает импульсы, однако по отдельным фронтам трудно понять, какая команда отправлена и где пропал ответ. Логический анализатор помогает записать несколько цифровых линий одновременно и представить обмен в виде последовательности событий и байтов.

Его сильная сторона — длительная запись, связь между каналами и декодирование протокола. Но цифровая дорожка не показывает всю форму напряжения. Красивые прямоугольники не доказывают достаточную амплитуду, отсутствие звона или правильное время нарастания. В ремонте анализатор и осциллограф решают связанные, но разные части задачи.

Содержание статьи
  1. Что анализатор действительно измеряет
  2. Подключение, которое не создаёт новую неисправность
  3. UART: сначала время бита, потом текст
  4. I²C: адрес, направление и подтверждение
  5. SPI: без CS и правильного фронта байты ненадёжны
  6. Учебный разбор: датчик не отвечает
  7. Как получить запись, пригодную для вывода
  8. Документация для проверки
  9. Читайте также

Что анализатор действительно измеряет

В обычном режиме временного захвата прибор периодически сравнивает напряжение входа с логическим порогом и сохраняет ноль или единицу. Затем программа восстанавливает последовательность уровней и пытается разобрать её по заданным правилам. Ошибка настройки порога или декодера способна превратить исправный обмен в набор неверных байтов.

Важны два независимых ограничения: какое напряжение допустимо подавать и какой уровень прибор уверенно распознаёт. Совместимость с логикой 3,3 В не доказывает переносимость 5 В, а наличие защиты от перенапряжения не означает правильного распознавания 1,2 В. Различие порогов и допустимых воздействий хорошо видно в документации Saleae; для своего прибора используют его спецификацию.

Частота дискретизации определяет временное разрешение, но не равна максимальной частоте любого измеряемого сигнала. При 20 млн отсчётов в секунду шаг составляет 50 нс. Учебный тактовый сигнал 1 МГц с равными полупериодами получит около десяти отсчётов на каждый полупериод. Для значительно более узкого импульса такого запаса уже может не хватить.

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

Подключение, которое не создаёт новую неисправность

Сначала определяют землю исследуемой схемы, уровни напряжения и связь прибора с компьютером. У USB-анализатора земля может быть связана с землёй компьютера и другим подключённым оборудованием. Нельзя считать произвольную точку платы безопасной землёй по её внешнему виду. Работа с сетевой частью и другими опасными потенциалами требует соответствующей измерительной схемы и изоляции.

Обычный вход для логики нельзя автоматически подключать к RS-232, дифференциальной линии или высоковольтному сигналу. Там могут требоваться согласованный приёмник, преобразование уровней или специальный пробник. Название UART описывает формат передачи внутри контроллера, а не универсальный электрический стандарт на любом разъёме.

Провода делают короткими, землю подключают рядом с исследуемым узлом. Избыточная длина добавляет паразитные связи и способна изменить работу чувствительной линии. Перед декодированием полезно проверить исходные дорожки: действительно ли есть устойчивые ноль и единица, нет ли постоянного уровня и соответствует ли порядок каналов схеме.

UART: сначала время бита, потом текст

Для обычного неинвертированного UART линия в покое имеет высокий уровень. Кадр начинается стартовым битом, затем идут биты данных, при необходимости чётность и стоповые биты. Общего тактового провода нет, поэтому передатчик и приёмник должны согласовать скорость и формат. Основы кадра изложены в материале Analog Devices об UART.

Если скорость неизвестна, измеряют характерные длительности и ищут базовый интервал. При 115200 бит/с время бита примерно 8,68 мкс. Длинный уровень может занимать несколько бит, поэтому нельзя брать любую найденную паузу за один бит. Автоматическое определение скорости полезно проверять вручную на нескольких кадрах.

Далее задают количество бит, чётность, стоповые биты, полярность и направление канала. Для распространённого 8N1 это восемь бит данных, отсутствие чётности и один стоповый бит. Нечитаемые символы в текстовом представлении не всегда означают ошибку: устройство может передавать двоичные данные, другую кодировку или собственный пакетный формат.

В ремонте записывают TX и RX одновременно. Если команда ушла, но ответа нет, проверяют, дошла ли она до входа получателя, включён ли он и соответствует ли команда его состоянию. Один канал у передатчика не показывает обрыв на другом конце проводника. Повторяемая ошибка кадрирования может указывать на неправильную скорость, инверсию или нестабильное тактирование, но требует проверки формы сигнала.

I²C: адрес, направление и подтверждение

Шина использует SDA для данных и SCL для тактирования. В типичном варианте с открытым стоком высокий уровень формируется подтягивающими резисторами. Поэтому фронт нарастания зависит от сопротивления и ёмкости линии. Анализатор может показать логически правильный байт, хотя электрическое время нарастания уже не соответствует выбранному режиму.

Условие START возникает при переходе SDA из высокого уровня в низкий, пока SCL остаётся высоким. STOP — обратный переход SDA при высоком SCL. В обычной передаче данные должны быть стабильны на высоком участке такта. После восьми бит следует девятый такт подтверждения ACK или отсутствия подтверждения NACK. Подробные правила заданы в спецификации NXP UM10204.

Учебная адресная посылка I2C: семибитный адрес 0x48, запись и подтверждение ACK
Адрес 0x48 и бит записи дают передаваемый байт 0x90. Девятый такт предназначен для ACK; временной масштаб условный. Открыть схему в полном размере.

Типичная путаница связана с адресом. Учебный семибитный адрес 0x48 при добавлении бита записи образует первый передаваемый байт 0x90, а при чтении — 0x91. Один декодер покажет 0x48 и направление, другой — полный адресный байт. Прежде чем менять прошивку, выясняют, какая форма адреса приведена в даташите и используется инструментом.

Если после адреса приходит NACK, возможны неверный адрес, отсутствие питания, неподходящий режим или недошедший сигнал. Если NACK выдаёт контроллер после последнего прочитанного байта, это может быть штатным завершением чтения. Удержание SCL внизу также не всегда авария: устройство может применять clock stretching. Смысл события определяют по месту в транзакции и документации участников.

SPI: без CS и правильного фронта байты ненадёжны

Для обычного SPI полезно записать SCLK, выбор устройства CS, MOSI и MISO. Направления MOSI и MISO задаются относительно ведущего устройства. У конкретных микросхем названия отличаются, а некоторые используют однонаправленный или совмещённый вариант данных. Подключение уточняют по функциям выводов, а не по похожим буквам.

CPOL задаёт уровень тактовой линии в покое, CPHA — выбор первого или второго активного фронта для выборки. Вместе они образуют четыре распространённых режима. Правильный режим определяют по временной диаграмме компонента; порядок бит и длина слова тоже требуют настройки. Эти отношения разбирает введение Analog Devices в SPI.

Декодирование с неправильной фазой иногда выдаёт правдоподобные числа, особенно на повторяющемся рисунке. Поэтому оценивают, стабильны ли данные возле фронта выборки. Для проверки коротких запасов setup/hold требуется достаточное временное разрешение; цифровой захват с крупным шагом не докажет выполнение наносекундного требования.

CS задаёт границы команды и может влиять на внутреннее состояние периферии. Одна и та же последовательность байтов с паузой выбора между ними и без неё способна означать разные действия. Постоянные единицы на MISO могут оказаться подтяжкой при невыбранном устройстве, обрывом, неподходящей командой или настоящими данными. Сам рисунок 0xFF не устанавливает причину.

Учебный разбор: датчик не отвечает

Предположим, программа сообщает ошибку чтения I²C-датчика. Запись показывает START, адрес и NACK. Сначала проверяют адресную форму и аппаратные адресные выводы. Затем измеряют питание самого датчика и уровни SDA/SCL у его выводов. Если команда есть возле контроллера, но отсутствует у датчика, направление поиска — соединение между ними.

Если адрес подтверждён, а ошибка появляется после команды регистра, поиск уже другой: формат транзакции, допустимость регистра, repeated START, задержка готовности. Успешный ACK означает подтверждение конкретного байта участником шины, но не гарантирует правильность всей прикладной операции. Нужна интерпретация последовательности относительно документации датчика.

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

Что остаётся за пределами декодера

Протокольный декодер распознаёт формат, но обычно не знает смысл прикладных регистров, состояние устройства и правила его команды. Корректный UART-кадр может содержать неверную контрольную сумму пакета. Правильно переданный адрес регистра может быть недопустим в текущем режиме датчика. Эти проверки выполняют следующим уровнем анализа.

Для редкого сбоя полезен захват с предысторией, если прибор поддерживает такой режим. Тогда запись показывает не только момент ошибки, но и подготовившие её действия. Условием срабатывания может стать отдельный диагностический вывод или характерный участок обмена. Слишком узкое условие способно пропустить событие, поэтому сначала полезно проверить его на заведомо наблюдаемом сценарии.

Сравнение исправной и неисправной платы делают при одинаковых действиях и конфигурации. Разное содержимое памяти или состояние датчика может законно изменить ответы. Совпадение первых нескольких байтов также не доказывает совпадение всей операции: иногда решающим оказывается пропущенный фронт CS, длительная пауза или команда, переданная значительно раньше видимого отказа.

Как получить запись, пригодную для вывода

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

Фильтр коротких импульсов применяют осознанно: он может убрать помеху отображения, но способен скрыть реальное событие. После изменения фильтра проверяют исходную дорожку. Если подключение прибора меняет симптом, это отдельный факт для исследования: входная ёмкость, земля и расположение проводов могли повлиять на цепь.

Хороший результат работы с анализатором — не длинная таблица байтов, а установленная граница: команда не сформирована, не дошла, не подтверждена либо подтверждена, но неправильно истолкована программой. Когда видна эта граница, дальнейший ремонт становится точнее и требует меньше случайных замен.

Документация для проверки

Читайте также

Комментарии