Погрешность скорости UART (делитель бодрейта)

Тактовый генератор UART делит частоту f_clk целочисленным делителем, поэтому реальная скорость почти всегда чуть отличается от заданной. Калькулятор считает делитель divisor = round(f_clk / (N·baud)), фактическую скорость, погрешность в процентах и накопленную рассинхронизацию к концу 10-11-битного кадра. Практический порог — менее 2…2.5 % на сторону; именно поэтому существуют «бодрейтные» кварцы 11.0592 / 14.7456 / 18.432 МГц, дающие нулевую ошибку на стандартном ряде скоростей.
Тактовая частота UART
Скорость, передискретизация и кадр
Пресеты скоростей — из выпадающего списка поля «бод». Быстрые кварцы с нулевой погрешностью: 1.8432, 3.6864, 7.3728, 11.0592, 14.7456, 18.432, 22.1184 МГц.
Что считается и как

UART не может выдать произвольную скорость: тактовая частота делится целым числом. Всё, что нужно, — арифметика делителя и оценка накопленной рассинхронизации к концу кадра. Эмпирических коэффициентов нет.

Шаг 1. Целочисленный делитель.

divisor = round( f_clk / (N · baud) )

N — коэффициент передискретизации (oversampling), обычно 16, иногда 8. В регистр BRR/UBRR многих МК записывают (divisor − 1).

Шаг 2. Фактическая скорость.

baud_факт = f_clk / (N · divisor)

Шаг 3. Погрешность.

err% = (baud_факт − baud) / baud · 100

Практический порог |err| < 2…2.5 % на сторону. Суммарный бюджет передатчика и приёмника не должен сдвинуть точку семплирования последнего бита кадра больше чем на ~половину битового интервала.

Шаг 4. Накопленная ошибка к концу кадра.

accum% ≈ |err%| · N_бит

N_бит — полная длина кадра (старт + данные + паритет + стоп; 8N1 = 10). Если accum% ≥ 50 % — сдвиг последнего бита превышает пол-бита и приём почти гарантированно ломается.

✓ Проверочный пример
Вход: f_clk = 11.0592 МГц, baud = 115200, N = 16
Ожидается: divisor = round(11 059 200 / (16·115200)) = round(6.0) = 6 → baud_факт = 11 059 200 / (16·6) = 115200 бод → err = 0.00 % (норма). Именно поэтому существуют кварцы 11.0592 МГц.
Источник: Арифметика делителя UART; reference manual STM32 (BRR = f_clk/(N·baud)), AVR ATmega (UBRR = f_osc/(16·BAUD) − 1)
✓ Проверочный пример
Вход: f_clk = 8 МГц, baud = 115200, N = 16
Ожидается: idealDivisor = 8 000 000 / (16·115200) = 4.34 → divisor = round = 4 → baud_факт = 8 000 000 / (16·4) = 125000 бод → err = (125000 − 115200)/115200·100 = +8.51 % (риск). Накопленная к 10-му биту ≈ 85 % бита — framing error.
Источник: Та же формула делителя; классический пример «плохого» кварца 8 МГц для 115200 бод

Источники (проверены 2026-07-11): формула — чистая арифметика делителя тактовой частоты UART/USART, отдельного ГОСТ на неё нет. Механику BRR = f_clk/(N·baud), N = 16 или 8, описывают reference manual'ы микроконтроллеров (STM32 RM0008/RM0090, разд. USART; AVR ATmega datasheet «USART», UBRR = f_osc/(16·BAUD) − 1 — регистр хранит делитель − 1). Практический порог погрешности ±2…2.5 % на сторону и «бодрейтные» кварцы 11.0592 / 14.7456 / 18.432 МГц — общепринятая инженерная практика.

Опубликовано: 11 июля 2026 г.Обновлено: 11 июля 2026 г.Актуальность стандартов проверена при последнем обновлении
Калькулятор — вспомогательный инструмент для оценки. Для сертификации, проектной документации и приёмочных испытаний сверяйтесь с первоисточником стандарта.

Похожие калькуляторы

Нагрузочная ёмкость кварцевого резонатора
Подбор внешних конденсаторов C1=C2 по паспортной CL кварца (схема Пирса) или расчёт эффективной CL по заданным C1, C2 с учётом паразитной ёмкости
Подбор резистора из ряда E24/E96 (прямая и обратная задача)
ГОСТ 28884-90 / IEC 60063: ближайший номинал + топ-5 пар (параллельно/последовательно) под точное значение
Радиатор для транзистора / MOSFET с проверкой T_j
Полная тепловая цепочка T_j = T_a + P·(θ_jc + θ_cs + θ_sa), база реальных MOSFET (IRF540N, IRFZ44N, BUZ11, IRF830, IRFP460), обратная задача