Анализ протокола UART

1. Основание соглашения

1.1. Введение к Соглашению

UART — это «Универсальный асинхронный приемник/передатчик», сокращение от «Универсальный асинхронный приемопередатчик». В 1860-х годах для решения проблемы связи между компьютером и телетайпом Белл изобрел протокол UART, который преобразует параллельные входные сигналы в последовательные выходные сигналы. Из-за своей простоты и практичности UART стал очень широко используемым протоколом связи. Последовательные порты, с которыми мы ежедневно сталкиваемся, RS232, RS485 и другие шины, внутреннее использование в основном представляет собой протокол UART.

Чтобы лучше понять и проанализировать взаимосвязь между протоколами и шинами, мы обычно делим полную спецификацию связи на физические уровни, уровни протоколов и уровни приложений. Физический уровень определяет только истинные характеристики сигнала (такие как напряжение, ток, мощность возбуждения и т. д.) и соответствие между электрическим сигналом и логическим сигналом 0 и 1; Уровень протокола не заботится о том, как реализованы базовые 0 и 1, а только определяет спецификации протокола логических сигналов и процесса связи (например, начало, данные и конец и т. д.); Прикладной уровень не заботится о том, как данные получены, а только определяет смысл представления данных и то, как реализовать конкретную бизнес-логику.

Простейшее приложение протокола UART, обычно на физическом уровне требуется только две линии передачи, одна для передачи и одна для приема, что обеспечивает полнодуплексную связь. Для односторонней передачи также можно использовать только одну линию передачи. Наиболее типичным примером такого приложения являются порты RX/TX микроконтроллера, соединенные друг с другом, что обеспечивает связь UART на основе уровня TTL. Для различных расстояний передачи и требований к надежности замена различных реализаций физического уровня может обеспечить наши общие шины связи RS232, RS485 и другие.

1.2. Различные реализации физического уровня

Поскольку вход на уровень протокола UART представляет собой сигнал логической 0/1, сигнал логической 0/1 можно отличить по стандартам различных уровней на физическом уровне. Для различных коммуникационных потребностей могут использоваться разные физические уровни. Например, простая связь на плате или общие сценарии отладки устройств, связь по протоколу UART между двумя устройствами может осуществляться с использованием простого уровня LVTTL/TTL.

Универсальный последовательный порт использует уровень RS232, который может увеличить расстояние передачи и противостоять определенной степени помех сигнала. Стоимость заключается в том, что для достижения этого на физическом уровне требуется соответствующий чип преобразования уровня, передатчику необходимо преобразовать внутренний сигнал высокого и низкого уровня в сигнал более высокого напряжения +/- напряжения, а принимающей стороне необходимо преобразовать +/ - сигнал напряжения во внутренний сигнал высокого и низкого уровня.

В случае промышленной связи для дальнейшего увеличения дальности передачи и повышения надежности сигнала обычно используется стандарт уровня RS485. Обычные сигналы высокого и низкого уровня преобразуются в пару дифференциальных сигналов на передающем конце, а дифференциальные сигналы преобразуются в обычные сигналы высокого и низкого уровня на приемном конце. Кроме того, RS485 позволяет подключить к шине до 128 приемопередатчиков, тогда как TTL или RS232 являются двухточечными соединениями.

1.2.1. Связь UART на основе TTL

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

Чтобы сравнить различия в реализации разных физических уровней, мы можем наблюдать, как различаются фактические сигналы разных физических уровней при отправке одних и тех же данных. Здесь, взяв в качестве примера символ передачи «D», через стоун-осциллограф непосредственно наблюдайте за сигналом, передаваемым TTL (терминал заземления щупа подключен к общему заземляющему концу устройства, а конец сигнала щупа подключен к синяя сигнальная линия на рисунке выше), и можно получить форму сигнала, показанную на рисунке 1-4. Как видно из осциллограммы, при отсутствии передачи данных сигнал UART будет оставаться на высоком уровне (конкретная амплитуда сигнала определяется напряжением питания ввода-вывода), во время передачи данных сигнал будет скачком , и сигнал вернется в состояние высокого уровня бездействия после завершения передачи.

1.2.2. Связь UART на основе RS232

