Автоматическое определение скорости передачи UART рабочего устройства

У меня есть устройство, которое постоянно отправляет данные через UART.

Я пытаюсь прочитать его с помощью терминального приложения на ПК с Windows. Проблема в том, что я не знаю, с какой скоростью передачи данных устройство отправляет данные. Данные, которые я получаю при более высоких скоростях передачи данных, не имеют никакого смысла, поэтому я сузил их до менее или равного 600 среди стандартных скоростей передачи данных, доступных на терминале.

Есть ли какое-либо программное обеспечение для определения скорости передачи данных или метод с использованием любого микроконтроллера ??


person Vishal B U    schedule 15.06.2017    source источник
comment
использование любого микроконтроллера, вероятно, нет. если контакт используется совместно с gpio, вы можете опрашивать / прерывать изменения состояния и измерять, наименьшее измерение должно дать вам скорость передачи данных. В качестве альтернативы вы можете просто сканировать частоты, если вы получите попадание, оно все равно может быть неверным, может быть в 2x, 3x, 4x и т. д. слишком медленным. может стать трудным или невозможным, чтобы правильно выстроиться, просто отрегулировав скорость, вам также необходимо иметь шаблон данных (формат кадра и т. д.), который вы можете искать, когда ваши ошибки кадрирования исчезнут.   -  person old_timer    schedule 15.06.2017
comment
если вы говорите о конкретной программе/устройстве, просто поместите его на осциллограф или используйте свой микроконтроллер для измерения импульсов с помощью gpio и таймера, а затем вычислите бод.   -  person old_timer    schedule 15.06.2017
comment
У вас также может быть несоответствие не только скорости передачи данных, но и количества битов данных, четности или стоповых битов.   -  person D Krueger    schedule 15.06.2017
comment
Установив скорость передачи с помощью осциллографа, вам остается только опробовать различные комбинации форматов. Обычно может быть 7 или 8 битов данных, бит четности или без бита четности и 1 или 2 стоповых бита. Итак, есть 8 конфигураций для тестирования вашего терминала (эмулятора).   -  person Weather Vane    schedule 17.06.2017


Ответы (3)


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

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

person TomServo    schedule 15.06.2017

Я попробовал программное обеспечение Realterm и обнаружил, что данные поступают со скоростью 300 бод, без четности, 8 бит данных и 1 или 2 стоповых бита. Для остальных вариантов я получаю сообщение об ошибке кадрирования и прерывании в программном обеспечении. Спасибо вам всем...

person Vishal B U    schedule 21.06.2017

Старый поток, но я подумал, что это может быть полезно.

Что-то, что я сделал, это написал скрипт python/pyserial, который продолжал циклически переключаться с разными скоростями передачи (300–115200), а также прослушивал и фильтровал строки, которые не являются мусором. Что-то, что решается легко, с предположением, что это будет хороший чистый текст, чтобы у вас была правильная ставка. Он работал достаточно хорошо и, казалось, находил правильную скорость более чем достаточно быстро, чтобы перейти в загрузчик моей точки доступа.

person Todd Sirois    schedule 08.02.2020