2024. 9. 2. 20:48ㆍLinux*security/Network
UART(Universal Asynchronous Receiver/Transmitter)는 데이터 통신을 위해 사용되는 직렬 통신 인터페이스이며 주로 마이크로컨트롤러, 컴퓨터, 임베디드 시스템 간의 통신에 사용된다.
UART 통신의 주요 특징
비동기식 통신:
- UART는 비동기식 통신 방식을 사용한다. 즉, 데이터 전송 시 송신자와 수신자가 동일한 클럭 신호를 공유하지 않고 송신자는 전송 데이터를 일정한 비트 간격으로 보내고, 수신자는 이 비트 간격을 기반으로 데이터를 해석한다.
데이터 프레임 구조:
- UART 통신에서 데이터는 프레임으로 전송된다. 일반적으로 한 프레임은 다음과 같은 구성 요소로 이루어진다:
- 시작 비트(Start Bit): 데이터 전송의 시작을 알리는 비트. 보통 0(로우)으로 설정된다.
- 데이터 비트(Data Bits): 실제로 전송되는 데이터 비트. 일반적으로 5~9비트까지 설정할 수 있다.
- 패리티 비트(Parity Bit, 선택 사항): 데이터 전송 중 오류를 검출하기 위한 비트.
- 정지 비트(Stop Bit): 데이터 전송이 끝났음을 알리는 비트. 보통 1~2비트로 설정된다.
전송 속도 (Baud Rate):
- UART는 전송 속도를 보드 레이트(Baud Rate)로 설정한다. 보드 레이트는 초당 전송되는 신호의 변화 횟수를 의미하며, 예를 들어 9600 bps(비트 per 초)라면, 초당 9600비트가 전송됨을 의미한다.
풀 이중 통신(Full-Duplex Communication)과 반이중 통신(Half-Duplex Communication)
풀 이중 통신은 데이터가 동시에 양방향으로 전송될 수 있는 통신 방식을 말한다. 즉, 두 개의 장치가 동시에 데이터를 송신하고 수신할 수 있다.
- 예시: 전화 통화가 풀 이중 통신의 좋은 예이다. 양쪽 사용자가 동시에 말하고 들을 수 있다.
- 하드웨어 요구사항: 풀 이중 통신을 구현하려면 두 개의 별도 채널(송신용과 수신용)이 필요한다. 예를 들어, UART에서는 TX(송신)와 RX(수신) 라인이 각각 따로 있어, 동시에 데이터 송수신이 가능한다.
반이중 통신은 데이터를 양방향으로 전송할 수 있지만, 한 번에 한 방향으로만 전송할 수 있는 통신 방식을 말한다. 즉, 데이터를 송신하는 동안에는 수신할 수 없고, 데이터를 수신하는 동안에는 송신할 수 없다.
- 예시: 무전기가 반이중 통신의 예이다. 한 사용자가 말을 할 때, 다른 사용자는 듣기만 할 수 있으며, 말을 끝내야 다른 사용자가 말할 수 있다.
- 하드웨어 요구사항: 반이중 통신에서는 하나의 채널을 송신과 수신이 공유한다. 예를 들어, RS-485 통신에서 하나의 선로로 송신과 수신을 번갈아 가며 사용한다.
- 속도 및 효율성: 풀 이중 통신이 반이중 통신보다 더 빠르고 효율적이다. 두 장치가 동시에 통신할 수 있으므로, 데이터 전송 속도가 더 빠른다.
- 복잡성 및 비용: 풀 이중 통신은 더 많은 하드웨어 자원(TX, RX 라인 또는 두 개의 통신 채널)을 요구하므로, 반이중 통신보다 구현이 복잡하고 비용이 더 들 수 있다. 반면, 반이중 통신은 하드웨어 자원이 적게 필요하여 구현이 단순하고 비용이 적게 든다.
직렬 통신:
- UART는 데이터를 한 번에 한 비트씩 순차적으로 전송하는 직렬 통신 방식을 사용한다. 이 방식은 데이터 라인을 줄일 수 있어, 하드웨어 구현이 단순해지는 장점이 있다.
UART 통신의 장점
- 구현이 간단하고 비용이 저렴한다.
- 길이가 짧은 거리에서 신뢰성이 높다.
- 널리 사용되며 다양한 장치에서 지원된다.
UART 통신의 단점
- 긴 거리에서는 신호가 약해져서 오류가 발생할 수 있다.
- 비동기식 통신이기 때문에 송신자와 수신자의 보드 레이트가 일치해야 한다.
UART는 기본적이지만 중요한 통신 방식으로, 임베디드 시스템에서의 디바이스 간 데이터 교환에 매우 유용한다.
'Linux*security > Network' 카테고리의 다른 글
데이터 링크 계층 (Data Link Layer) (0) | 2024.11.29 |
---|---|
물리 계층(Physical Layer) (0) | 2024.11.29 |
RIP 프로토콜 (Routing Information Protocol) (0) | 2024.07.11 |
Networking protocols (0) | 2024.07.03 |
소켓 프로그래밍 (0) | 2024.07.02 |