Чтобы расширить возможности привода, увеличить дальность передачи и надежность, шина RS232 использует биполярный сигнал напряжения для физической передачи. Перед отправкой/приемом сигнала внутренний сигнал и сигнал шины преобразуются друг в друга с помощью микросхемы сдвига уровня. Способ подключения точно такой же, как и на уровне TTL, а весь физический уровень — это всего лишь еще один уровень трансляции уровня.

Также, используя в качестве примера символ передачи «D», щуп осциллографа Pushi подключается к сигнальному концу, и можно зафиксировать реальную форму сигнала, показанную на рис. 1-6. Видно, что сигнал RS232 представляет собой отрицательное напряжение в режиме ожидания, а когда идет передача данных, сигнал начинает прыгать между положительным и отрицательным напряжением и возвращается в состояние отрицательного напряжения в режиме ожидания после завершения передачи.

1.2.3. Связь UART на основе RS485

RS485 разработан для сложных промышленных сред, и самой большой особенностью шины RS485 является использование дифференциальной передачи сигнала по сравнению с физическими уровнями других протоколов UART. Перед отправкой сигнала несимметричный сигнал преобразуется в дифференциальный сигнал приемопередатчиком RS485, а затем отправляется на шину для передачи; Также перед приемом дифференциальный сигнал на шине преобразуется приемопередатчиком в несимметричный сигнал и затем отправляется на прием в контроллер UART. На шине RS485 для полнодуплексной двунаправленной связи требуются две пары дифференциальных сигнальных линий (т. е. 4 сигнальные линии). Если осуществляется только полудуплексная двусторонняя связь, требуется только пара дифференциальных сигналов.

Опять же, используя в качестве примера символ передачи «D», реальную форму волны, показанную на рис. 1-8, можно получить с помощью двухканальных щупов (обычно обозначаемых) щупов осциллографа Pushi, которые подключены к концам A/B. одного из дифференциальных сигналов. Видно, что форма сигнала на конце A/B является комплементарной. Сигнал на клемме А имеет прямую логику (положительное напряжение в режиме ожидания), а сигнал на клемме В — обратную логику (отрицательное напряжение в режиме ожидания).

2. Спецификации протокола

2.1. Структура кадра UART

Во введении к предыдущему разделу мы наблюдали фактическую форму сигнала UART через стоун-осциллограф, так как же именно эта форма сигнала точно распознается как символ «D», а не что-то еще? Это включает в себя определение структуры кадра протокола UART. Как показано на рис. 2-1:

Когда двум устройствам необходимо обмениваться данными по протоколу UART, они должны одновременно согласовать следующее:

  • Продолжительность сигнала T (скорость передачи = 1/T)
  • Конкретное количество битов в каждом элементе структуры кадра
  • Есть ли контрольная цифра и механизм контрольной цифры (чет/нечет/…). )

С этими соглашениями принимающему устройству нужно только дождаться прихода начального бита, а затем через равные промежутки времени произвести выборку последующего сигнала, чтобы получить конкретную передаваемую информацию. Взяв в качестве примера сигнал символа «D», процесс разрешения показан на рис. 2-2:

2.1.1. Скорость передачи данных

Скорость передачи — очень важное понятие протокола UART или всех асинхронных последовательных протоколов, то есть количество битов, которое может быть представлено в единицу времени (1 секунду), или же может быть выражено как величина, обратная разрядности. . Например, сигнал UART со скоростью передачи данных 115200 означает, что он может обрабатывать 115200 бит в секунду, что означает, что на каждый бит данных приходится около 8.68 мкс времени.

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

Опять же, используя в качестве примера сигнал символа «D», как показано на рис. 2-4, если он получен с неправильной скоростью передачи данных, вы можете получить совершенно неверную информацию о данных.

2.1.2. Пустые биты

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

2.1.3. Стартовый бит

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

2.1.4. Биты данных

Бит данных содержит фактически передаваемые данные, длина которых составляет от 5 до 8 бит, если используется контроль четности, и от 5 до 9 бит, если контроль четности не используется. Как правило, биты данных составляют 8 бит, и данные отправляются первыми, начиная с младшего значащего бита, а старшие биты идут вторыми.

2.1.5. Контрольные цифры

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

2.1.6. Стоповый бит

Стоповый бит представляет собой конец кадра данных, а фактический сигнал представляет собой высокий период времени. Длина стопового бита может быть установлена ​​равной 1, 1.5 или 2 битам. В большинстве случаев используется стоповый бит 1 бит.

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

3. Проанализируйте связь UART с помощью логического анализатора.

