Embedded HandbookПриложения
Все разделы › V. Отладка и качество
STM32F103 · уровень средний · 26 мин чтения
Открыть в интерактивном справочнике

36д. Осциллограф, часть 2: запуск — все виды синхронизации и когда какой нужен

Цифровой осциллограф пишет вход непрерывно, а показывает только кусок вокруг одного мгновения — момента запуска (trigger). Условие запуска решает, какой кусок вы увидите: обычный период сигнала, редкий сбой или ровно тот байт на шине, после которого всё пошло не так. В 36а.4 разобраны основы: источник, фронт, уровень, режимы auto, normal и single. Здесь — всё остальное: каждый вид запуска и каждая его настройка. Для каждого — что это, зачем, что видно с ним и без него, типичная ошибка и случай из отладки платы.

Главная мысль раздела: сложный запуск заменяет ожидание у экрана. Прибор между записями слеп большую часть времени (36г.17), и редкое событие, пойманное «по фронту», проходит мимо. Условие, которое выполняется только при сбое, срабатывает на каждом сбое — даже если он случается раз в час.

Примеры — на приборе автора, RIGOL DHO900: пункты меню названы по-английски, как на экране, цифры — из его документов. Сами виды запуска есть у большинства цифровых осциллографов; то, что относится только к DHO900, так и помечено.

Опоры: DHO900 User Guide (Books/DHO900_UserGuide_EN.pdf; страницы здесь и дальше — по PDF-файлу): с. 37 — кнопки и ручка запуска, с. 77 — источник, с. 78 — уровень, с. 79–80 — режимы и Force, с. 80 — связь, с. 81 — Holdoff и Noise Reject, с. 82–126 — семнадцать видов запуска, с. 127 — выход AUX OUT, с. 178 — порог цифровых каналов; RIGOL DHO900 Datasheet (Books/dho900-datasheet.pdf): с. 9 — логический щуп, с. 11 — цифровые каналы и запись до запуска, с. 12 — цифровые каналы по времени, с. 13–15 — система запуска, с. 23 — AUX OUT; раздел 17.3 — фронт шины I²C. Все расчётные числа — прогон _verify/trig36d/model36d.py (Python 3.11 и numpy в контейнере stm-lab:1).

Как это называется в документации

Оригинал Перевод
trigger, trigger event; arm запуск, событие запуска; взвод (готовность ловить)
pre-trigger / post-trigger buffer память до запуска / после запуска
sweep: Auto, Normal, Single; Force режим развёртки: автоматический, ждущий, однократный; принудительный запуск
trigger level, threshold; 50% уровень запуска, порог; уровень на середину размаха
trigger sensitivity, hysteresis чувствительность запуска, гистерезис: на сколько сигнал должен вернуться, чтобы запуск взвёлся снова
Noise Reject подавление шума в цепи запуска
trigger coupling: DC, AC, LFR, HFR связь запуска: открытая, закрытая, подавление низких, подавление высоких частот
holdoff задержка повторного запуска
Edge, Pulse, Slope, Video фронт, ширина импульса, время нарастания, видео
Pattern, Duration логический шаблон, длительность шаблона
Timeout, Runt, Window (Over) тайм-аут, недоросший импульс (рант), окно
Delay, Setup/Hold, Nth Edge задержка между фронтами двух сигналов, предустановка и удержание, N-й фронт
RS232, I2C, SPI, CAN, LIN запуск по содержимому шины
AUX OUT, TrigOut выход запуска на задней панели

36д.1 Что делает запуск: память до и после, взвод

Что это. Память прибора на время записи делится на две части: до момента запуска и после. Как это устроено у DHO900 (руководство с. 79): после нажатия RUN или SINGLE прибор сначала заполняет часть до запуска и только потом начинает искать условие. Пока ищет, новые точки вытесняют старые — в памяти всегда последние мгновения перед событием. Нашёл — дописывает часть после и рисует.

Зачем это знать. Часть до запуска задаётся положением момента запуска на экране (36г.10); у DHO900 — до 5 делений. На быстрой развёртке это наносекунды, на медленной — секунды: на 100 мс/дел прибор после SINGLE слеп 0,5 с, на 1 с/дел — 5,0 с.

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

Ошибка. Считать, что прибор «готов» в момент нажатия кнопки. На медленной развёртке подождать, пока заполнится часть до запуска, или сдвинуть момент запуска к левому краю (36г.10).

