UART(Universal Asynchronous Receiver/Transmitter)는 비동기식 시리얼 통신 프로토콜로,
주로 임베디드 시스템이나 컴퓨터 주변 장치 간의 데이터 전송에 사용된다. UART는 간단한 구조와 효율성 덕분에 다양한 환경에서 널리 활용된다.
비동기식 통신의 특징
- 클럭 동기화 불필요
비동기식 통신에서는 송신 측과 수신 측이 동일한 클럭 신호를 공유하지 않아도 된다.
대신, 데이터 전송 시작과 끝을 알리는 Start Bit와 Stop Bit를 사용하여 데이터 프레임을 구분한다. - 간단한 하드웨어 구성
비동기식 통신은 전송 속도(Baud Rate)만 일치하면 되므로, 별도의 클럭 신호선이 필요 없고 두 개의 선(TX: 송신, RX: 수신)만으로 통신이 가능하다. - 데이터 프레임 구조
비동기식 데이터 프레임은 Start Bit로 시작하여 데이터 비트, 옵션으로 Parity Bit, 그리고 Stop Bit로 끝난다. 이를 통해 데이터의 시작과 끝을 명확히 구분할 수 있다. - 오류 검출 가능
패리티 비트를 추가하여 전송 중 발생할 수 있는 오류를 검출할 수 있으며, 수신 측에서 패리티 비트를 확인하여 데이터가 올바르게 전송되었는지 검증할 수 있다.
UART의 주요 특징
- 비동기식 통신
UART는 동기 신호 없이 데이터를 전송한다 송신기와 수신기는 동일한 Baud Rate(전송 속도)로 설정되어야 하며, 별도의 클럭 신호가 없어도 데이터를 주고받을 수 있다. - 간단한 하드웨어 요구 사항
UART는 두 개의 핀(TX: 송신, RX: 수신)만으로 동작하며, 최소한의 하드웨어 자원만을 필요로 한다. 이로 인해 임베디드 시스템에서 많이 사용된다. - 범용성
UART는 마이크로컨트롤러뿐만 아니라 다양한 전자 장치 간 통신에 사용된다. RS-232, RS-422, RS-485 등의 표준과 함께 사용되어 다양한 환경에서 적용 가능하다. - 데이터 프레임 구성
UART 데이터 프레임은 Start Bit, Data Bits(일반적으로 8비트), Parity Bit(선택 사항), Stop Bit로 구성되며 이 프레임 구조는 데이터 전송의 시작과 끝을 명확히 구분한다
UART 구성
- 하드웨어 초기화
• Baud Rate 설정: 송수신 장치 간 동일한 전송 속도를 설정한다. Baud Rate 레지스터를 통해 설정하며, 마이크로컨트롤러의 클럭 속도와 전송 속도를 계산하여 설정한다.
• 송수신 활성화: UART 송신과 수신 기능을 활성화하는 레지스터 설정이 필요하다.(예: 전송 디버깅을 위한 RS-232 설정 포함) - 소프트웨어 구성
• 데이터 송수신 함수 구현: 송신 데이터는 버퍼에 저장된 후 직렬로 전송되며, 수신 데이터는 수신 버퍼에 저장된다.
송수신 상태 플래그를 활용하여 데이터 전송 가능 여부를 확인한다.
• 오류 처리 및 속도 동기화: 오버런 오류나 프레임 오류가 발생할 수 있으므로 이를 처리하고, 송신기와 수신기의 Baud Rate를 동일하게 유지하여 데이터 손실을 방지한다.