3.1. Осциллограф против логического анализатора

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

Тем не менее, осциллограф также, естественно, имеет некоторые неудобные места, в дополнение к нескольким каналам, экран, как правило, небольшой, операция не является компьютером + мышью, гибкая и управляемая, эти морфологические проблемы, для сбора и анализа цифровых сигналов, самые большие Проблема осциллографа в том, что глубина памяти слишком мала. Осциллограф стоимостью в несколько сотен тысяч юаней также может иметь глубину памяти всего в несколько сотен Мвыб. В то же время, из-за ограничения глубины хранения, когда необходимо выполнить несколько более длительное время сбора данных, истинная частота дискретизации осциллографа резко упадет, в результате чего собранный сигнал не сможет восстановить реальный сигнал, потеряв значимость анализа.

Логические анализаторы — это контрольно-измерительные приборы, специально разработанные для сбора и анализа цифровых сигналов, а собранные результаты формы сигнала представляют собой только высокие и низкие уровни (т. е. логические 0 и 1). Однако это компенсирует отсутствие осциллографов при сборе и анализе цифровых сигналов.

  1. 1. Большинство логических анализаторов работают на ПК с высокой производительностью настольных процессоров и интерактивным интерфейсом зрелых операционных систем, что значительно повышает удобство и эффективность анализа цифровых сигналов.
  2. 2. Количество каналов логического анализатора велико, логический анализатор DSLogic начального уровня имеет 16 каналов, которые можно собирать одновременно, и пользователь также может получить продукты логического анализатора с десятками или даже сотнями каналов по очень разумной цене. Стоимость.
  3. 3. Глубина хранения логического анализатора больше, например, DSLogic может достигать глубины хранения 16G в потоковом режиме и в то же время поддерживать довольно высокую частоту дискретизации, намного превышающую возможности сбора данных большинства осциллографов.
  4. 4. Логические анализаторы, как правило, предоставляют богатые функции декодирования протоколов, которые могут выполнять углубленный анализ цифровых сигналов. Например, DSLogic в настоящее время поддерживает более 100 протоколов декодирования. Большинство осциллографов имеют ограниченные возможности декодирования, и для большинства из них необходимо приобретать соответствующие подключаемые модули отдельно.

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

3.2. Создание тестовой среды для логических анализаторов

3.2.1. Подключение к DSLogic

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

При использовании просто подключите хост DSLogic напрямую к порту USB на печатной плате с помощью USB-кабеля для передачи данных, откройте программное обеспечение DSView и убедитесь, что ИНДИКАТОР на хосте DSLogic становится постоянно зеленым. На этом подключение и инициализация логического анализатора завершены. Как показано на рис. 3-4, текущее имя устройства в верхнем левом углу и соответствующий статус подключения можно просмотреть в программе DSView.

3.2.2. Подключение сигнала UART

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

Для сигналов UART при доступе к логическому анализатору в простейшем случае необходимо подключить только 2 провода, один к эталонному заземлению, а другой к измеряемому сигналу. Для различных реализаций протокола UART на физическом уровне, о которых мы упоминали ранее, способ подключения сигналов будет немного отличаться.

Например, для сигнала UART на уровне TTL, помимо подключения опорной земли, необходимо только подключить тестируемый сигнал (TX или RX) к соответствующему входу канала логического анализатора.

Для сигналов шины RS232 мы можем либо измерить сигнал шины после преобразования уровня (DSLogic имеет диапазон выдерживаемого напряжения +-30 В на входе кабеля, а диапазон сигнала RS15 +-232 В может быть подключен напрямую), либо мы можем измерить внутренний цифровой сигнал перед преобразованием уровня. Его метод подключения соответствует сигналу TTL, единственное, что следует отметить, это то, что сигнал RS232 переворачивает уровень (отрицательное напряжение в режиме ожидания, то есть низкий уровень), при декодировании протокола UART мы можем инвертировать соответствующий уровень сигнала в окно настройки декодирования DSView (для параметра Invert Signal установлено значение yes).