Управление DHO900 (руководство с. 37). Кнопка меню запуска, кнопка выбора фронта (работает только для вида Edge), кнопка FORCE и ручка LEVEL: вращение двигает уровень, нажатие ставит его на середину размаха. Метка запуска вверху экрана показывает вид, источник, уровень и режим: A, N или S (с. 79).


36д.2 Режимы развёртки: Auto, Normal, Single и Force

Что это. Пункт Sweep (руководство с. 79–80; даташит с. 13):

Зачем Auto. Когда уровень сигнала неизвестен, когда сигнал постоянный (питание, опорное напряжение) и когда нужно хоть что-то увидеть, прежде чем настраивать запуск. В Normal постоянное напряжение не даёт ни одного события — экран пуст, и кажется, что прибор завис.

Зачем Normal. Редкий сигнал. Датчик опрашивается 4 раза в секунду, пакет на шине — раз в 250 мс. Сколько Auto ждёт до самозапуска, в документах DHO900 нет; в модели — условные 40 мс. Тогда на каждую настоящую запись приходится 6 самозапусков: 85,7 % кадров — линия без пакета, картинка мигает. Normal показывает пакет и держит его на экране до следующего.

Force. В Normal и Single кнопка FORCE (или Force в меню) делает один запуск без условия. Зачем: убедиться, что сигнал вообще есть и где он на экране, не меняя настроек.

Ошибка. Нажать FORCE в Single, чтобы «проверить», — прибор запишет случайный кусок и остановится, а событие, которого ждали, пройдёт мимо. И обратная: ловить редкий сбой в Auto — самозапуски заполняют экран пустыми кадрами, и с послесвечением (36г.18) сбой тонет в них.

Случай. Плата перезагружается раз в несколько часов. Канал на вывод сброса NRST, запуск по спаду, Normal, а когда настроено — Single. Утром на экране — провал сброса и, слева, то, что было до него (36д.1).


36д.3 Уровень, чувствительность и Noise Reject

Что это. Уровень (Level) — напряжение, при переходе через которое срабатывает условие. Ручка LEVEL, касание поля Level или кнопка 50% (руководство с. 78). Линия уровня видна, пока его крутят, и гаснет через 2 с. Уровень у DHO900 ставится в пределах ±4,5 деления от центра экрана (даташит с. 13): на 500 мВ/дел — ±2,25 В. Сигнал за краем экрана — это ещё и сигнал, по которому не запуститься.

Гистерезис. Простое сравнение «выше уровня — ниже уровня» на шумном фронте срабатывает много раз: шум перебрасывает сигнал через уровень туда и обратно. Поэтому схема запуска взводится снова, только когда сигнал ушёл от уровня на некоторую величину, — это и есть гистерезис. В даташите DHO900 он не назван, но назван родственный параметр — чувствительность: 0,5 деления (на масштабах от 50 мВ/дел), 0,7 деления с включённым Noise Reject (даташит с. 13). Модель считает гистерезис равным чувствительности — это допущение.

Модель: фронт 0…3,3 В за 10 мкс (крутизна 0,33 В/мкс), шум 60 мВ (размах около 360 мВ), уровень 1,65 В, масштаб 500 мВ/дел; 200 прогонов.

гистерезис запусков вверх на фронт ложных «вниз» на том же фронте
нет 35,9 34,9
0,5 деления — 250 мВ 1,3 0,4
0,7 деления — 350 мВ (Noise Reject) 1,0 0,0

Что видно. Без гистерезиса запуск «по спаду» срабатывает на нарастающем фронте, а запуск по ширине импульса (36д.8) ловит наносекундные иголки шума. При 250 мВ гистерезиса шум в 360 мВ ещё пробивается — изредка двойной запуск; при 350 мВ — один запуск на фронт. Момент запуска при этом всё равно гуляет: разброс 102 нс (одно стандартное отклонение), и тем больше, чем положе фронт.

Noise Reject (переключатель в меню, руководство с. 81) — подавление высокочастотного шума в цепи запуска; даташит добавляет, что он увеличивает задержку схемы запуска. Есть у всех видов запуска DHO900.

Ошибка. Ставить уровень у самой полки сигнала, где звон и шум (36а.4), — или на пологом фронте, где шум сильнее всего сдвигает момент запуска. Уровень — на середину самого крутого участка.


36д.4 Связь запуска: DC, AC, LFR, HFR

Что это. Фильтр между каналом и схемой запуска. Он меняет только то, что видит схема запуска, — картинка на экране остаётся как была; не путать со связью входа канала (36г.5). У DHO900 пункт Coupling есть только у запуска Edge и только для аналогового канала (руководство с. 80), по умолчанию DC:

Срез LFR и HFR у DHO900 — 120 кГц (даташит с. 13). Постоянная времени такого однополюсного фильтра — 1,33 мкс.

HFR: запуск на шумной линии. ШИМ 10 кГц, на нём помеха DC-DC преобразователя 2 МГц. За HFR остаётся 99,7 % ШИМ и 6,0 % помехи: запуск перестаёт срабатывать на иголках. Цена — задержка: фронт за фильтром проходит середину на 0,92 мкс позже (модель ступеньки — тоже 0,92 мкс). На 100 нс/дел это 9,2 деления — настоящий фронт уезжает за левый край экрана. И такт SPI 1 МГц за HFR — 11,9 % амплитуды: запуска может не быть вовсе.

LFR: запуск на сигнале с наводкой. Длинный провод ловит 50 Гц сети, и уровень цифрового сигнала «плавает»: запуск по фронту то есть, то нет. За LFR от наводки 50 Гц остаётся 0,042 %, а такт 1 МГц проходит на 99,3 %. Ошибка: LFR на медленном сигнале — меандр 1 кГц проходит на 0,83 %, и запуска нет.

AC: уровень относительно среднего. Сигнал, у которого плывёт постоянная часть (разряжается батарея, прогревается датчик), — уровень запуска остаётся в середине размаха. Частоты среза AC в документах DHO900 нет. Ошибка: AC на ШИМ с малой скважностью — для схемы запуска ШИМ 10 % лежит между −0,33 и 2,97 В (как связь AC канала в 36г.5), и уровень «1,65 В» оказывается не там, где кажется. У DHO900 при AC и LFR линия уровня на экране не рисуется — виден только номер в метке (руководство с. 80).


36д.5 Задержка повторного запуска (Holdoff)

Что это. После каждого запуска схема запуска не принимает новых событий в течение заданного времени. У DHO900 — от 8 нс (по умолчанию) до 10 с (руководство с. 81; даташит с. 13).

Зачем. Сигнал из пачек: такты SPI, байты UART, импульсы шагового драйвера. Каждый фронт в пачке удовлетворяет условию «фронт вверх», и прибор, взведясь в случайный момент, ловит первый попавшийся. Записи начинаются с разных тактов — и картинка прыгает.

Модель: SPI на 8 МГц, 8 тактов по 125 нс, байт каждые 2 мкс; от первого фронта пачки до последнего t1 = 875 нс, пауза перед следующим байтом — 1125 нс, период пачек t2 = 2 мкс. Взвод — в случайный момент (мёртвое время между записями много длиннее периода, 36г.17); 20 000 записей.

Holdoff разных положений запуска запуск на 1-м такте
8 нс (по умолчанию) 8 56,2 % (расчёт 56,25 %, остальные по 6,25 %)
500 нс — меньше t1 3 71,7 %
1,5 мкс — между t1 и t2 1 100,0 %
2,6 мкс — больше t2 2 56,6 %

Пачки тактов SPI (8 тактов по 125 нс, байт каждые 2 мкс) и принятые запуски при четырёх значениях Holdoff: 8 нс — запуск на любом из 8 тактов, на экране 8 сдвинутых записей; 500 нс — 3 положения; 1,5 мкс — всегда первый такт, картинка стоит; 2,6 мкс — 2 положения, через байт

С задержкой и без. Без неё прибор ловит первый такт лишь в 56,2 % записей — доля паузы перед пачкой в периоде; в остальных — любой из семи следующих, и на экране восемь наложенных сдвинутых копий. Holdoff длиннее пачки, но короче периода, отбрасывает все такты, кроме первого: одно положение, картинка стоит. Ровно это правило даёт руководство: больше t1, меньше t2.

Ошибка — промахнуться в обе стороны. Короче пачки (500 нс): после первого такта задержка кончается посреди пачки, и запуск попадает на 5-й или 6-й такт — три положения. Длиннее периода (2,6 мкс): задержка перешагивает следующий байт и кончается внутри него — запуск через байт, то на 1-м, то на 6-м такте. Подбирать Holdoff, глядя на картинку: увеличивать, пока не встанет.

Важно. В модели счётчик задержки работает непрерывно — так она и стабилизирует пачки, даже когда прибор взводится редко. Как он устроен внутри DHO900, в документах не сказано. Holdoff есть у видов Edge, Pulse, Slope, Pattern, Duration, Runt, Window, Delay и Setup/Hold; у Video, Timeout, Nth Edge и запуска по шинам его нет (руководство, с. 82–126) — им он и не нужен: условие само выбирает одно место.


