| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 우선순위큐
- 컴퓨터 비전
- level3
- 다이나믹 프로그래밍
- cpp
- 2018 KAKAO BLIND RECRUITMENT
- 코틀린
- Stack
- 임베디드
- 동적계획법
- 누적합
- level2
- 프로그래머스
- dfs
- dp
- 컴퓨터비전
- 백준
- lv2
- 구현
- 이분탐색
- c++
- 자바
- JavaScript
- 다이나믹프로그래밍
- kotlin
- 통신 인터페이스
- C
- 그리디
- java
- BFS
- Today
- Total
코드를 느껴바라
[네트워크] U(S)ART 통신 인터페이스 본문
UART / USART Communication Interface

임베디드 시스템에서 가장 먼저 마주치는 통신 방식은 대부분 U(S)ART다.
센서 값을 출력하거나, PC와 연결해 로그를 확인하고, 외부 모듈과 간단한 명령을 주고받을 때 거의 항상 등장한다.
U(S)ART는 흔히 “UART 통신”이라고 불리지만,
정확히 보면 이는 통신 프로토콜이 아니라 통신 인터페이스에 해당한다.
이 글에서는 그 관점에서 U(S)ART를 정리한다.
U(S)ART란 무엇인가
UART는
Universal Asynchronous Receiver/Transmitter의 약자로,
비동기 방식의 직렬 데이터 송수신을 담당하는 하드웨어 인터페이스다.
UART의 역할은 명확하다.
병렬 데이터를 직렬 데이터로 변환해 송신하고,
수신된 직렬 데이터를 다시 병렬 데이터로 복원한다.
여기서 중요한 점은,
UART는 데이터의 의미나 메시지 규칙을 전혀 정의하지 않는다는 것이다.
단지 “비트를 어떤 타이밍으로 주고받을지”만을 담당한다.
USART는 UART와 무엇이 다른가
USART는
UART의 확장 형태로, 비동기 통신뿐 아니라 동기 통신까지 지원한다.
즉,
- 비동기 모드로 사용하면 UART
- 클럭을 함께 사용하면 USART
가 된다.
실제로 대부분의 MCU 데이터시트를 보면
“UART”라고 부르는 모듈이 내부적으로는 USART인 경우가 많다.
다만 실무에서는 관습적으로 비동기 통신을 통틀어 UART라고 부른다.
왜 U(S)ART를 인터페이스라고 부르는가
U(S)ART는 다음을 정의한다.
- TX / RX 핀의 역할
- 직렬 전송 방식
- 비트 단위 타이밍
- 프레임의 시작과 끝
하지만 다음은 정의하지 않는다.
- 명령의 의미
- 패킷 구조
- 주소 체계
- 에러 발생 시 재전송 규칙
즉,
U(S)ART는 통신의 물리적·논리적 통로만 제공할 뿐,
그 위에서 어떤 규칙으로 대화할지는 전적으로 사용자 몫이다.
이 때문에 U(S)ART는
“프로토콜”이라기보다는 통신 인터페이스로 분류하는 것이 정확하다.
U(S)ART의 통신 구조
U(S)ART는 기본적으로 전이중(Full-Duplex) 통신이다.
송신(TX)과 수신(RX)이 분리된 핀을 사용하며,
송신과 수신을 동시에 수행할 수 있다.
연결은 단순하다.
한쪽의 TX는 상대의 RX로,
한쪽의 RX는 상대의 TX로 교차 연결된다.
별도의 클럭 라인은 사용하지 않는다.
데이터는 한 번에 여러 비트가 아니라,
1비트씩 순차적으로 전송된다.
U(S)ART 프레임의 개념
U(S)ART 통신은 연속적인 비트 스트림이 아니라
프레임 단위로 동작한다.
하나의 프레임은 다음 흐름을 따른다.
- 시작을 알리는 Start Bit
- 실제 데이터 영역
- 선택적인 Parity Bit
- 프레임 종료를 알리는 Stop Bit
Start Bit는 항상 0으로 시작해
수신기가 “이제부터 데이터가 온다”는 것을 인지하게 한다.
Stop Bit는 수신기에게 프레임 종료 시점을 알려준다.
이 구조 덕분에,
공통 클럭이 없어도 수신기가 비트 타이밍을 맞출 수 있다.
비동기 통신과 Baud Rate
U(S)ART는 비동기 통신이다.
송신기와 수신기는 클럭을 공유하지 않는다.
대신, 통신을 시작하기 전에
“1초에 몇 비트를 보낼 것인지”를 약속한다.
이 값이 Baud Rate다.
Baud Rate가 조금이라도 어긋나면
비트 샘플링 시점이 틀어지고,
결과적으로 데이터는 깨진다.
그래서 U(S)ART에서 Baud Rate 설정은
옵션이 아니라 통신 성립의 전제 조건이다.
U(S)ART의 성격 정리
U(S)ART는 구조가 단순하고 구현 난이도가 낮다.
핀 수도 적고, 설정도 직관적이다.
반면,
- 다수 장치 연결
- 주소 기반 통신
- 고속 대용량 데이터 전송
에는 적합하지 않다.
그래서 U(S)ART는
“시스템의 메인 통신”보다는
디버깅, 설정, 제어용 인터페이스로 가장 많이 사용된다.
출처 및 참고문헌
UART
Timing Diagram¶ In an idle state, the Tx line from the sending device is held high. This is a legacy of old telegraph machines, for which the line is held high to make it obvious that it is not damaged. To send a packet, the transmitter first sends a star
vanhunteradams.com
'개발 > 임베디드(Embedded)' 카테고리의 다른 글
| [임베디드] 라즈베리파이로 7-Segment 제어해서 스톱워치 만들기 (2) | 2026.02.11 |
|---|---|
| [네트워크] I2C 통신 인터페이스 개요 (2) | 2026.02.06 |
| [네트워크] 임베디드 통신 개요 (Embedded Communication Overview) (0) | 2026.02.05 |
| [임베디드] HAL의 정의, 필요성 (3) | 2026.02.04 |
| [임베디드] 임베디드 시스템 개요 (0) | 2026.02.03 |