Шина RS485 использует дифференциальные сигналы, и когда мы используем логический анализатор для сбора сигналов, нам нужно уделять особое внимание подключению измеряемого сигнала. Прежде всего, эталонный участок логического анализатора должен быть подключен к эталонному заземлению соответствующего тестируемого устройства приемопередатчика RS485, чтобы можно было гарантировать, что логический анализатор имеет правильный уровень эталонной плоскости; Во-вторых, для дифференциальных сигналов логическому анализатору нужно получить только высокий и низкий уровни гомополярности с внутренним сигналом. С точки зрения цифровых сигналов дифференциальный способ лишь повышает надежность передачи сигнала, не добавляя дополнительной информации. Как показано на рисунке 3-7, при проверке сигнала шины 485 с помощью логического анализатора соедините опорную землю приемопередатчика соответствующего устройства и сигнал A+ на дифференциальной шине.

Конечно, если можно собрать только B-сигнал, мы также можем настроить декодер UART на реверсирование сигнала, чтобы получить правильный результат разрешения протокола при декодировании в DSView.

3.2.3. Настройки порога

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

Что касается протокола UART, мы ранее сообщали, что он имеет разные реализации физического уровня, а разные реализации физического уровня имеют разные стандарты уровня. Нам нужно только выбрать соответствующий порог, чтобы различать высокие и низкие уровни в разных случаях. Пороговые значения, показанные на рис. 3-8, в основном могут удовлетворить это требование.

В некоторых случаях амплитуда дифференциального сигнала шины RS485 может варьироваться в широких пределах из-за настройки или отладки. Поскольку спецификация RS485 предусматривает, что, пока дифференциальное напряжение между AB больше 200 мВ, его можно считать высоким. В этот момент мы можем использовать стоун-осциллограф, чтобы наблюдать фактическую амплитуду уровня сигнала, а затем принять решение о соответствующей настройке порога. Вам нужно только убедиться, что установленное вами пороговое напряжение позволяет разумно различать высокие и низкие уровни.

3.3. Простое получение сигнала UART

Большинство сигналов UART являются низкоскоростными сигналами, такими как наиболее часто используемая скорость передачи данных 115200, что указывает на то, что частота сигнала составляет всего 115.2 кГц. Такие сигналы можно получить напрямую, используя настройки DSLogic по умолчанию. Здесь, взяв в качестве примера фиксированный интервал в 1 с для хоста и повторно отправив символ «D», описывается, как использовать логический анализатор для получения и анализа таких сигналов UART.

3.3.1. Получение сигнала

После подготовки оборудования и подключения сигнала нажмите кнопку «Пуск» в программном обеспечении DSView, чтобы получить тестируемый сигнал с настройками по умолчанию (время сбора данных с частотой дискретизации 1 МГц, 1 с). Если вы хотите изменить частоту дискретизации и продолжительность сбора данных, выберите соответствующие параметры непосредственно в соответствующем раскрывающемся списке. Принцип установки частоты дискретизации рекомендуется в 10 или более раз превышать максимальную частоту измеряемого сигнала, например, для сигналов UART со скоростью передачи 115200 бод самая быстрая частота сигнала составляет 115.2 кГц, когда частота дискретизации 1M составляет выбран, каждый битовый сигнал будет иметь 8 или 9 точек выборки, а соответствующая фазовая ошибка составляет +-1/8 (12.5%); Когда выбрана частота дискретизации 10M, будет 86 или 87 точек дискретизации на бит сигнала, что соответствует фазовой ошибке +-1/86 (1.16%). Конечно, обычно не рекомендуется использовать слишком высокую частоту дискретизации, потому что чем выше частота дискретизации, тем короче время, за которое она может быть собрана, а слишком высокая частота дискретизации может собрать несколько переходов на одном переходе. край медленного сигнала, что вызывает проблемы с декодированием протокола. На рис. 3-9 показан результирующий сигнал, полученный с настройками по умолчанию.

Как видно из рис. 3-9, канал 0 принимает постоянно высокий уровень сигнала, но не обнаруживает никаких скачков. Внимательно следите за шкалой времени над окном сигнала и полосой прокрутки в нижней части окна, чтобы знать, что в текущем окне отображается только часть собранного сигнала, а не все сигналы. В этот момент вы можете увеличить масштаб с помощью колесика мыши или щелкнуть правой кнопкой мыши в области сигнала, чтобы отобразить все сигналы за все время сбора данных. Получите результат, показанный на рисунке 3-10.

