TX와 RX핀을 이용하는 직렬 포트는 비동기식이므로(클럭 데이터가 전송되지 않음), 두 장치는 끊임없이 상대방이 데이터를 보내는지 확인해야 한다. 그래서 UART 통신에서는 1초를 몇 개의 간격으로 나누어 데이터를 보낼지(통신속도, Baud Rate)를 미리 정해야 한다. 이 간격을 지키기 위해 통신에 참여하는 두 장치는 같은 클럭(컴퓨터에 장착된 main crystal에 의해 생성)을 사용해야 하며, 클럭이 조금이라도 다르게 되면 데이터 전송에 오류가 발생한다. 이 문제를 해결하기 위해 UART 통신은 1byte를 송신할 때마다 추가로 start/stop bit를 추가한다. 하나의 start(시작) 및 stop(정지) 비트는 각 데이터 프레임의 일부이며, 이는 전송되는 8비트 데이터 각각에 대해 2비트를 더하여 총 10비트의 전송시간이 필요하며 데이터 속도에 영향을 미친다. 비동기식 직렬 포트의 또 다른 결함은 기본적으로 두 장치 사이의 통신에 적합하다는 것이다. 여러 장치를 단일 직렬 포트에 연결할 수는 있지만 버스 경합(두 장치가 동시에 동일한 회선을 구동하려고 하는 경우)은 항상 문제가 되며 해당 장치의 손상을 방지하기 위해 신중하게 처리해야 한다.
비동기식 직렬 통신은 문제가 많다.
1. 두 장치 사이의 통신에 적합하지 여러 장치를 단일 직렬 포트에 연결할 경우 버스 경합이 발생할 수 있다.
2. 클럭이 조금이라도 다르면 데이터 전송에 오류가 발생하므로 start(시작), stop(정지) 비트를 사용하는데 이는 데이터 속도에 영향을 미친다.
3. 통신에 참여하는 두 장치는 반드시 같은 클럭을 사용해야 한다.
동기식 직렬통신은 데이터를 보낼 때마다 데이터가 전달된다고 알려주는 별도의 클럭 라인을 이용한다. 클럭 라인을 통신 라인에 연결된 다수의 장치(참여 장치)가 공유함으로써 데이터 라인으로 언제 데이터가 들어오는지를 알 수 있도록 해주는 방법이다. 이 방법의 대표적인 시스템이 SPI와 I2C 통신이다. 그러므로 UART처럼 start/stop 비트가 필요 없으며, 통신속도를 공유할 필요도 없다.
SPI는 Serial Peripherial Interface의 약자이며, 1:N 통신을 지원하는 동기식 통신 방식이다. SPI 통신을 위해서는 반드시 하나의 마스터와 하나 이상의 슬레이브 기기가 있어야 한다. SPI는 마스터에서 클럭 신호를 생성한다. 마스터는 클럭을 생성할 때 미리 수신용 클럭 신호도 순서대로 생성한다. 속도가 빠르기 때문에 주로 빠른 데이터 전송속도가 필요한 곳에 많이 사용된다.
SPI 통신을 위하여 4개의 선이 필요하면 각 선은 MISO,MOSI,SCK,SS이다.
MISO(Master In Slave Out): 슬레이브에서 마스터로 데이터를 출력하기 위한 선
MOSI(Master Out Slave In): 마스터에서 슬레이브로 데이터를 출력하기 위한 선
SCK: Clock 선
SS(Slave Select): 데이터를 송수신 할 슬레이브를 선택하기 위한 선
SPI의 단점은 필요한 핀의 개수가 비효율적이라는 것이다. SPI 버스를 사용하여 단일 마스터를 단일 슬레이브에 연결하려면 기본적으로 4개의 회선이 필요하다. 그리고 추가 슬레이브 개수만큼 마스터에서는 SS신호선이 늘어나게 되므로 물리적으로 비효율적이다.
I2C(혹은 IIC)라는 용어는 'Inter Integrated Circuits'를 의미한다. 그리고 일부에서는 I2C 또는 I 제곱 C 또는 2와이어 인터페이스 프로토콜 (TWI)로 표시되지만 모두 동일한 의미이다. I2C는 동기식 통신 프로토콜의 의미로, 정보를 공유하는 두 장치 모두 공통 클럭 신호를 공유한다. 정보를 공유하기 위해 두 개의 신호선이 필요하다. 그 중 하나는 Clock 신호에 사용되고 다른 하나는 데이터 송수신에 사용된다.
I2C 통신은 Philips에 의해 처음 소개되었다. 두 개의 신호선을 이용하여 두 개의 장치에 연결된다. 여기서 한 장치는 마스터이고 다른 장치는 슬레이브이다. 통신은 항상 마스터와 슬레이브 사이에서 발생한다. I2C 통신의 장점은 하나 이상의 슬레이브를 마스터에 연결할 수 있다는 것이다.
I2C에서는 Master와 Slave의 조합이 원칙으로 되어있다. 통신의 주도권은 항상 Master가 있고 Master의 요청에 따라 Slave가 조건을 충족하면 응답한다. 따라서 Slave끼리 통신하거나 Slave에서 Master에 요청을 보낼 수는 없다.