Ch1 Seminar/IP

UART 통신 overview

베린이 2023. 7. 26. 09:01
반응형

UART(Universal asynchronous receiver/transmitter) 통신은 이전에 설명드린 I2C나 SPI와 달리 동기 신호(clock)를 사용하지 않는 프로토콜입니다. 비동기화 통신은 동기화 통신보다 전송 속도가 느린데, 어떤 차이가 있을까요??

- 장점

클럭을 쓰지 않기 때문에 클럭 핀이 필요 없고 1:1 통신이어서 address phase나 slave select 핀이 필요 없다. 데이터 송수신하는 2개의 핀만 사용

Tx, Rx가 나뉘어져 있어서 전이중 통신 지원

오랫동안 사용되었기에 복잡하지 않고 관련 문서도 잘 정리되어 있음, 많은 장치가 UART 지원

- 단점

클럭을 사용하지 않기 때문에 느린 속도, 1:1 통신

통신을 위해 전송속도(baud rate)를 잘 맞춰줘야 하고 틀린 경우 데이터 손실이 일어남

 

UART control 모듈에는 Rx/Tx 핀이 있어서 데이터가 나가는 신호는 Tx, 데이터를 수신하는 신호는 Rx에 연결하면 됩니다. 그러면 UART 통신에 대해 알아보겠습니다.

 

- Protocol

Baud rate

UART 통신은 비동기방식의 전이중 통신으로 동기 신호인 클럭을 사용하지 않기 때문에 데이터 송/수신 전에 데이터 전송 속도(baud rate)를 정해야 합니다. 많이 사용하는 baud rate는 38400인데요, 이는 38.4 Kbps를 의미합니다.

 

출처 : Realtek UART

Start bit

Baud rate를 정했지만 데이터를 주고받는 두 모듈은 통신의 시작을 어떻게 알 수 있을까요?? 그래서 UART 통신에는 Start bit가 존재합니다. 통신을 하기 전에는 High 상태를 유지하다가 통신이 시작될 때, Low로 내려주면 데이터를 받는 쪽에서 통신이 시작됨을 알 수 있게 됩니다.

 

Stop bit

8비트의 데이터를 주고 받은 뒤 High 상태를 유지하면 통신이 끝났다는 것을 의미합니다. 이는 Stop bit라고 하는데 1~2 bit로 설정할 수 있습니다.

 

Parity bit

Tera term setting

 

위의 사진은 PC와 유저가 시리얼 통신을 할 수 있게 도와주는 Tera term이라는 프로그램입니다. 통신하기 전에 위와 같은 설정을 하게 되는데요, baud rate는 38400, 1 패킷은 8 bit, 1 stop bit로 설정을 했습니다. 그리고 패리티 비트도 설정해야 합니다. 패리티 비트는 유저가 옵션으로 설정하는 비트입니다, 안 쓸 수도 있고 쓸 수도 있는 거죠. 역할은 통신 중 오류가 있는지 검사하는 것입니다. 그렇다면 왜 오류가 발생하는 걸까요??

SOC에서 사용되는 UART 컨트롤러의 경우 내부 레지스터 세팅을 통해 baud rate을 설정하게 됩니다.

 

 

이 UART controller 모듈의 사용되는 클럭이 10MHz이고 원하는 baud rate이 38400입니다. 그리고 oversampling ratio라고 해서 baud rate에 비해서 얼마나 빨리 데이터를 샘플링하는지를 정하는 factor를 지정합니다(기본값은 16). 정리하자면 input 클럭을 baud rate, oversample ratio로 나눠 세팅값을 정합니다. 계산 결과를 반올림해서 모듈에 입력하는데 여기서 어쩔 수 없이 오차가 발생하게 됩니다. 이로 인해 통신 중 오류가 발생할 수 있어서 적절한 환경을 정해야 하는데 클럭을 바꿀 수는 없으니 baud rate이나 oversample ratio를 오차를 최소화할 수 있는 값으로 정해야 합니다.

 

정리하자면 UART는 클럭을 사용하지 않는 비동기통신이어서 클럭 핀이 필요하지 않지만 상대적으로 느리고 오차가 발생할 수 있어서 유저가 parity bit를 optional 하게 설정해야 합니다.

'Ch1 Seminar > IP' 카테고리의 다른 글

LIN overview (2) Sleep, Wake up  (0) 2023.10.11
LIN overview (1) Protocol  (0) 2023.10.04
Decimation filter (데시메이션 필터)  (0) 2023.06.10
I2C 통신 overview  (5) 2023.05.24
SPI 통신 overview  (0) 2023.05.16