36д.6 Источник: аналоговые и цифровые каналы, внешнего входа нет

Аналоговые каналы. CH1–CH4 (руководство с. 77). Особенность DHO900: запуск работает по каналу, даже если он выключен — сигнал не показан, но условие проверяется.

Цифровые каналы. D0–D15 — только с подключённым логическим щупом PLA2216 (его покупают отдельно; даташит с. 9). Порог задаётся на группу D0–D7 и отдельно на D8–D15 (руководство с. 178; ручка LEVEL тоже меняет его, с. 78). Готовые пороги: TTL 1,4 В, CMOS5.0 2,5 В, CMOS3.3 1,65 В, CMOS2.5 1,25 В, CMOS1.8 0,9 В и другие; точность порога — ±(100 мВ + 3 % порога), а кратчайший замечаемый импульс — 5 нс (даташит с. 11–12).

Ошибка — порог не под логику. Шина на 1,8 В, а порог оставлен CMOS3.3: 1,65 В ± 149,5 мВ — от 1,500 до 1,799 В. Запас до уровня единицы — 0,5 мВ: часть единиц прибор читает нулями, и запуск пропадает. CMOS1.8 (0,9 В ± 127,0 мВ, от 0,773 до 1,027 В) ставит порог в середину перепада. Для 3,3 В годится и TTL: от 1,258 до 1,542 В.

Внешнего входа запуска у DHO900 нет. Источники — только CH1–CH4 и D0–D15 (руководство с. 77, даташит с. 13); у других приборов бывают EXT (отдельный вход только для запуска) и запуск от сети (AC Line). Если нужен «пятый» сигнал только для запуска — его заводят на цифровой канал.

Выход запуска — есть. Разъём [AUX OUT] на задней панели: в меню Utility, пункт Aux Out — TrigOut (руководство с. 127). На каждый запуск — импульс: высокий уровень не ниже 2,5 В без нагрузки и не ниже 1,0 В на 50 Ом (даташит с. 23). Зачем: запустить второй прибор (логический анализатор, второй осциллограф) от того же события. И измерить частоту этих импульсов частотомером — это ровно скорость обновления прибора на текущих настройках, то есть его мёртвое время (36г.17).


36д.7 Фронт (Edge)

Что это. Самый простой запуск: переход через уровень вверх (Rising), вниз (Falling) или в любую сторону (Either) (руководство с. 82–83). Основы — в 36а.4; здесь — то, чего там нет.

Зачем Either. Видеть оба фронта сигнала на одном экране: например, дрожание и рост, и спада вывода-метки (36а.7), или поймать первый перепад линии, полярность которой заранее неизвестна.

Ошибка. Either на тактовом сигнале: записи начинаются то с подъёма, то со спада — на экране наложены прямой и перевёрнутый меандр. И Edge как средство ловить сбой: ложный запуск по фронту срабатывает на каждом нормальном фронте, а сбой показывается, только если совпадёт с записью. Для сбоев — виды 36д.8–36д.15.


36д.8 Ширина импульса (Pulse)

Что это. Запуск по импульсу заданной длительности: положительному или отрицательному (Polarity), длиннее (>), короче (<) или в пределах (< >) заданного (руководство с. 83–86). Пределы — от 1 нс до 10 с. Ширина считается между двумя переходами через уровень запуска.

Зачем. Ловить импульс, которого быть не должно. UART на 115200 бод: бит длится 8,68 мкс, и короче бита на линии ничего быть не должно. Условие «положительный, < 4,34 мкс» (половина бита) молчит на любых данных и срабатывает на иголке помехи. Обратное «> X» ловит ШИМ, скважность которого вылезла за предел, или «break» — линию в нуле дольше кадра.

Что видно с ним и без него. По фронту запись срабатывает на каждом бите, и иголка 300 нс попадает на экран, только если случилась в записанном окне. По ширине — запись только с иголкой, сколько бы нормальных байтов ни прошло между ними.

Ошибка — ширина зависит от уровня. Импульс 1 мкс на середине размаха с фронтами по 200 нс: на уровне 10 % он длится 1,16 мкс, на 50 % — 1,00 мкс, на 90 % — 0,84 мкс. Условие «> 1,1 мкс» при уровне 10 % срабатывает на каждом нормальном импульсе, при 50 % — ни на одном. Уровень — на 50 %, а предел — с запасом от нормы.

