PortDock

UART 보율 오차 계산기

MCU 클럭과 오버샘플링으로 보율 분주비(AVR UBRR 등)·실제 보율·오차 %를 계산하고, 데이터 비트 수에 따른 수신 허용 범위와 표준 보율 표를 함께 봅니다.

결과
이상적인 분주비 f ÷ (오버샘플링 × 보율)
넣을 분주비
AVR UBRR (= 분주비 − 1)
실제 보율
오차
상대 장비와의 차이
AVR 수신 허용 범위 (§19.8.3)

이 클럭의 표준 보율
보율분주비실제 보율오차

기본값(16 MHz, 115200 bps, 오버샘플링 16)은 ATmega328P 데이터시트 표 19-12 의 한 줄입니다 — UBRR 8, 오차 −3.5 %.

값을 바꾸면 바로 다시 계산합니다. 계산은 이 브라우저 안에서만 하고, 입력한 값은 어디에도 보내지 않습니다.

계산식

  • 분주비 = f ÷ (오버샘플링 × 보율) → 정수(또는 레지스터의 소수 단위)로 반올림
  • 실제 보율 = f ÷ (오버샘플링 × 넣은 분주비)
  • 오차(%) = (실제 보율 ÷ 원하는 보율 − 1) × 100
  • AVR: BAUD = f ÷ (16 × (UBRR + 1)), 두 배 속도(U2X = 1)는 8 × (UBRR + 1)

오차가 왜 문제인가

  • UART 는 시작 비트의 하강 에지에 맞춰 시계를 맞추고, 그 뒤 비트들은 자기 클럭으로 세어 가운데쯤에서 읽습니다. 보율이 다르면 프레임 끝(패리티·정지 비트)으로 갈수록 읽는 위치가 밀립니다.
  • 그래서 허용 오차는 프레임이 길수록 작습니다. ATmega328P 데이터시트는 데이터+패리티 비트 수(D)별로 받아들일 수 있는 범위를 식으로 주고(아래 표), 송신·수신이 오차를 반씩 나눈다고 보고 «권장 최대 수신 오차» 를 적습니다(보통 속도 D = 8 에서 ±2.0 %).
  • 중요한 것은 두 장비 사이의 차이입니다. 한쪽이 +2 %, 다른 쪽이 −2 % 면 차이는 약 4 % 입니다. «상대 장비 보율 오차» 칸에 상대 쪽 오차를 넣어 차이를 봅니다.
  • 클럭이 1.8432 MHz 의 배수(11.0592·14.7456·18.432 MHz 등)면 표준 보율이 정확히 나누어떨어집니다. 데이터시트 표 19-11 에서 이 클럭들의 오차가 0.0 % 인 이유입니다.

AVR 수신 허용 범위 (데이터시트 표 19-2·19-3)

D보통 속도 최저 ~ 최고권장 최대 수신 오차두 배 속도 최저 ~ 최고권장 최대 수신 오차
593.20 ~ 106.67 %±3.0 %94.12 ~ 105.66 %±2.5 %
694.12 ~ 105.79 %±2.5 %94.92 ~ 104.92 %±2.0 %
794.81 ~ 105.11 %±2.0 %95.52 ~ 104.35 %±1.5 %
895.36 ~ 104.58 %±2.0 %96.00 ~ 103.90 %±1.5 %
995.81 ~ 104.14 %±1.5 %96.39 ~ 103.53 %±1.5 %
1096.17 ~ 103.78 %±1.5 %96.70 ~ 103.23 %±1.0 %

자주 묻는 것

16 MHz 에서 115200 bps 가 잘 안 되는 이유는?

오버샘플링 16 이면 분주비가 8.68 이라 9 로 반올림되고, 실제 보율은 111 111 bps(−3.5 %)가 됩니다. 두 배 속도(오버샘플링 8)로 바꾸면 17.36 → 17, 117 647 bps(+2.1 %)로 오차가 줄어듭니다.

오차가 몇 % 까지 괜찮나요?

칩과 프레임 길이에 따라 다릅니다. ATmega328P 는 8비트 데이터·패리티 없음(D = 8)에서 보통 속도 기준 권장 최대 수신 오차를 ±2.0 % 로 적습니다. 다른 칩은 그 데이터시트의 수신 허용 범위 표를 봅니다.

분수 분주는 무엇인가요?

분주 레지스터에 소수 부분(예: 1/16 단위)이 있는 UART 입니다. 정수만 되는 UART 보다 오차를 훨씬 줄일 수 있습니다. 레지스터에 넣는 방법은 칩 매뉴얼을 따릅니다.

PC 쪽 USB-시리얼 변환기도 오차가 있나요?

변환기 칩도 자기 클럭을 나눠 보율을 만듭니다. 칩마다 만들 수 있는 보율과 오차가 다르므로, 높은 보율에서 글자가 깨지면 변환기 데이터시트의 보율 표를 확인합니다.

보율로 문자 시간·Modbus 3.5문자를 보려면 시리얼 통신 시간 계산기.

출처