Перейти к содержанию

Скорость передачи и бод

Скорость передачи показывает, сколько бит в секунду проходит по линии связи. Для UART её обычно называют скоростью в бодах — 9600, 115 200 — и от неё зависят длительность бита, допустимая длина линии и требования к точности тактового генератора.

Обновлено Редакция GAW

Скорость передачи — количество бит, передаваемых по линии связи за секунду (бит/с). Бод (baud) — единица скорости модуляции: число символов, то есть смен состояния сигнала, в секунду. У UART каждый символ несёт один бит, поэтому для него скорость в бодах и в битах в секунду совпадают: 9600 бод — это 9600 бит/с, и один бит длится 1/9600 с ≈ 104,2 мкс. В модемах и радиосвязи один символ может нести несколько бит, и там бод и бит/с различаются.

Стандартный ряд UART

Скорость, бит/сДлительность битаБайт в секунду (8N1)
9600104,2 мкс960
19 20052,08 мкс1920
57 60017,36 мкс5760
115 2008,68 мкс11 520
921 6001,09 мкс92 160

В формате 8N1 на один байт приходится 10 бит — старт-бит, восемь бит данных и стоп-бит, поэтому байт в секунду в 10 раз меньше скорости. Ряд пошёл от UART 16550: делитель = fXIN / (16 · скорость), и кварц 1,8432 МГц = 16 × 115 200 Гц даёт все скорости до 115 200 бит/с при целых делителях (TI, TL16C550C). Подробно о скоростях, передискретизации и приёме бита — в статье об интерфейсе UART, а формат кадра со старт- и стоп-битами нарисует конструктор кадра UART.

Точность частоты

Приёмник UART подстраивается только по старт-биту каждого байта и дальше отсчитывает биты по своему генератору. Если частоты передатчика и приёмника расходятся, к концу кадра момент выборки сползает с середины бита. Допустимое суммарное расхождение — около 2–3 % (Maxim AN2141), Microchip рекомендует ошибку каждой стороны не больше ±2 % для 8N1. Делитель и фактическую ошибку для своего кварца и скорости считает калькулятор скорости UART. На длинных линиях скорость ограничивают ещё и отражения — против них ставят терминаторы.

Частые вопросы

Бод и бит в секунду — одно и то же?

Для UART — да: каждый символ на линии несёт один бит, и 9600 бод — это 9600 бит/с. В общем случае бод — число символов (смен состояния сигнала) в секунду, а символ может нести несколько бит: в модемах и радиосвязи с многоуровневой модуляцией битовая скорость выше скорости в бодах.

Почему стандартные скорости такие странные — 9600, 115 200?

Они пришли от UART 16550 последовательного порта ПК: его генератор делит частоту кварца 1,8432 МГц на целый делитель и выдаёт частоту в 16 раз выше скорости. 1,8432 МГц — ровно 16 × 115 200 Гц, поэтому 115 200 получается при делителе 1, 57 600 — при 2, 9600 — при 12. Отсюда и кварцы 11,0592 и 14,7456 МГц — кратные 1,8432 МГц.

Насколько точной должна быть частота UART?

Суммарное расхождение частот передатчика и приёмника — около 2–3 %: Maxim в AN2141 получает ±3,3 % для короткой линии и ±2 % для длинного кабеля. Microchip для AVR рекомендует держать ошибку каждой стороны в пределах ±2 % при кадре 8N1. Поэтому внутреннего RC-генератора без калибровки может не хватить, а кварц подходит всегда.

Источники

  1. Texas Instruments. TL16C550C Asynchronous Communications Element with Autoflow Control (SLLS177I), 2021 — генератор скорости: делитель = fXIN / (16 · скорость), делитель от 1 до 65 535
  2. Maxim Integrated (Analog Devices). Tutorial 2141: Determining Clock Accuracy Requirements for UART Communications, 2003 — допустимое суммарное расхождение частот ±3,3 % для короткой линии и ±2 % для длинного кабеля
  3. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — гл. 20: таблицы скорости и ошибки 20-2…20-7, рекомендуемая ошибка ±2 % для 8N1

Нашли ошибку?