Я пытаюсь понять синхронизацию UART. В UART состояние по умолчанию высокое, и он начинает процесс приема, когда получает стартовый бит (переход от высокого к низкому).
В некоторых сценариях любой всплеск, шум или прерывание могут изменить состояние с высокого на низкое, чего достаточно для того, чтобы UART обнаружил его как стартовый бит. Я знаю, что UART внутренне обрабатывает эти сценарии и избегает процесса получения полного byyr.
Может ли кто-нибудь объяснить мне, как UART обрабатывает эти всплески?
Приемник UART производит выборку линии Rx 16 раз (большинство uC) перед подтверждением значения каждого бита. Например, если скорость составляет 9600 бод, время каждого бита будет составлять 104 мкс. Теперь, чтобы правильно определить значение каждого бита (т. е. высокий или низкий), приемник UART производит выборку шины каждые 104 мкс/16 секунд. Затем голосование большинства этих выборок используется для определения значения бита. Стартовый бит используется для указания приемнику, что биты данных должны быть получены. Обязательно, чтобы начальный бит был младшим. Используя такую схему дискретизации, приемник гарантирует, что эффекты шума будут устранены.
UART не начнет принимать символ просто потому, что линия стала низкой. Он должен быть низким в течение определенного периода времени (от 30 до 50 процентов времени передачи одного бита, а на некоторых устройствах это можно даже выбрать). Глюк не будет достаточно продолжительным, чтобы вызвать прием персонажа.
Если шум действительно запускает эту операцию, это означает, что ваша линия связи слишком шумная, чтобы ее можно было использовать для последовательной связи, по крайней мере, без некоторого дополнительного обнаружения и исправления ошибок.
Роджер Роуленд
АльфаГоку
Встроенный C
ситхараман
JS.