Перейти к содержанию

Как расшифровать UART на осциллографе?

Обновлено Редакция GAW

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

Что задать в декодере (Rigol DS1000Z, гл. 8)

ПараметрЧто выбратьПо умолчанию
Канал Tx (и Rx)канал с линией TX микроконтроллера—
Скоростьскорость передатчика, например 1152009600
Полярностьположительная — UART на уровнях микросхемы; отрицательная — после преобразователя RS-232—
Порядок битLSB (как в UART)LSB
Данные / стоп / чётностькак у передатчика, чаще 8 / 1 / нет8 бит
Порогсередина между уровнями; есть автопорог—

Опции RS232, I2C и SPI у DS1000Z платные — в руководстве они помечены как необязательные; стандартно доступен только параллельный декодер.

Порядок работы

  1. Запуск по спаду на линии TX, режим однократной записи.
  2. Развёртку и память выберите так, чтобы в запись вошла вся посылка, но на один бит пришлось несколько точек; расчёт — в ответе «Какая частота выборки нужна для UART».
  3. Включите декодер, задайте параметры из таблицы и откройте таблицу событий в формате ASCII или HEX.

Наш расчёт длительности бита для проверки скорости курсорами:

tбит=1115 200≈8,68 мксt_\text{бит} = \frac{1}{115\,200} \approx 8{,}68\ \text{мкс}

Формат кадра подробно описан в статье «UART», собрать кадр по битам поможет калькулятор кадра UART, а декодеры логических анализаторов — в словаре на странице «Декодер протоколов».

Похожие вопросы

Почему декодер показывает знаки вопроса и мусор?

Не совпала скорость или формат кадра, либо полярность: у Rigol ошибка конечного кадра отмечается знаком «?». Сначала проверьте скорость по длительности одного бита курсорами, затем число бит и чётность. Сигнал после преобразователя уровней RS-232 инвертирован относительно UART на выводах микроконтроллера — переключите полярность.

Можно ли декодировать сразу TX и RX?

Да: у Rigol DS1000Z в настройках RS232 есть отдельные каналы Tx и Rx, а в таблице событий можно выбрать, данные какой линии показывать.

Хватит ли памяти, чтобы записать длинную посылку?

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

Источники

  1. RIGOL. MSO1000Z/DS1000Z Series Digital Oscilloscope User's Guide, UGA19111-1110 (Aug. 2016) — гл. 8: два модуля декодирования; параллельный — стандартно, RS232, I2C и SPI — опции; RS232: MATH → Decode1 → Decoder → RS232; каналы Tx и Rx (CH1–CH4 или D0–D15); скорость 110 бит/с — 20 Мбит/с, заготовки от 2400 до 20M, по умолчанию 9600; копирование настроек из запуска по RS232; полярность положительная или отрицательная; порядок LSB или MSB, по умолчанию LSB; данные 5–8 бит, стоп-бит 1, 1,5 или 2, чётность нет/нечёт/чёт; порог — автоматический (середина сигнала) или вручную; таблица событий в HEX, DEC или ASCII, экспорт в CSV; ошибка конечного кадра отмечается «?»; память до 12 млн точек, на четырёх каналах 3 млн
  2. Texas Instruments. TL16C550C Asynchronous Communications Element with Autoflow Control, SLLS177I — асинхронный обмен: символы из 5, 6, 7 или 8 бит, чётность чётная, нечётная или без неё, 1, 1½ или 2 стоп-бита; бит FE — у принятого символа нет действительного стоп-бита

Нашли ошибку?