Как и в большинстве цифровых систем, «высокий» уровень напряжения используется для обозначения логической «1», а «низкий» уровень напряжения используется для обозначения логического «0». Поскольку в протоколе UART не определены конкретные напряжения или диапазоны напряжений для этих уровней, иногда высокий уровень также называют «Mark» (отметка), а низкий — «Space» (пробел). Обратите внимание, что в состоянии ожидания (когда данные не передаются) в линии поддерживается высокий уровень. Это позволяет легко обнаружить поврежденную линию или передатчик.
Стартовые и стоповые биты
Поскольку UART является асинхронным протоколом, передатчик должен сигнализировать о поступлении битов данных. Это делается с помощью стартового бита. Стартовый бит — это переход из состояния ожидания высокого уровня в состояние низкого уровня, за которым сразу же следуют пользовательские биты данных.
После того, как биты данных закончились, стоповый бит указывает на окончание пользовательских данных. Стоповый бит — это либо переход обратно в состояние высокого уровня или состояние ожидания, либо сохранение этого состояния в течение дополнительного битового интервала. Второй (необязательный) стоповый бит может быть настроен, как правило, на то, чтобы дать приемнику время подготовиться к следующему кадру, но на практике это используется редко.
Биты данных
Биты данных являются пользовательскими данными или «полезными» битами и идут сразу после стартового бита. Может быть от 5 до 9 битов пользовательских данных, хотя чаще всего используется 7 или 8 битов. Эти биты данных обычно передаются в формате с первым младшим значащим битом.
Пример:
Если мы хотим передать заглавную букву «S» в 7-битном коде ASCII, битовая последовательность будет выглядеть как 1 0 1 0 0 1 1. Сначала мы меняем порядок битов, чтобы организовать перед передачей формат с первым младшим значащим битом, то есть 1 1 0 0 1 0 1. После передачи последнего бита данных для завершения кадра используется стоповый бит, и линия возвращается в состояние ожидания.
- 7-битный код ASCII ‘S’ (0x52) = 1 0 1 0 0 1 1
- Порядок LSB = 1 1 0 0 1 0 1