1. 시리얼(Serial) 통신이란?
- 병렬 데이터의 형태를 직렬 방식으로 전환하여 데이터를 전송하는 컴퓨터 하드웨어의 일종입니다.
- 시리얼(Serial)이라는 것은 직렬이라는 뜻으로, 패러럴(Parallel)과 반대되는 단어이다. 통신에는 직렬 통신과 병렬 통신의 2가지 방식이 존재합니다. 직렬 통신은 데이터를 보낼 때 한 데이터 선(lane)에서 데이터를 보내는 방식이고, 병렬 통신은 여러 개의 선(lane)에서 보내고자 하는 데이터를 나눠서 보내는 것입니다.
- 예를 들어 1010 데이터를 보내려고 할 때 상황은 아래와 같습니다.
- 시리얼 통신에서는 1개의 lane으로 데이터를 모두 보냅니다.
- 병렬 통신에서는 4개의 lane 이라고 가정했을 때, 각 lane(0~3번 lane)에 1, 0, 1, 0 을 나눠서 보냅니다.
1.1. Uart(Universal Asynchrounous serial Receiver and Transmitter)
비동기식(Asynchronous) 통신
. 데이터 수신의 타이밍을 위하여 Clock 라인을 사용하지 않음.- 비동기식 통신이기 때문에 보내는 데이터를 어떻게 해석할지가 중요합니다. 데이터 해석을 위해서는 아래와 같은 정보가 필요합니다. 송수신 측에서는 아래와 같은 규칙들을 지정하고 데이터를 해석합니다.
- Baud Rate(보레이트)라고 하며 초당 많은 심볼(Symbol, 의미 있는 데이터 묶음)을 얼마만큼 전송할지에 대한 정보입니다.
- 데이터 길이 : 송수신 데이터 길이(8bit or 7bit)
- 패리티 비트 : 패리티 비트 사용 X, Even(짝수) 패리티 사용, Odd(홀수) 패리티 사용
- 정지 비트 : 정지 비트(1 or 2개)
- USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) 는 동기식을 지원하는 통신 방식입니다.
1.2. I2C
동기식(Synchronous) 시리얼 통신 방식
. 데이터 수신의 타이밍을 위하여 Clock 라인을 사용.- 필립스에서 개발한 직렬 버스로 마더보드, 임베디드 시스템, 휴대 전화 등에 저속의 주변 기기를 연결하기 위해 사용됩니다.
- I²C 는 풀업 저항이 연결된 직렬 데이터(SDA)와 직렬 클럭(SCL)이라는 두 개의 양 방향 오픈 컬렉터 라인을 사용합니다. 최대 전압은 +5 V이며, 일반적으로 +3.3 V 시스템이 사용되지만 다른 전압도 가능합니다.
- 마스터(Master)와 슬레이브(Slave)가 존재
- 아래와 같은 2가지 선으로 이루어져있습니다.
- SDA : Data 송수신
- SCK : Clock 전송
- 슬레이브마다 지정된 주소 값을 가지고 데이터를 주고 받습니다. 데이터를 주고 받을 때 반드시 주소 값을 붙여서 보내야 합니다.
- SPI가 여러 개의 선이 필요한 것과 달리 2개의 선만 가지고 통신이 가능합니다.
1.3. SPI(Serial Peripheral Interface Bus)
동기식(Synchronous) 시리얼 통신 방식
. 데이터 수신의 타이밍을 위하여 Clock 라인을 사용.- 직렬 주변기기 인터페이스 버스(Serial Peripheral Interface Bus) 또는 SPI 버스는 아키텍처 전이중 통신 모드로 동작하는 모토로라 아키텍처에 이름을 딴 동기화 직렬 데이터 연결 표준입니다.
- 아래와 같은 4가지 선으로 이루어져있습니다.
- MOSI : 마스터 출력, 슬레이브 입력 (마스터로부터의 출력). Master Out, Slave In
- MISO : 마스터 입력, 슬레이브 출력 (슬레이브로부터의 출력). Master In, Slave Out
- SCK : 직렬 클럭 (마스터로부터의 출력). 데이터 전송 타이밍 동기화를 위한 Clock
- SS(CS) : 슬레이브 셀렉트 (active low, 마스터로부터의 출력). Slave Select(또는 Chip Select)는 데이터 수신할 기기 선택을 위한 신호로 사용
- 마스터가 SS를 통해 신호를 전송할 슬레이브를 선택한다. 마스터는 MOSI 를 통해서 SCLK에 동기화된 신호를 전송한다.
- I2C가 2개의 선이 필요한 것과 달리 SPI는 선을 추가로 더 필요로 합니다.
reference
- https://ko.wikipedia.org/wiki/I%C2%B2C
- https://ko.wikipedia.org/wiki/%EC%A7%81%EB%A0%AC_%EC%A3%BC%EB%B3%80%EA%B8%B0%EA%B8%B0%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%B2%84%EC%8A%A4
- https://ko.wikipedia.org/wiki/UART
- https://blog.naver.com/yuyyulee/220301424499