Запуск срабатывает, когда ширина уже известна, — на заднем фронте импульса; сам импульс на экране левее момента запуска. Положение момента запуска (36г.10) сдвигают так, чтобы слева было место.


36д.9 Время нарастания (Slope)

Что это. Запуск по времени, за которое фронт проходит между двумя уровнями: A (верхний) и B (нижний). Фронт Rising или Falling, условие >, < или < >, пределы от 1 нс до 10 с; источник — только CH1–CH4 (руководство с. 86–89). Галочка Linkage двигает оба уровня вместе; нажатие ручки LEVEL переключает, какой уровень она крутит.

Зачем. Медленный фронт — признак слабой подтяжки, перегруженного выхода, большой ёмкости линии. Шина I²C: в 17.3 пределы времени нарастания между 30 и 70 % — 1000 нс в стандартном режиме и 300 нс в быстром. Модель RC-фронта на 3,3 В (уровни A = 2,31 В и B = 0,99 В):

подтяжка ёмкость линии время нарастания
4,7 кОм 100 пФ 398 нс
2,2 кОм 100 пФ 186 нс
4,7 кОм 400 пФ 1593 нс

Условие «Rising, > 300 нс» срабатывает на каждом фронте с подтяжкой 4,7 кОм — шина не годится для 400 кГц, хотя «на глаз» фронты похожи.

Ошибка. Уровни A и B вне размаха сигнала — фронт не проходит оба, запуска нет никогда. Или оставлены 90 % и 10 % (кнопки в меню ставят именно их, руководство с. 78), а предел взят из документа, где время считают между 30 и 70 %, — числа несравнимы.


36д.10 Видео (Video)

Что это. Запуск по синхроимпульсам видеосигнала: стандарты NTSC, PAL/SECAM и форматы от 480p до 1080i (руководство с. 89–91; даташит с. 14). Пункт Sync: All Lines — любая строка, Line — строка с номером (для PAL — от 1 до 625), Odd и Even — нечётный и чётный полукадр (только NTSC и PAL/SECAM); Polarity — полярность синхроимпульса.

Зачем. Микроконтроллер, формирующий композитный видеосигнал, модуль камеры с аналоговым выходом, плата видеозахвата. В PAL строка длится 64 мкс, полукадр — 20 мс.

С ним и без него. По фронту прибор запускается то на строчном, то на кадровом синхроимпульсе, то на ярком месте строки — картинка не стоит. По Line 100 — всегда одна и та же строка, и видно её содержимое.

Ошибка. Не тот стандарт или полярность — запуска нет. И мелкая память: руководство советует для видео увеличить глубину (с. 91) — строка 64 мкс на 10 тыс. точек выйдет грубо (36г.14).


36д.11 Логический шаблон (Pattern)

Что это. Запуск по сочетанию уровней нескольких каналов: каждому задают 1 (выше своего уровня), 0 (ниже) или X (не важно), и одному — фронт (руководство с. 91–94). Источники — CH1–CH4 и D0–D15. Если фронт задан, запуск — на этом фронте при выполненном шаблоне на остальных; если нет — на том фронте, после которого шаблон стал верным. Все X — запуска нет; второй фронт в шаблоне прибор не примет («Invalid input»).

Зачем. Событие, которое определяется несколькими линиями сразу: такт SPI дисплея при CS = 0 и DC = 1 (данные, а не команда); состояние конечного автомата, выведенное на три отладочных вывода (код 101 — нужная ветка).

Ошибка — ложный шаблон на переключении. Две линии меняются «вместе», но приходят с перекосом: у цифровых каналов DHO900 он до ±5 нс (даташит с. 12). Модель: из 10 000 одновременных переключений в 96 % на мгновение (до 5,0 нс) появляется промежуточный шаблон — и если он совпадает с заданным, запуск ложный. Лечится длительностью шаблона (36д.12): условие «> 20 нс» не пропустило ни одного (0 %).


36д.12 Длительность шаблона (Duration)

Что это. Тот же шаблон 1/0/X (без фронтов), но запуск — когда он держится дольше (>), меньше (<), в пределах (< >) или вне пределов (> <) заданного времени (руководство с. 94–97). Пределы — от 1 нс до 10 с.

Зачем. CS держится в нуле дольше обычного обмена — прерывание вклинилось посреди транзакции SPI или DMA застрял. Две кнопки нажаты вместе дольше порога. Шина I²C: обе линии в нуле дольше, чем бывает при работе, — кто-то держит шину.

