직렬 통신(Serial Communication)

각종 프로세서와 회로들 간에는 서로 통신하며 동작하는 것이 핵심이기 때문에 데이터를 주고 받는 표준 프로토콜들이 필요합니다.

수많은 프로토콜들이 있지만 일반적으로, 병렬 (parallel)과 직렬 (serial) 로 나뉘며 직렬 통신은 대개 하나의 신호선을 이용하여 데이터를 주고받는 통신을 말합니다. 여기에서 Parallel 방식은 다루지 않습니다.

https://www.codrey.com/embedded-systems/serial-communication-basics/

https://www.codrey.com/embedded-systems/serial-communication-basics/

직렬 통신은 위와 같이 데이터를 stream으로 바꾸어서 한 번에 한 비트씩 전송합니다. 병렬 통신에 비해 느리고 구현이 어려울 수 있으나, I/O 라인을 적게 사용하는 큰 장점이 있습니다.

동기 / 비동기식

synchronous / asynchronous

동기식 직렬 통신(Synchronous Serial Communication)은 data line을 clock signal line과 동기화 시킵니다. 대표적으로 SPI, I2C Protocol이 있습니다.

비동기식은 clock signal없이 동작합니다. 대신, 데이터를 안정적으로 송수신하기 위해 별도로 처리를 해주어야 합니다. 대표적으로 UART Protocol이 있습니다.

UART (Universal Asynchrounous serial Receiver and Transmitter)

UART는 비동기식 통신이기 때문에 받은 데이터를 어떻게 해석할지가 중요합니다. 데이터 해석을 위해 아래와 같은 정보들을 사용합니다.

(USART는 동기식을 지원하는 방식)

연결방법

전송용인 TX와 수신용인 RX 2개의 선으로 구성됩니다. 따라서 두 장치는 각각 엇갈리게 연결되어야 합니다.

https://linuxhint.com/tx-rx-on-arduino/

https://linuxhint.com/tx-rx-on-arduino/