На основании приведенного выше рисунка мы хотим смотреть только на переходную часть канала 0. Вы можете отключить отображение формы сигнала других каналов в окне «Параметры» и отрегулировать высоту отображения сигнала канала. Затем наведите указатель мыши на целевую форму волны и в то же время с помощью колеса мыши увеличьте форму волны в указанном положении; Кроме того, вы можете выбрать область сигнала, которую хотите увеличить, удерживая правую кнопку мыши в поле. Кроме того, удерживайте левую кнопку мыши, чтобы перемещать осциллограмму влево и вправо. Получите детали сигнала, показанные на рис. 3-11.

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

3.3.2. UART-декодирование

Форма сигнала, собранная логическим анализатором, изменяется во времени только на высоком и низком уровнях (0/1), что не способствует нашему целенаправленному анализу процесса и содержания передачи сигнала. Хотя мы можем невооруженным глазом транслировать содержимое протокола, соответствующее форме сигнала в соответствии со спецификацией протокола, это значительно снизит эффективность анализа. Встроенный декодер DSView обеспечивает декодирование богатого содержимого протоколов, превращая скучные сигналы в осмысленные символы, маркеры и содержимое данных. Это значительно облегчает инженерам анализ и понимание сигналов для поиска сообщений об ошибках или важных данных.

В программном обеспечении DSView протокол декодирования полученного сигнала очень прост, просто откройте панель «Декодирование», найдите соответствующий декодер (здесь мы выбираем 1: протокол UART) и установите соответствующие параметры декодера (включая отображение/канал). /структура кадра/формат и т. д.). После определения программа начнет декодировать протокол UART на выбранном канале. Декодированный результат отображается в канале протокола. Это показано на рис. 3-12.

При выборе декодера DSView предоставляет удобную функцию поиска протокола: просто введите ключевые символы в поле поиска протокола, DSView отобразит список всех декодеров, содержащих эти символы, и пользователь сможет выбрать правильный декодер. Как показано на рис. 3-13, существует два протокола, связанных с UART: 0: UART и 1: UART, где 0: UART — это упрощенный декодер, который не анализирует битовую информацию и не поддерживает стекирование протоколов более высокого уровня. когда мы хотим получить только данные, соответствующие форме сигнала, вы можете использовать этот упрощенный протокол, чтобы сократить время декодирования и ресурсы памяти.

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

И параметры настройки, связанные с протоколом, которые мы подробно объяснили в разделе структуры фрейма, в фактической работе также могут быть получены с помощью программного обеспечения хост-компьютера последовательного порта (помощник отладки последовательного порта и т. д.) для получения этой информации. Это показано на рис. 3-14.

Для содержимого декодированных данных DSView поддерживает различные форматы отображения. Например, ранее полученный сигнал UART отображает символ 'D' в виде кодов ASCII, или его можно изменить на режим отображения шестнадцатеричного (Hex), и в результате будет отображаться 0x44. Это показано на рис. 3-15. В настоящее время поддерживаются следующие форматы отображения: hex (шестнадцатеричный), dec (десятичный), oct (восьмеричный), bin (двоичный) и код ascii.

3.4. Получение одной передачи UART

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

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

3.4.1. Буферный режим

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

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

3.4.2. Настройки триггера

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

Когда UART начинает передавать первый стартовый бит, активируется условие запуска, и DSLogic получает форму сигнала во время запуска. Это показано на рис. 3-18.

Давайте рассмотрим более сложный сценарий триггера, например, когда устройство A постоянно отправляет данные на устройство B в случайном порядке, а устройство B отвечает на разные данные в соответствии с содержимым данных, отправленных устройством A. Если мы хотим знать, какие данные устройство A отправило на устройство B перед отправкой данных 0, как мы устанавливаем условие триггера, чтобы поймать сигнал в соответствующий момент?

Здесь нужно решить две проблемы: во-первых, нам нужно установить расположение триггера, чтобы мы могли видеть данные до триггера, а не данные после триггера; Во-вторых, нам нужно найти характеристики сигнала устройства B, отправляющего данные 0, и преобразовать их в соответствующее условие запуска.

Анализ протокола UART

Рисунок 3-19 Положение триггера

Согласно правилам протокола UART, сигнал, который отправляет данные 0, будет относительно широким непрерывным импульсным сигналом низкого уровня. Если скорость UART составляет 115200 бод, а частота дискретизации, которую мы установили, составляет 1 МГц, форма волны данных 0 показана на рисунке 3-20, что будет импульсом низкого уровня около 78.125 мкс.