Отличие от Pulse. Pulse — ширина импульса одного канала. Duration — время, пока держится сочетание нескольких.

Ошибка. Канал, который не важен, оставлен 1 или 0 по умолчанию, а не X, — шаблон не совпадает никогда.


36д.13 Тайм-аут (Timeout)

Что это. Запуск, когда сигнал после перехода через уровень (Rising, Falling или Either) слишком долго не переходит его снова (руководство с. 97–99). Запуск срабатывает в момент, когда время вышло, — не дожидаясь следующего фронта.

Зачем. «Пульс» программы: главный цикл переключает вывод раз в 1 мс. Модель: 3000 переключений с разбросом ±10 %, самый длинный нормальный промежуток — 1,10 мс; один раз цикл завис, и промежуток вышел 41,0 мс. Тайм-аут 1,5 мс сработал 1 раз — ровно на зависании.

Отличие от Pulse «>». Запуск по ширине тоже поймает этот промежуток, но только когда линия переключится снова — через 41,0 мс. На 1 мс/дел слева от запуска видно 5 мс: последний нормальный фронт и всё, что было перед зависанием, уже за краем. Тайм-аут срабатывает через 1,5 мс после последнего фронта — и он на экране. А если программа зависла насовсем, следующего фронта не будет, и Pulse не сработает никогда.

Ещё случаи. SCL шины I²C в нуле дольше разумного — ведомый растянул такт и не отпустил; линия UART молчит дольше, чем пауза между пакетами; сторожевой таймер не сбрасывается вовремя (36в).

Ошибка. Тайм-аут короче самого длинного нормального промежутка — запуск на каждом медленном витке цикла. Сначала посмотреть нормальный разброс (послесвечение, 36г.18), потом ставить предел.


36д.14 Недоросший импульс (Runt)

Что это. Импульс, который перешёл один уровень, но не дошёл до другого: «рант» (руководство с. 99–101; источник — CH1–CH4). Для положительного — поднялся выше нижнего уровня B и опустился, не достав верхнего A. Дополнительно — условие на его ширину: None, >, <, < >.

Зачем. Логический уровень, который не стал ни нулём, ни единицей: две микросхемы одновременно тянут линию в разные стороны, выход не успевает за слишком коротким импульсом, преобразователь уровней на пределе. Приёмник может прочитать такой импульс как угодно — это и есть «плавающий» сбой.

С ним и без него. Модель: 1000 импульсов 3,3 В, один дотянул только до 1,2 В. Фронт на 1,65 В срабатывает 999 раз — рант ниже уровня, его не видно никогда. Фронт на 1,0 В — 1000 раз: рант среди них, но это 0,1 % записей, глазом не найти. Runt с уровнями A = 2,5 В и B = 0,8 В — 1 раз, ровно на нём.

Ошибка. Уровни A и B слишком близко к полкам: шум на полке сам пересекает B и не доходит до A — запуск на шуме. Уровни — внутрь размаха с запасом над шумом (36д.3).


36д.15 Окно (Window)

Что это. Два уровня — верхний и нижний; запуск, когда сигнал выходит за коридор (Exit), входит в него (Enter) или пробыл в нём заданное время (Time, от 1 нс до 10 с) (руководство с. 102–103; источник — CH1–CH4). В списке Type руководство называет этот вид «Over».

Зачем. Питание. Шина 3,3 В, коридор 3,0…3,6 В: одно условие ловит и провал, и выброс — не надо гадать, в какую сторону сбой.

С ним и без него. Модель: шина 3,3 В с шумом, провал на 0,4 В и выброс на 0,35 В. Запуск по спаду на 3,0 В сработал 1 раз — только на провале; по подъёму на 3,6 В — 1 раз, только на выбросе. Окно Exit — 2 раза: оба события одним условием.

Ошибка — коридор не помещается. Уровни запуска — в пределах ±4,5 деления от центра (36д.3). Центр экрана смещением ставят на 3,3 В (36г.4); на 100 мВ/дел предел ±0,450 В — коридор ±0,3 В входит; на 50 мВ/дел предел ±0,225 В — уже нет. И слишком узкий коридор: шум сам выходит за него, запуск непрерывный.


36д.16 Задержка между двумя сигналами (Delay)

Что это. Два источника: фронт A и соседний с ним фронт B; запуск, когда время между ними больше (>), меньше (<), в пределах (< >) или вне пределов (> <) заданного (руководство с. 104–106). Источники — CH1–CH4 и D0–D15.

