
실무를 경험하면서 가장 많이 쓰이는 통신은 UART 통신이다. 기존에 대강, 대충알고 있던 것들을 조금 더 체계적으로 정리가 필요하다고 생각이 되어서 정리하려고 한다. SW적인 구현만 해봤었는데, 거기에서 HW 적인 구성도 알 필요가 있다고 생각되어서 함께 정리해보고자 한다.
UART(범용 비동기화 송수신기: Universal asynchronous receiver/transmitter)는
병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종이다.
통신 데이터는 메모리나 레지스터에 들어 있어서 이것을 차례대로 읽어 직렬화 하여 통신한다.
최대 8비트(1byte)가 기본 단위이다.
통신에서 직렬이란 채널의 구조를 말한다.
여러개의 채널을 통해 동시에 데이터를 보내는 것이 병렬통신이고, 하나의 채널을 통해서 일련의 규칙대로 데이터를 순서대로 보내는 것이 직렬통신이다.

UART는 Start bit (GND , 0)으로 시작하고, 그 뒤 8개의 Data bit , 그리고 Stop bit (VCC , 1)로 끝난다. 따라서 한번에 10개의 bit를 전송하고 받는게 일반적이다.
구조는 아래와 같다.

단 여기에서 패리티비트라는 오류를 검증하기 위한 값이 들어가게 되면, 1비트가 추가되어 11bit를 전송하게 된다.

UART 통신은 전이중 방식으로 송신과 수신을 동시에 할 수 있으며, TX < > RX 가 서로 붙으면서 데이터를 송신하고 수신하게 된다.
UART는 비동기식 통신방법으로 RX와 TX 각각의 clock 신호를 사용한다.
저희 사장님도 하드웨어를 먼저 이해하라고 거듭 강조하시더라구요...