Чтобы установить расширенный триггер или позицию триггера, требующую поддержки режима буфера, вам нужно сначала установить «Режим запуска» на «Режим буфера» в «Параметры» и не выбирать параметр «Аппаратное сжатие RLE». Установите расширенное условие запуска на канал 1 с непрерывным минимумом в 75 точек выборки (что соответствует частоте дискретизации 1 МГц, что является низким уровнем 75 мкс) и установите положение запуска на 80%, чтобы облегчить наблюдение за данными перед запуском. Конкретные настройки показаны на рис. 3-21.

В соответствии с этим условием запуска он запускается, когда устройство B отправляет данные 0, а полученная форма сигнала показана на рис. 3-22.

3.4.3. Повторить сбор

В некоторых случаях нам необходимо динамически наблюдать за состоянием некоторых сигналов, таких как содержимое данных, отправляемых Burst каждый раз, но мы не знаем, когда данные отправляются, и невозможно часто нажимать кнопку «Старт». . DSView обеспечивает «повторяющийся» режим сбора данных, который автоматически получает и обновляет формы сигналов при срабатывании запуска. Когда мы отлаживаем некоторые периодические пакетные сигналы, очень удобно наблюдать за результатами динамического сбора данных и разбора протокола в режиме повторения.

Режим повтора можно настроить, как показано на рис. 3-23. Интервал повторения — это минимальное время задержки между двумя выборками, чтобы облегчить наблюдение формы сигнала и результаты декодирования предыдущего сбора данных.

3.5. Получение долгосрочных передач UART

Когда необходимо получить сверхдлинные сигналы для анализа, мы можем использовать режим Stream. DSLogic может достигать глубины дискретизации 16G на канал в потоковом режиме. При частоте дискретизации 1 МГц время сбора данных может достигать 16G/1M ≈ 16000 с, что составляет более 4 часов.

3.5.1.Потоковой режим

Настройка потокового режима показана на рис. 3-24, и разные аппаратные версии DSLogic поддерживают разные параметры канала потокового режима. Для U3Pro16, основанного на порте USB3.0, он может поддерживать 3 канала с частотой дискретизации до 1 ГГц, 6 каналов с частотой дискретизации до 500 МГц, 12 каналов с частотой дискретизации до 250 МГц и 16 каналов с частотой дискретизации до 125 МГц.

Когда объем собранных данных относительно велик, для декодирования можно использовать протокол 0:UART по сравнению с 1:UART, который пропускает вывод битовой информации, не поддерживает стекирование протоколов высокого уровня и может сократить время декодирования. и уменьшить занятость памяти. Остальные функции такие же, как 1: UART. Эффект декодирования показан на рис. 3-25.

3.5.2. Отображается список протоколов

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

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

Кроме того, декодированный контент можно экспортировать в файл через отображение списка. Как показано на рисунке выше, нажав кнопку «Сохранить», отображаемую в списке, вы можете выбрать экспорт декодированного в данный момент контента в файл csv или txt, что удобно для более сторонней обработки данных, например ввода в Matlab. для анализа или в качестве ввода данных для другого программного обеспечения.

3.5.3. Поиск декодированных данных

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

Введите ключевое слово, которое вы хотите найти, в поле поиска, затем нажимайте кнопки «вперед/назад», чтобы найти декодированное содержимое, содержащее ключевое слово, и интерфейс осциллограммы перейдет к соответствующему месту для анализа. Если вы анализируете результаты сегмента, вы можете щелкнуть строку в контрольном списке, и кнопки «Вперед/Назад» будут искать предыдущие и следующие совпадения, начиная с этого поведения, а не начиная с нуля.

Для протокола UART DSView также поддерживает многострочный поиск данных. Может использоваться для поиска некоторых непрерывных строковых результатов, которые появляются в ваших данных. Как показано на рис. 3-29, многострочный поиск данных объединяет несколько ключевых слов с символом «-».

3.5.4. Поиск сигнала

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

Проверьте панель инструментов «Поиск», окно поиска появится под окном программного обеспечения, щелкните поле поиска, появится всплывающее окно настроек поиска, определите край перехода канала, вы можете искать сигнал, который соответствует критериям слева и справа ключи. В то же время вы также можете вручную перемещать курсор поиска, чтобы определить, где начинается поиск.