Зачем. Время реакции прошивки. A — вход прерывания (кнопка, сигнал готовности датчика), B — вывод, который обработчик переключает первым делом. Модель с условными числами: обычно ответ 1,2 мкс, но изредка прерывания запрещены надолго (запись во флеш, длинная критическая секция), и ответ до 30,0 мкс. Из 10 000 событий таких 35; условие «> 5 мкс» ловит только их.

С ним и без него. По фронту A видно 10 000 нормальных ответов, медленный попадёт на экран случайно. По Delay — только медленные, и слева от них видно, чем был занят процессор, если вывести это на другие каналы.

Ошибка. Фронты A и B не соседние: между ними успевает пройти ещё один фронт A — прибор меряет не ту пару. И перепутанные A и B: условие не выполняется никогда.


36д.17 Предустановка и удержание (Setup/Hold)

Что это. Такт (SCL в меню) и данные (SDA): время предустановки — сколько данные стоят до фронта такта, время удержания — сколько после. Запуск, если одно из них (или любое — пункт Setup/Hold) меньше заданного (руководство с. 106–109). Data Type — какой уровень данных проверять: H или L.

Зачем. Ведомый SPI читает бит по фронту такта. Если ведущий настроен в другом режиме (CPHA, 18.2), данные меняются на том же фронте, по которому их читают. Модель: такт 1 МГц, данные меняются через условные 10 нс после фронта.

режимы предустановка удержание
совпадают: данные меняются по спаду 500 нс 500 нс
не совпадают: по тому же фронту 990 нс 10 нс

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

Ошибка. Перепутать SCL и SDA в меню — прибор меряет время от данных до данных. Имена в меню у DHO900 такие же, как у I²C, но запуск этот не про I²C — про любую пару «такт + данные».


36д.18 N-й фронт (Nth Edge)

Что это. Запуск на N-м фронте после паузы (Idle Time) (руководство с. 109–111). N — от 1 до 65535. Пауза должна быть длиннее самого большого промежутка между считаемыми фронтами и короче паузы перед пачкой.

Зачем. I²C на 100 кГц: такт SCL — 10 мкс; адрес и бит R/W — 8 тактов, 9-й — такт подтверждения (ACK). Между транзакциями SCL стоит дольше, например миллисекунды. Пауза 50 мкс и N = 9 — запуск на такте ACK первого байта: сразу видно, ответил ли ведомый, и не нужно декодирование (36ж).

С ним и без него. По фронту SCL — запуск на любом из тактов, и картинка прыгает, как без Holdoff (36д.5). Здесь Holdoff не нужен — счёт сам выбирает одно место.

Ошибка. Пауза короче промежутка между тактами внутри пачки — счёт сбрасывается посреди байта. Ведомый растягивает такт (clock stretching) — промежуток внутри транзакции вырастает, и пауза должна быть длиннее и его.


36д.19 Запуск по шинам: RS232, I2C, SPI, CAN, LIN

Что это. Прибор разбирает биты сам и запускается по содержимому — не по фронту, а по байту, адресу, ошибке. Как показывать разобранное и искать по записи — часть 4 (36ж). Что ловит DHO900 (руководство с. 111–126; даташит с. 15):

шина условия запуска настройки
RS232 (UART) Start, Error, Check Error, Data Polarity, Baud Rate, Data Bits 5–8, Stop Bit 1/1.5/2, Parity None/Even/Odd
I2C Start, Stop, Restart, MissedAck, Address, Data, A&D SCL, SDA, AddrBits 7/8/10, Direction, Bytes 1–5
SPI данные после CS или после паузы такта (Timeout) CLK, MISO, CS, Slope, DataBits 4–32, Timeout от 8 нс до 10 с
CAN SOF, EOF, Remote ID, Overload, Frame ID, Frame Data, Data&ID, ошибки Signal Type CAN_H/CAN_L/TX/RX/DIFF, Baud, Sample Position 10–90 %, Bytes 1–8
LIN Sync, ID, Data, Data&ID, Sleep, Wakeup, Error Version 1.X/2.X/Both, Baud, Sample Position, Bytes 1–8

UART у DHO900 — до 20 Мбит/с, CAN — до 5 Мбит/с (даташит с. 15).

