UART 보율 오차 계산기
클럭과 목표 보율에서 분주비와 실제 보율, 오차를 계산합니다. 오차가 프레임 끝에서 얼마나 누적되는지와 흔한 클럭·보율 조합 가운데 어떤 것이 통신이 안 되는지를 표로 보여 줍니다.
보율 오차
-3.549%
실제 보율 111,111bps입니다. 이론 한계 5.26%는 안 넘었지만 실무 예산 ±2%는 넘었습니다 — 상대편 오차까지 겹치면 위험합니다.
분주비를 한 칸씩 옮기면
분주비는 정수(또는 소수부 단위)로만 고를 수 있어 이상값에 가장 가까운 것을 씁니다. 그 반올림 몫이 그대로 보율 오차가 됩니다.
흔한 클럭 × 보율 오차 (%)
지금 고른 오버샘플링 16배·프레임 10비트 기준입니다. 붉은 값은 이론 한계를 넘어 통신이 안 되는 조합입니다. 11.0592MHz 줄이 230400까지 전부 0인 것이 이 크리스털이 아직도 팔리는 이유입니다.
115,200bps를 오차 0으로 내는 클럭
1.8432 MHz · 3.6864 MHz · 5.5296 MHz · 7.3728 MHz · 9.216 MHz · 11.0592 MHz · 12.9024 MHz · 14.7456 MHz
오버샘플 16배에 정수 분주를 쓰면 클럭이 16×115,200 = 1.8432 MHz의 정수배일 때만 오차가 0입니다. 11.0592MHz가 이 목록에 있는 것은 우연이 아니라 그러라고 만든 값입니다.
사용 방법
- 1주변장치 클럭과 목표 보율을 넣습니다.
- 2오버샘플링 배수를 고릅니다. 보통 16배이고 고속에서 8배를 씁니다.
- 3MCU가 분주비 소수부를 지원하면 그 단위를 고릅니다.
- 4프레임 구성(데이터 비트·패리티·정지비트)을 맞춥니다.
- 5오차와 정지비트에서 밀리는 양을 확인하고, 표에서 안전한 조합을 고릅니다.
자주 묻는 질문
분주비 = round(클럭 ÷ (오버샘플링 × 목표 보율))로 정수를 구한 뒤, 실제 보율 = 클럭 ÷ (오버샘플링 × 분주비)를 계산해 목표와 비교합니다. 보율은 클럭을 정수로 나눠 만들기 때문에 목표와 딱 맞아떨어지는 일이 오히려 드뭅니다.
8N1이면 이론상 ±5.26%까지입니다. 수신기가 시작비트에 동기를 맞춘 뒤 k번째 비트를 (k + 0.5)비트시간 뒤에 찍으므로, 마지막 비트에서도 비트 안에 머물려면 오차가 0.5/(9 + 0.5)보다 작아야 하기 때문입니다. 다만 이건 양쪽 오차를 합친 값이라 실무에서는 한쪽당 ±2% 안쪽으로 잡습니다.
오차가 비트마다 누적되기 때문입니다. 시작비트에서 한 번 맞춘 뒤로는 자기 클럭만 믿고 세어 나가므로 뒤로 갈수록 샘플 시각이 밀립니다. 데이터 비트를 9개로 늘리고 패리티와 정지비트 2개를 붙이면 한계가 5.26%에서 4%로 좁아집니다.
보율 오차를 0으로 만들려고 씁니다. 11059200을 16으로 나누면 691200이고, 이 값이 9600·72이자 115200·6이라 흔한 보율로 정확히 나누어떨어집니다. 반대로 8MHz나 16MHz 같은 깔끔한 값이 115200에서는 크게 어긋납니다.
16MHz를 16배 오버샘플링으로 나누면 이상 분주비가 8.68이라 9로 반올림되어 실제 보율이 111111bps, 오차가 −3.5%가 됩니다. U2X로 8배 오버샘플링을 켜면 분주비 17에 +2.1%로 줄어듭니다. ATmega328P 데이터시트의 보율 표에 그대로 실려 있는 값입니다.
분주비가 작아져 반올림 한 단계의 몫이 커지기 때문입니다. 분주비가 2 아래로 내려가면 한 칸 차이가 25%를 넘길 수 있습니다. 그때는 오버샘플링을 8배로 낮추거나 클럭을 올려야 합니다.
분주 단위가 1/2의 거듭제곱으로 잘게 나뉘어 오차가 그만큼 줄어듭니다. 1/16 단위면 대개 0.5% 아래로, 1/256 단위면 0.05% 아래로 내려갑니다. STM32의 USART가 1/16 단위를 씁니다.
전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지고 넣은 값은 이 기기에만 남습니다.
알아두면 좋은 점
- 한쪽의 오차만 계산합니다. 실제로는 보내는 쪽과 받는 쪽의 오차가 겹치므로 한쪽당 예산을 절반으로 잡아야 합니다.
- 클럭 자체가 정확하다고 봅니다. 크리스털의 온도·초기 편차(수십 ppm)와 내장 RC 발진기의 오차는 따로 더해야 합니다.
- 수신기가 비트 한가운데를 정확히 찍는다고 봅니다. 실제로는 시작 가장자리 검출에 오버샘플링 한 칸만큼의 불확실성이 더 있습니다.
- 분주비의 최댓값(레지스터 폭)은 확인하지 않습니다. MCU 데이터시트의 범위를 함께 보셔야 합니다.
- ATmega328P 데이터시트의 보율 표를 정답지로 삼아 검증했습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.