UART
UART란?
UART (Universal Asynchronous Receiver Transmitter)는 비동기식 시리얼 통신의 일종으로, 미리 정해둔 개시와 종료 신호에 따라 데이터를 통신하는 방식입니다. 개시 신호를 「Start Bit」, 종료 신호를 「Stop Bit」로 하여, 「Start Bit」와 「Stop Bit」 사이에 「Data Bit」를 두고 통신합니다. 「Data Bit」 후에 데이터가 바르게 전송되었는지 확인하기 위한 「Parity Bit」를 추가하는 경우도 있습니다.
Start Bit는 1bit, 데이터는 8bit, Parity Bit는 1bit, Stop Bit는 2bit (또는 1bit)이므로, 1번의 통신 시 전송할 수 있는 데이터의 수는 12bit (또는 11bit)입니다.
「Start Bit」와 「Stop Bit」 (경우에 따라서는 「Parity Bit」도 포함)를 추가하여 전송하기 때문에 데이터 전송 효율은 그다지 좋지 않지만, 가장 손쉽게 취급할 수 있는 통신 수단이라고 할 수 있습니다.
Parity Bit란?
「Parity Bit」는 데이터의 오류를 검출하기 위한 bit로 홀수 Parity와 짝수 Parity의 2종류가 있습니다.
홀수 Parity의 경우 Data Bit 중 1의 개수가 홀수가 되도록 Data Bit의 마지막에 0 또는 1을 추가하고, 짝수 Parity의 경우 Data Bit 중 1의 개수가 짝수가 되도록 Data Bit의 마지막에 0 또는 1을 추가합니다.
예를 들어 11000101이라는 8bit 데이터의 경우 1의 개수는 4개로 짝수입니다. 홀수 Parity의 경우, 1의 개수를 홀수개로 조정하기 위해 Parity Bit는 1이 됩니다. 반면에 짝수 Parity의 경우, 1의 개수를 짝수개로 조정하기 위해 Parity Bit는 0이 됩니다.
이와 같이 Parity Bit를 추가하면 전송 중 데이터의 bit가 달라진 경우에 데이터 중 1의 bit 수와 Parity Bit의 값에 모순이 생기기 되므로, 수신 측에서는 데이터 오류가 있음을 알 수 있게 됩니다.
보율 (Baud rate)란?
UART 통신의 경우 각 디바이스의 내부에서 각각 클록을 발생시키고, 그 내부 클록에 따라 데이터 전송을 실행합니다. 이러한 클록을 보율 클록이라고 하며, 각 디바이스 간 동일한 보율을 설정함으로써, 송신 측과 수신 측에서 동일한 타이밍에 데이터의 전송이 가능해집니다.
보율의 오차
송신 측과 수신 측의 내부 클록이 다른 경우, 데이터의 전송 타이밍이 달라지므로 통신이 바르게 실행되지 않습니다.
8bit 통신을 실행하는 경우, 송신 측과 수신 측에서 허용된 보율 클록의 오차는 일반적으로 각각 ±1%로 알려져 있습니다.