Погрешность скорости UART (делитель бодрейта)
Что считается и как
UART не может выдать произвольную скорость: тактовая частота делится целым числом. Всё, что нужно, — арифметика делителя и оценка накопленной рассинхронизации к концу кадра. Эмпирических коэффициентов нет.
Шаг 1. Целочисленный делитель.
N — коэффициент передискретизации (oversampling), обычно 16, иногда 8. В регистр BRR/UBRR многих МК записывают (divisor − 1).
Шаг 2. Фактическая скорость.
Шаг 3. Погрешность.
Практический порог |err| < 2…2.5 % на сторону. Суммарный бюджет передатчика и приёмника не должен сдвинуть точку семплирования последнего бита кадра больше чем на ~половину битового интервала.
Шаг 4. Накопленная ошибка к концу кадра.
N_бит — полная длина кадра (старт + данные + паритет + стоп; 8N1 = 10). Если accum% ≥ 50 % — сдвиг последнего бита превышает пол-бита и приём почти гарантированно ломается.
Источники (проверены 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 МГц — общепринятая инженерная практика.