[네트워크?] UART - Universal asynchronous receiver/transmitter

요약

유선 통신의 산업 표준 UART 이야기.

UART란?

UART - Universal asynchronous receiver/transmitter 범용 비동기 수신기/송신기. 단어별로 뜻을 보면

  • 범용(Universal) - 여기저기서 쓸 수 있는 범용 프로토콜
  • 비동기(asynchronous) - 수신/송신측 간 동기(sync)가 되어 있지 않다는 의미. 일반적으로 통신에서 동기회로라는 의미는 같은 클럭을 사용한다는 의미이다. 회로상으로는 clk단에 동일 주파수가 들어온다는 뜻이 되겠다. 서로 연동하는 경우도 있겠지만. 클럭 없이 회로를 구성할 수 있다는 뜻이니 구성이 훨씬 심플해진다. AP단에서 거의 지원해줌
  • 수신기/송신기 - 수신과 송신을 한다는 의미이다.

회로 구성

UART는 총 4포트로 구성되는데 UART란 이름답게 Rx(Receiver), Tx(Transmitter) 두 포트, 전원을 위한 VDD, GND로 구성된다. UART제어용 포트를 쓸 수도 있지만 GPIO로 억지로 데이터를 직렬하하여 쓸 수도 있다.

통신 방식 및 프레임구성

//uartframefromwiki

  • Idle (logic high (1)) : 통신이 없는 상태. 기본적으로 high(1)이 걸려있다.
  • Start bit (logic low (0)) : 통신 패킷을 보내기 시작하겠다는 의미. high(1)로 걸려있는 통신이 0으로 내려가서 1bit를 보낼 시간(1/baudrate) 동안 유지되면 패킷 송신이 시작된다는 의미.
  • Data bits : 실제 데이터. 하나의 프레임이 보내는 피트 숫자
  • Parity bit : 패리티 신호. 수신한 프레임의 단순 합.
  • Stop (logic high (1)) : 패킷 종료를 의미하는 신호

통신을 위한 초기 설정

송신자와 수신자 간에 통신 방식 및 프레임 구성을 지정하여야 한다。

baudrate - 주파수. 통신 속도. 초당 보낼 수 있는 비트 수. 송/수신 양측이 동일한 통신 속도를 맞추어야 통신이 가능하다. 샘플링 레이트를 맞추어야 하는 느낌. dataframe - 개별 프레임의 비트수. 8로 지정하면 개별 패킷이 1바이트(=8비트)를 전송한다. stopbits - 개별 data 송신이 종료되었다는 의미. 1, 1.5, 2bit로 설정이 가능하다. 일반적으로 1로 세팅. parity - 패리티 비트 사용 여부

설정값별 통신 속도

표준까지는 아니고기본 설정으로 많이 쓰는 설정은

  • stopbits - 1
  • dataframe - 8
  • parity - none

이다.

이 경우 1바이트 전송시 10비트(start(1)+data(8)+stop(1))가 필요하다. baudrate이 9600일 경우 초당 960 바이트를 송신할 수 있게 된다.

끝.

상세 스펙

  • RS-232C[4] - 제일 많이 쓰는 표준 중 하나. RS-232C는 1969년에 Electronic Industries Association에서 정의하였다.

참고

  1. 큰 흐름은 요정도만 이해하면 충분
  2. RS-232 등 스펙별 특징. 이 분류가 제일 정확하다
  3. 통신 거리 관련 스펙
  4. RS-232c는 1969년에 정의된 기술임을 알 수 있다.