통합 차량 관제 시스템 용어 사전
통신·신호UART · LPUART

UART

선 두 가닥으로 바이트를 주고받는 가장 단순한 비동기 시리얼 통신. 클럭 선이 없다.

Universal Asynchronous Receiver/Transmitter.

장치 A                    장치 B
  TX ──────────────────▶ RX
  RX ◀────────────────── TX      TX·RX 를 엇갈려 연결한다
 GND ─────────────────── GND

TX 끼리 묶으면 둘 다 말만 하고 아무도 안 듣는다. 가장 흔한 배선 실수다.

Asynchronous — 클럭 선이 없다

SPI·I2C 는 클럭 선이 "지금 읽어"를 알려주지만 UART 는 없다. 대신 양쪽이 **보율(baud rate)**을 미리 약속한다. 115200 baud 면 1비트가 약 8.68 µs.

한쪽이 115200 인데 다른 쪽이 9600 이면 글자가 깨진다. 디버그 콘솔에 이상한 문자가 쏟아지면 십중팔구 보율 불일치다. 허용 오차는 대략 ±2~3 % 이고, 클럭 분주가 딱 안 떨어지면 오차가 누적돼 바이트 끝에서 비트가 밀린다.

한 바이트의 모양

       ┌─ 스타트 비트(0)          ┌─ 스톱 비트(1)
평소 1 ─┐ D0 D1 D2 D3 D4 D5 D6 D7 ┌─── 평소 1
        └──────────────────────────┘

평소 1 로 떠 있다가 0 으로 떨어지는 순간이 시작 신호다.

이 프로젝트에서

TBD-003 의 Sensing ↔ Raspberry Pi 링크 후보이고, 디버그 로그 출력에도 쓴다. SPI 대신 UART 를 권한 이유는 속도가 아니라 방향성이다 — 엔진룸 동물 진입은 RPi 가 판정 즉시 올려보내야 하는 이벤트인데, SPI 슬레이브는 마스터가 물어볼 때까지 기다려야 한다.

프레이밍은 직접 해야 한다

바이트 스트림이라 "여기서부터 한 덩어리"라는 경계가 없다. CAN 은 프레임 단위로 오지만 UART 는 바이트가 줄줄 흘러온다. 그래서 SOF 2바이트 + LEN + PAYLOAD + CRC16 같은 프레임을 직접 정의해야 하고, CRC 실패 시 1바이트 밀고 재동기해야 한다.

헷갈리는 것 둘

USART — S(Synchronous)가 붙어 클럭 동기식도 가능한 확장판. 실무에서는 거의 비동기로만 쓴다.

RS-232 — UART 는 신호 형식이고 RS-232 는 전압 규격이다. MCU 의 UART 는 0~3.3 V(TTL)인데 RS-232 는 ±12 V 라 직결하면 칩이 탄다. 이 프로젝트는 S32K144·RPi 둘 다 3.3 V 라 직결 가능하다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 노드 간 인터페이스 — 신호 목록·CAN 프레임·E2E·버스 부하