1. 개요
Inter-Integrated Circuit필립스에서 개발한 통신 방식이다. 원 목적은 DAC등의 칩셋과 제어칩셋간 사운드 데이터를 전송하기 위한 통신용으로 사용하기 위한 통신규격이지만[1] 현재는 IC간 통신으로 많이 쓰이며 여러 장비를 연결할수 있다는 장점 때문에[2] 센서류에서 많이 활용된다.
2. 장점
- SDA와 SCL 두 가닥의 선만으로 데이터 송수신이 가능하다.
- 동기식 통신이므로 비동기식 통신인 UART 등에 비해 안정적이다.[3]
- BUS형태로 한개의 I2C MASTER에 다수의 I2S SLAVE 장치를 연결 가능하다.
3. 단점
- 속도가 느리다.(표준 모드 100kbps) UART보단 빠르지만 SPI에 비교하면 느리기 때문에 애매한 경우가 많다.[4]
- 반이중 통신이므로 한쪽에서 데이터를 보내는 중일 때는 반대편에서 데이터 전송이 불가능하다.
- 구조상 복잡하기 짝이없어서 사용하기가 힘들다.[5]
- 그냥 선만 연결해주면 되는 다른방식에 비해서 전송을 위해서는 별도의 회로를 구성해줄 필요성이 있다.[6]
[1]
따라서 I2C에서 파생된
I2S라는 규격이 있으며 이규격은 사운드 칩셋 쪽에서 많이 쓰인다.
[2]
UART나
SPI와는 다르게 통신규격에서 통신 주소를 지정해놓으며 7bit로 128개의 공간을 가지지만 16개의 예약된 공간을 제외한 112개의 노드를 동시 연결할 수 있다. 하지만 실제로 112개까지 연결하는 경우는 거의 없고 이 경우에는 TCP/IP를 더 많이 사용한다.
[3]
다만 UART도 필요하면 동기식으로 쓸수있다. 복잡해지는 관계로 그렇게 안할뿐.
[4]
SPI는 클럭속도에 따라서 수십 Mbps 수준의 통신 속도도 쓸수있다. UART는 이거보단 느리지만 대신에 이쪽은 전이중 통신이 된다는걸 고려해야 된다.
[5]
UART나 SPI 같은 경우에는 제어 레지스터가 3~4개 정도 뿐이지만 I2C는 제어레지스터가 5개를 넘어가고 주소값에서부터 전송 플래그 상태까지 확인해줘야될 부분이 많다.
[6]
UART는 접지만 잘연결되어있고 2선만 꼽혀있으면 통신이 잘되지만 I2C는 풀업저항을 사용해줘야된다. 센서모듈은 내부에 풀업저항을 내장하고 있는 경우가 많지만 직접 보드를 설계할 경우 사전에 풀업저항에 대한 고려가 있어야된다.