Когда выбран поиск, появляется курсор с тегом «S», начальное состояние серого цвета, если вы нажмете влево/вправо для поиска и найдете сигнал, соответствующий критериям, курсор станет синим и автоматически переместится в место поиска. . Если вы вручную переместите курсор «S», курсор снова станет серым.

3.5.5. Использование курсора

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

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

3.5.6. Измерения мыши

В дополнение к измерениям с помощью курсора DSView обеспечивает более удобные измерения с помощью мыши. Например, измерение текущей ширины импульса, периода, коэффициента заполнения и частоты (достаточно просто навести курсор мыши на изменяющийся импульс); Измерение количества фронтов (нажатие на начальную и конечную позиции на осциллограмме автоматически подсчитает фронты скачка этого интервала); и измерение расстояния до края (щелкните мышью по начальному краю и переместитесь к конечному краю).

Как показано на рисунке 3-31, переместите мышь в положение начального края перехода, щелкните левой кнопкой мыши, выберите начальный край перехода, переместите мышь в положение конечного края перехода и расстояние между двумя Будут отображены границы перехода (длительность/точка интервала выборки), и для завершения измерения снова будет нажата левая кнопка мыши.

4. Часто задаваемые вопросы

4.1. Определить неизвестную скорость передачи

Когда мы не можем заранее получить скорость передачи сигнала UART, мы также можем угадать истинную скорость передачи по полученному сигналу. DSView предоставляет декодер «Угадай битрейт» для угадывания параметров скорости передачи строки сигнала произвольной формы. Принцип Guess bitrate заключается в том, чтобы, в свою очередь, найти наименьшую ширину импульса в сигнале как ширину сигнала в бите, а затем вычислить его обратную величину как скорость передачи. Таким образом, может быть несколько результатов, нам нужно только наблюдать, является ли соответствующий импульс разумной шириной импульса, а затем выбрать результат с максимальной скоростью передачи данных. Это показано на рис. 4-1.

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

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

4.2. Расшифровка знаков недоверия

В предыдущем разделе мы упомянули, что протокол UART может передаваться различными физическими сигналами, и некоторые сигналы физического уровня могут иметь обратную связь с сигналом протокола (высокий и низкий уровни взаимозаменяемы), например, RS232 или B-сигнал в дифференциальный сигнал RS485. Когда собираемый нами сигнал инвертируется, декодер DSView UART также можно настроить для получения правильного результата декодирования.

Пользователю нужно только заменить «Invert Signal?» в настройках декодера UART. Опция установлена ​​на «да». Расшифровка обратного сигнала показана на следующем рисунке.

4.3. Расшифровка многогрупповой связи UART

Декодер UART DSView намеренно разработан для одноканального подхода, который облегчает произвольные настройки канала для мультиплексной связи при декодировании. Например, для полнодуплексной связи UART, которая имеет как сигнал TX, так и сигнал RX, нам нужно всего лишь добавить два декодера UART, чтобы они соответствовали декодированию TX и RX.

Как показано на рисунке ниже, это тот случай, когда три сигнала UART декодируются одновременно.

4.4. Ошибка декодирования, вызванная начальной позицией

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

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

5. Расширенный анализ

5.1. Парсинг многоуровневого протокола

UART является очень широко используемым базовым протоколом, и многие протоколы передачи, используемые в практических приложениях, расширены на основе UART. Например: DMX512, LIN, MIDI и Modbus и т. д., в основе связи лежит протокол UART. 、

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

Давайте возьмем Modbus RTU в качестве примера, чтобы понять процесс анализа DSView многоуровневых протоколов. Основываясь на функции передачи байтов UART, Modbus RTU подробно определяет конкретное значение каждого байта, так что структура кадра Modbus формируется путем объединения нескольких кадров протокола UART вместе. Это показано на следующем рисунке.

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

Как показано на следующем рисунке, структура стека протокола хорошо видна из результата декодирования Modbus RTU. Modbus для каждого кадра состоит из 8 байтовых кадров UART. Содержимое фрейма Modbus также будет иметь четкие комментарии, указывающие на его конкретное значение. Когда возникает ошибка передачи, такой результат декодирования может очень четко определить местонахождение ошибки, а также причину ошибки (будь то проблема с базовым UART или проблема с уровнем протокола Modbus). Если вы не хотите видеть основные детали, вы можете скрыть соответствующий декодированный контент на странице настроек декодера.

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

Оставьте комментарий

Ваш электронный адрес не будет опубликован.


*