UART: скорость и полярность. Прибор отсчитывает биты от стартового по заданной скорости. При расхождении скоростей ошибка копится к концу кадра: к середине стоп-бита — 9,5 бита. Расхождение 3 % сдвигает точку чтения на 28,5 % бита — кадр читается; 6 % — на 57,0 %, за середину бита: прибор видит ошибку кадра там, где её нет. Предел — 5,26 %. Error полезен и сам по себе: запуск по ошибке кадра ловит сбой скорости у платы. Polarity: у линии RS-232 после преобразователя уровней логика перевёрнута относительно UART на выводе микроконтроллера.

Чётность. Пример из руководства: в 0x55 4 единицы, при Even бит чётности 0, при Odd — 1. Check Error ловит кадры, где это нарушено.

I²C: адрес 7 или 8 бит. Датчик с адресом 0x3C в документации на другой датчик записан как 0x78 — это тот же адрес, сдвинутый на бит, с битом записи. У DHO900 при AddrBits 8 Bits пункт Direction недоступен (руководство с. 116), то есть восьмибитный адрес уже включает бит R/W. Ошибка: 7 Bits и 0x78 — запуска нет. MissedAck — главный запуск для вопроса «почему датчик молчит»: прибор останавливается на первой транзакции без ответа.

SPI: CS или Timeout. С CS прибор начинает счёт битов с активного CS; без провода CS — после паузы такта длиннее Timeout. Пауза должна быть длиннее промежутка между тактами внутри слова и короче паузы между словами — та же логика, что у Holdoff (36д.5) и N-го фронта (36д.18).

CAN. Signal Type DIFF — сигнал, снятый дифференциальным щупом между CAN_H и CAN_L (36з, 36и); TX/RX — с ножек трансивера, обычным щупом. Sample Position — где внутри бита прибор читает уровень.

Ошибка у всех шин. Уровень запуска (у I²C — два, у SPI — три: Level A, B, C) не в середине перепада — прибор читает биты неверно, и запуск по данным молчит при правильных данных.


36д.20 Какой запуск для какой задачи

задача запуск подробно
увидеть сигнал, ничего о нём не зная Edge, Auto, кнопка 50% 36д.2, 36д.3
поймать одно событие и остановиться любой, Single 36д.2
устойчивая картинка пачки тактов Edge + Holdoff 36д.5
иголка помехи на цифровой линии Pulse, < половины бита 36д.8
медленный фронт, слабая подтяжка Slope 36д.9
программа зависла, линия замолчала Timeout 36д.13
уровень «ни 0, ни 1», конфликт на линии Runt 36д.14
провал или выброс питания Window, Exit 36д.15
долгая реакция прошивки Delay 36д.16
неверный режим SPI Setup/Hold 36д.17
состояние по нескольким линиям Pattern, Duration 36д.11, 36д.12
ответ I²C-ведомого Nth Edge или I2C MissedAck 36д.18, 36д.19
конкретный байт, адрес, кадр RS232, I2C, SPI, CAN, LIN 36д.19

36д.21 Грабли

Экран пуст в Normal. Постоянное напряжение или уровень за размахом — событий нет. Auto или кнопка 50% (36д.2, 36д.3).

Single «не сработал» на включении. На медленной развёртке прибор сначала заполняет часть до запуска: на 100 мс/дел — 0,5 с (36д.1).

Картинка мигает пустыми кадрами. Auto на редком сигнале: 6 самозапусков на одно событие (36д.2). Normal.

Двойные запуски на шумном фронте. Шум больше гистерезиса. Noise Reject, уровень на крутой участок (36д.3).

Фронт уехал за левый край. HFR задерживает запуск на 0,92 мкс (36д.4). DC или Noise Reject.

Пачка прыгает. Holdoff больше пачки и меньше периода (36д.5).

Цифровой канал не запускается. Порог CMOS3.3 на логике 1,8 В — запас 0,5 мВ (36д.6).

Импульс есть, а запуск по ширине молчит. Ширина считается на уровне запуска: от 1,16 до 0,84 мкс у одного импульса (36д.8).

Зависание видно, а что было перед ним — нет. Pulse «>» вместо Timeout: запуск через 41,0 мс после последнего фронта (36д.13).

Рант не находится. Фронт на 1,65 В его не видит, на 1,0 В — 0,1 % записей. Runt (36д.14).

Запуск по I²C-адресу молчит. 7-битный адрес 0x3C против 8-битного 0x78 (36д.19).


36д.22 Итоги

Дальше: раздел 36е «Осциллограф, часть 3: курсоры, автоизмерения, математика и БПФ» — как из пойманной записи получить числа: курсоры, автоизмерения со статистикой, математика каналов и спектр.

Открыть в интерактивном справочнике