Я читаю о стандартном протоколе для UART и думаю, что если принимающий UART не имеет никакого представления о том, с какой скоростью передачи данных передаются данные, возникнет много проблем. Если предполагаемая скорость передачи ниже, чем скорость передачи данных, то будут биты, которые не будут «видны» принимающим UART. С другой стороны, если скорость передачи в бодах, используемая приемником, выше, чем скорость в бодах, при которой передаются данные, будут биты, которые будут подсчитаны дважды и приведут к неправильному «чтению» данных.
Мои знания о UART заключаются в том, что когда линия простаивает, она сохраняется на «1», стартовый бит - «0», а стоповый бит - «1». Кроме того, стоп-бит, равный «1», не имеет никакой разницы с «1», когда линия простаивает или есть способ провести различие?
Согласны ли два передающих UART первых, какую скорость передачи данных они будут использовать? Если да, то как они это делают?
источник
Ответы:
Обычные UART должны быть предварительно сконфигурированы с желаемой скоростью передачи данных (а также длиной слова, стоп-битами, четностью и т. Д.), Традиционно выполняемыми человеком.
В течение нескольких десятилетий, хотя в некоторых установках были реализованы функции обнаружения «автоматического бода», которые обычно работают путем синхронизации ключевых характеристик сигнала для определения скорости передачи. Ранние версии требовали передачи известного символа, но более сложные версии могли бы находить скорость по более произвольным данным.
Принимающий UART обычно имеет локальные часы, которые работают с более высокой скоростью - обычно в 8 или 16 раз больше скорости передачи. Это используется для выборки входящего сигнала и обнаружения битов в слове таким образом, чтобы выдержать несколько процентов ошибок. Даже два кварцевых генератора не будут идеально соответствовать частотам, но погрешность может позволить использовать некоторые менее точные источники, иногда включая обрезанные встроенные генераторы и т. Д. Это также может помочь учесть тот факт, что деление частот популярных генераторов может привести только к неточное приближение к определенным скоростям в бодах - в старые времена мастер-часам UART иногда требовались определенные частоты для доступа к популярным скоростям в бодах, например 11,0592 МГц для семейства 8051.
источник
Два UARTS «согласовывают» скорость передачи данных с помощью документации и оператором / пользователем, устанавливающими скорость передачи данных руками, включая протокол установления связи, размер стоп-бита и т. Д.
источник
Да, все настраивается вручную, что часто является небольшой болью, особенно когда системы плохо документированы (я смотрю на вас, каждая встроенная система когда-либо).
Я знаю, что USB, SATA и большинство других современных протоколов данных запускаются после некоторого сброса или события инициализации на самой низкой скорости с некоторой стандартизированной конфигурацией по умолчанию и ведут переговоры со всеми остальными (или просто мастером, в зависимости от протокола) до более высоких скоростей. , Некоторые также используют нагрузочные или понижающие резисторы на своих линиях передачи данных / питания, чтобы указать поддерживаемые скорости.
Посетите этот сайт по USB-согласованию, если вы заинтересованы в углублении в другие протоколы.
источник