UART는 직렬(Serial) 통신 방식 중 하나로, 클럭 신호 없이 데이터를 송수신하는 비동기(Asynchronous) 통신 방식이다.
기본 개념, 회로 구성, 동작 방식, 신호 타이밍 및 장단점 등을 논리적으로 설명할 수 있어야 한다.
📌 1. UART 기본 개념
✔ UART는 비동기 방식(Asynchronous)이므로 별도의 클럭 신호 없이 데이터를 송수신한다.
✔ 두 개의 신호선(TX, RX)만 사용하여 간단한 하드웨어로 직렬 통신을 구현할 수 있다.
✔ 속도(전송 속도, Baud Rate)는 송신 측과 수신 측이 동일하게 설정되어야 한다.
✔ 한 번에 1비트씩 데이터를 전송하며, 프레임(Frame) 단위로 송수신한다.
📌 2. UART 하드웨어 회로
UART 회로는 TX(Transmit, 송신), RX(Receive, 수신), GND(공통 접지) 신호선으로 구성된다.
일반적인 UART 연결 회로:

✔ TX ↔ RX, RX ↔ TX로 크로스 연결해야 정상적으로 통신이 가능하다.
✔ GND를 반드시 연결하여 공통 기준 전압을 유지해야 한다.
📌 중요한 포인트:
"UART는 송신(TX)과 수신(RX)을 크로스 연결하여 통신을 수행하며, 별도의 클럭 신호 없이 동작하는 비동기 직렬 통신 방식입니다."
📌 3. UART 동작 원리
UART 통신은 Start Bit → Data Bits → Parity Bit(선택) → Stop Bit 순서로 데이터를 송수신한다.
① UART 프레임 구조
Start BitData Bits (5~9bit)Parity Bit (Optional)Stop Bit (1~2bit)
1비트 (Low) | 5~9비트 (데이터) | 1비트 (홀수/짝수 체크) | 1~2비트 (High) |
✔ Start Bit:
- 송신 측이 데이터를 보내기 전에 1비트 동안 Low(0)를 유지하여 수신기가 동기화할 수 있도록 함.
✔ Data Bits (5~9비트): - 실제 송신되는 데이터(일반적으로 8비트 사용).
✔ Parity Bit (옵션): - 오류 검출을 위해 홀수(Odd) 또는 짝수(Even) 패리티를 설정할 수 있음.
✔ Stop Bit: - 데이터 전송이 끝났음을 나타내며, 1~2비트 동안 High(1)를 유지.
📌 중요한 포인트:
"UART 프레임은 Start Bit(1비트), Data(5~9비트), Parity Bit(선택), Stop Bit(1~2비트)로 구성되며, 프레임 단위로 데이터를 송수신합니다."
📌 4. UART 통신 속도 (Baud Rate)
Baud Rate는 초당 전송되는 신호 변화 횟수(baud)로 측정되며, 일반적으로 다음과 같은 속도를 사용한다.
Baud Rate전송 속도 (bps)
9600 | 9600bps |
19200 | 19200bps |
38400 | 38400bps |
115200 | 115200bps |
1M | 1Mbps |
✔ 송신 측과 수신 측의 Baud Rate가 일치해야 정상적인 통신이 가능하다.
✔ Baud Rate가 빠를수록 데이터 전송 속도가 증가하지만, 신호 무결성 유지가 어려울 수 있다.
📌 인터뷰에서 중요한 포인트:
"UART는 송신기와 수신기의 Baud Rate가 동일해야 하며, 일반적으로 9600~115200bps가 많이 사용됩니다."
📌 5. UART의 장점과 단점
✔ 장점
- 하드웨어 구조가 단순 (TX, RX만 사용)
- 클럭 신호 없이 동작 가능 (비동기 통신)
- 풀 이중(Full-Duplex) 통신 가능 (동시에 송수신 가능)
- 소프트웨어 구현이 간단함
✔ 단점
- 동기 신호가 없으므로 Baud Rate가 맞지 않으면 데이터 손실 발생
- 하나의 송신기와 하나의 수신기만 직접 연결 가능 (멀티 슬레이브 지원 X)
- I2C, SPI보다 속도가 상대적으로 느림
📌 인터뷰에서 중요한 포인트:
"UART는 단순한 하드웨어 구조로 쉽고 효율적인 직렬 통신을 제공하지만, Baud Rate가 맞지 않으면 오류가 발생할 수 있습니다."
📌 6. UART 예상 질문 & 답변
Q1. UART의 기본적인 동작 원리를 설명해 주세요.
✔ 답변
"UART는 클럭 신호 없이 데이터를 직렬(Serial)로 송수신하는 비동기 통신 방식입니다.
TX(송신)과 RX(수신) 두 개의 신호선을 사용하며, 데이터를 Start Bit → Data Bits → Parity Bit → Stop Bit 순서로 전송합니다.
Baud Rate가 송신 측과 수신 측에서 동일하게 설정되어야 정상적으로 통신할 수 있습니다."
Q2. UART와 SPI/I2C의 차이점은 무엇인가요?
✔ 답변
"UART는 클럭 신호 없이 TX, RX 두 개의 신호선을 사용하여 통신하는 비동기 방식입니다.
반면, I2C는 SDA, SCL을 사용하여 다중 슬레이브 연결이 가능하며, SPI는 4개의 신호선(MOSI, MISO, SCK, SS)으로 높은 속도의 동기식 통신을 지원합니다.
UART는 하드웨어가 단순하고 비용이 적게 들지만, 속도가 느리고 다중 장치 연결이 어렵습니다."
Q3. UART 통신에서 오류를 줄이기 위한 방법은 무엇인가요?
✔ 답변
"Baud Rate가 송신 측과 수신 측에서 정확히 일치해야 하며, 오류 검출을 위해 Parity Bit을 사용할 수 있습니다.
또한, 하드웨어적으로 노이즈 필터링을 적용하거나, 소프트웨어적으로 재전송 메커니즘을 구현하여 데이터 오류를 줄일 수 있습니다."
📌 7. 결론
📌 UART는 TX, RX 신호선을 사용하여 비동기 직렬 통신을 수행하는 간단하고 효율적인 방식이다.
📌 Start Bit → Data Bits → Parity Bit(옵션) → Stop Bit 순서로 데이터를 전송한다.
📌 Baud Rate가 송신 측과 수신 측에서 동일해야 정상적으로 통신할 수 있다.
📌 SPI, I2C보다 속도가 느리지만, 하드웨어 구현이 간단하고 안정적인 데이터 전송이 가능하다.
📌 UART에서 대용량 데이터 전송 시 Start Bit와 Stop Bit 처리 방식
✔ 결론:
UART는 프레임 단위(Frame-based Transmission)로 데이터를 전송하므로, 대용량 데이터를 보낼 때도 모든 데이터 프레임마다 Start Bit와 Stop Bit을 포함해야 한다.
즉, 매 9비트(1 Start Bit + 최대 9 Data Bits)마다 Start Bit와 Stop Bit이 삽입된다.
📌 1. UART 데이터 프레임 구조
UART는 데이터를 송수신할 때 프레임 단위로 전송하며, 한 프레임의 구조는 다음과 같다.
Start BitData Bits (5~9bit)Parity Bit (Optional)Stop Bit (1~2bit)
1비트 (Low) | 5~9비트 (데이터) | 1비트 (홀수/짝수 체크) | 1~2비트 (High) |
✔ Start Bit: 데이터 전송 시작을 알리는 신호 (항상 1비트, Low)
✔ Data Bits: 전송할 실제 데이터 (보통 8비트, 경우에 따라 5~9비트 설정 가능)
✔ Parity Bit (옵션): 오류 검출을 위한 추가 비트 (홀수 패리티, 짝수 패리티)
✔ Stop Bit: 데이터 프레임이 끝났음을 나타냄 (1비트 또는 2비트, High)
📌 대용량 데이터를 송신할 때도 UART는 항상 Start Bit와 Stop Bit을 포함하여 데이터를 나눠서 전송한다.
📌 2. 대용량 데이터 전송 시 Start/Stop Bit 포함 여부
✔ UART는 연속적인 대용량 데이터를 보낼 때도 각 데이터 프레임에 대해 Start Bit과 Stop Bit을 포함해야 한다.
✔ 즉, 한 번의 데이터 전송이 끝날 때마다 새로운 Start Bit과 Stop Bit이 추가된다.
예제: 32비트 데이터(4바이트)를 UART로 전송할 경우
(8비트 데이터 모드, 패리티 없음, Stop Bit 1개 설정 가정)
📌 각 바이트(8비트)마다 Start Bit과 Stop Bit이 추가됨
데이터Start Bit8-bit DataStop Bit
바이트1 | 1비트 (Low) | 8비트 데이터 | 1비트 (High) |
바이트2 | 1비트 (Low) | 8비트 데이터 | 1비트 (High) |
바이트3 | 1비트 (Low) | 8비트 데이터 | 1비트 (High) |
바이트4 | 1비트 (Low) | 8비트 데이터 | 1비트 (High) |
📌 즉, 4바이트(32비트) 데이터를 UART로 전송할 경우 총 4개의 Start Bit과 4개의 Stop Bit이 추가된다.
📌 3. 왜 Start/Stop Bit이 계속 추가되어야 하는가?
UART는 비동기(Asynchronous) 방식이기 때문에, 송신기(TX)와 수신기(RX) 간 클럭 동기화가 존재하지 않는다.
➡ 따라서, 각 데이터 프레임의 시작(Start)과 끝(Stop)을 명확하게 구분해야 한다.
➡ Start Bit은 "새로운 데이터가 들어왔다!"라고 알리는 역할을 하며, Stop Bit은 "데이터가 끝났다!"라는 역할을 한다.
만약 Start/Stop Bit을 생략하고 연속적으로 데이터를 보낸다면?
✅ 수신기는 어디서 데이터가 시작되고 끝나는지를 인식하지 못해 데이터 오류가 발생할 수 있다.
📌 4. Start/Stop Bit을 줄이는 방법은 없을까?
대용량 데이터를 전송할 때, Start Bit과 Stop Bit이 계속 추가되는 것은 전송 효율을 떨어뜨릴 수 있다.
하지만, UART의 기본 프로토콜을 유지하면서 Start/Stop Bit을 생략할 수 있는 방법은 없다.
➡ 다만, 다른 대체 기술을 사용하여 효율을 높일 수 있다.
✅ 대안 1: 높은 Baud Rate 사용
- Baud Rate(전송 속도)를 증가시키면 더 빠른 속도로 데이터를 전송할 수 있다.
- 예: 9600bps → 115200bps로 변경하면 속도가 12배 빨라짐.
✅ 대안 2: 패킷 기반 프로토콜 사용 (예: UART + DMA)
- UART 자체는 Start/Stop Bit을 생략할 수 없지만, 소프트웨어적으로 패킷화하여 전송 효율을 높일 수 있다.
- 예: UART + DMA(Direct Memory Access) 기법을 사용하여 연속적인 데이터 전송을 최적화
✅ 대안 3: 다른 통신 방식 사용 (SPI, I2C, USB 등)
- UART의 Start/Stop Bit이 비효율적이라면, SPI나 USB 같은 동기식(Clock 기반) 통신을 고려할 수 있다.
- 특히, 대용량 데이터를 전송할 경우 SPI가 더 효율적일 수 있음.
📌 5. 예상 질문 & 답변
Q1. UART로 대용량 데이터를 전송할 때도 Start Bit과 Stop Bit이 계속 추가되나요?
✔ 답변
"네, UART는 프레임 단위로 데이터를 전송하는 비동기 방식이기 때문에, 대용량 데이터를 보낼 때도 모든 데이터 프레임마다 Start Bit과 Stop Bit이 추가됩니다.
이는 송신기(TX)와 수신기(RX) 간 동기화를 유지하고, 데이터 오류를 방지하기 위해 필요한 과정입니다."
Q2. UART에서 Start Bit과 Stop Bit을 생략할 수 있는 방법이 있나요?
✔ 답변
"UART 프로토콜 자체에서는 Start Bit과 Stop Bit을 생략할 수 없습니다.
하지만, Baud Rate을 증가시키거나 DMA(Direct Memory Access)를 활용하면 전송 효율을 높일 수 있습니다.
또한, **고속 대용량 데이터 전송이 필요할 경우, SPI나 USB 같은 동기식 통신 방식을 사용하는 것이 더 효율적입니다."
Q3. UART의 비효율적인 Start/Stop Bit 문제를 어떻게 해결할 수 있을까요?
✔ 답변
"Start Bit과 Stop Bit은 UART 프로토콜의 필수 요소이기 때문에 생략할 수 없습니다.
하지만, 전송 속도를 높이기 위해 다음과 같은 방법을 사용할 수 있습니다.
- Baud Rate을 증가시켜 전송 속도를 높인다.
- DMA(Direct Memory Access) 기반으로 UART를 사용하여 CPU 부하를 줄인다.
- 패킷 기반 통신 프로토콜(예: Modbus, RS485 등)을 추가하여 데이터를 최적화한다.
- **SPI, USB, Ethernet 같은 동기식 통신 방식으로 변경하여 전송 효율을 극대화한다."
📌 6. 결론
📌 UART는 대용량 데이터를 보낼 때도 Start Bit과 Stop Bit이 모든 데이터 프레임마다 삽입된다.
📌 Start/Stop Bit은 송수신기 간 동기화를 유지하고, 데이터 경계를 명확하게 구분하는 역할을 한다.
📌 Start/Stop Bit을 생략할 수는 없지만, Baud Rate 증가, DMA 사용, 동기식 통신 방식(SPI, USB)으로 대체하면 전송 효율을 높일 수 있다.
'IT' 카테고리의 다른 글
CMOS, BSI CMOS, Stacked CMOS, and Global Shutter (0) | 2025.03.12 |
---|---|
SEC EDGAR에서 최신 10-K 보고서 URL 가져오기 (1) | 2025.03.09 |
SPI (Serial Peripheral Interface) 회로 (0) | 2025.03.02 |
I2C 회로 및 동작 원리 (0) | 2025.03.02 |
스마트폰에서 Thermal(열) 제어를 위한 기술 및 방법 (3) | 2025.03.02 |