Скорость передачи и бод
Скорость передачи показывает, сколько бит в секунду проходит по линии связи. Для UART её обычно называют скоростью в бодах — 9600, 115 200 — и от неё зависят длительность бита, допустимая длина линии и требования к точности тактового генератора.
Обновлено Редакция GAW
Скорость передачи — количество бит, передаваемых по линии связи за секунду (бит/с). Бод (baud) — единица скорости модуляции: число символов, то есть смен состояния сигнала, в секунду. У UART каждый символ несёт один бит, поэтому для него скорость в бодах и в битах в секунду совпадают: 9600 бод — это 9600 бит/с, и один бит длится 1/9600 с ≈ 104,2 мкс. В модемах и радиосвязи один символ может нести несколько бит, и там бод и бит/с различаются.
Стандартный ряд UART
| Скорость, бит/с | Длительность бита | Байт в секунду (8N1) |
|---|---|---|
| 9600 | 104,2 мкс | 960 |
| 19 200 | 52,08 мкс | 1920 |
| 57 600 | 17,36 мкс | 5760 |
| 115 200 | 8,68 мкс | 11 520 |
| 921 600 | 1,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-генератора без калибровки может не хватить, а кварц подходит всегда.
Источники
- Texas Instruments. TL16C550C Asynchronous Communications Element with Autoflow Control (SLLS177I), 2021 — генератор скорости: делитель = fXIN / (16 · скорость), делитель от 1 до 65 535
- Maxim Integrated (Analog Devices). Tutorial 2141: Determining Clock Accuracy Requirements for UART Communications, 2003 — допустимое суммарное расхождение частот ±3,3 % для короткой линии и ±2 % для длинного кабеля
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — гл. 20: таблицы скорости и ошибки 20-2…20-7, рекомендуемая ошибка ±2 % для 8N1
Нашли ошибку?