I2C
통신

I2C

I2C란

 

I2C(Inter-Intergrated Circuit, 또는 TWI - Two Wire Interface)는 복수 개의 슬레이브 장치가 복수개의 마스터 장치와 통신하기 위한 프로토콜이다. SPI와 마찬가지로 하나의 완성품을 구성하는 요소들 간의 근거리 통신을 위해 고안되었다.

 

정식 명칭은 I 2C이다. 따라서 I2C는 "아이투씨"가 아니라 "아이스퀘어드씨"라고 부르는 것이 맞다. Inter-IC라고도 부르지만, 잘 사용되지는 않는다. 주로 MCU, EEPROM, ADC, DAC, I/O 인터페이스와 같은 저속의 임베디드 시스템의 주변장치들(Peripheral)에 사용된다

 

하나의 마스터와 다수의 슬레이브로 연결이 구성되며, 마스터에서 기준클럭(SCL)을 생성하고, 이 클럭에 맞춰 데이터(SDA)를 전송 및 수신합니다.

 

출처 : https://www.circuitbasics.com/wp-content/uploads/2016/01/Introduction-to-I2C-Single-Master-Single-Slave.png

 

각 송신과 수신은 구분(송신과 수신이 동시에 이루어지지 않음)되어 있는 반이중(Half-Duplex) 방식입니다.

 

각 슬레이브는 개별 주소(어드레스)를 가지고 있으며, 이 주소를 통해 식별이 가능합니다.

즉, 기준클럭과 데이터는 I2C 네트워크의 모든 디바이스에게 전달되고, 해당 주소를 가진 디바이스만 응답하는 방식으로 서로 데이터를 주고 받습니다.

 

출처 : 위키백과

 

SDA, SCL 선은 기본 값(디폴트)으로 HIGH인 상태여야 합니다. 그러므로 이 두 개의 선이 HIGH인 상태가 되기 위해서는 반드시 버스에 PULLUP 저항을 달아주어야 합니다. 왜냐하면  I2C에서 사용되는 두 선은 SDA와 SCL로 구성되어 있습니다. 통신이 개시되었을 때 SDA는 데이터를 주고 받는 역할을 하고 SCL은 동기화를 위한 CLOCK 역할을 합니다. 여기서 Master와 Slave 각각에 SDA와 SCL을 바로 연결해주기만 하면 되는 것이죠. 그러나 이러한 회로만으로는 오픈 드레인(회로에 + 전압이 걸리지 않는 상황) 상태가 되기 때문에 SDA와 SCL 회로에 풀업 저항(Pull-up resistor)을 달아 전압을 공급해 줘야 합니다. 각각의 신호선은 PULLUP 저항으로 연결되어 있어서 어떤 장치도 신호선을 LOW로 만들지 않는한 신호는 HIGH로 유지 됩니다.

 

장점

  • SDA와 SCL 두 가닥의 선만으로 데이터 송수신이 가능하다.
  • 동기식 통신이므로 비동기식 통신인 UART 등에 비해 안정적이다.
  • BUS형태로 한개의 I2C MASTER에 다수의 I2S SLAVE 장치를 연결 가능하다.

단점

  • 속도가 느리다.(표준 모드 100kbps) UART보단 빠르지만 SPI에 비교하면 느리기 때문에 애매한 경우가 많다.
  • 반이중 통신이므로 한쪽에서 데이터를 보내는 중일 때는 반대편에서 데이터 전송이 불가능하다.
  • 구조상 복잡하기 짝이없어서 사용하기가 힘들다.
  • 그냥 선만 연결해주면 되는 다른방식에 비해서 전송을 위해서는 별도의 회로를 구성해줄 필요성이 있다.

'통신' 카테고리의 다른 글

SPI  (0) 2022.02.16
LoRa  (0) 2022.02.15
WIFI  (0) 2022.02.14
Bluetooth  (0) 2022.02.14
UART  (0) 2022.02.11