요즘은 궁금한 점을 빠르게 해결하기 위해 가장 먼저 하는 일은 인터넷 검색일 것이다. 처음 I2C 프로토콜이라는 용어를 접했을 때 인터넷 검색 결과는 다음과 같았다.

 
Inter-Integrated Circuit(I2C) 프로토콜은 IC 사이에 통신 링크를 제공하는 양방향 2 와이어 직렬 버스

이것만으로도 무슨 뜻인지는 알 수는 있으나, 여전히 많은 궁금증들이 남아 있었다. I2C란 정말로 무엇을 말하는가? 어떤 디바이스들이 I2C를 사용하는가? I2C를 사용하면 시스템 내의 어떤 문제들을 실제적으로 해결할 수 있는가?

I2C는 동일한 2와이어 버스로 프로세서, 마이크로컨트롤러(MCU), ASIC 같은 마스터 디바이스가 여타 주변장치와 통신할 수 있도록 하기 위해 널리 사용되고 있는 통신 프로토콜이다. 2와이어 중 하나의 라인은 데이터 전송에 사용되고, 나머지 라인은 클록 신호에 사용된다. 마치 2차선 고속도로 같은 것이라고 이해할 수 있다. 각각의 차선으로 차들이 한 쪽 끝에서 다른 쪽 끝으로 주행하듯이, 데이터 패킷이 마스터(프로세서, MCU, ASIC)에서 주변장치(온도 센서, 습도 센서 등)로 전송된다.

이러한 것이 I2C라면, 왜 I2C를 사용하는가? I2C를 사용하면 다중의 주변장치를 동일 버스 상으로 손쉽게 구현할 수 있기 때문이다. 예를 들어서 다수의 센서를 사용해 서버의 온도를 모니터링할 수 있다. I2C 프로토콜은 단일 버스로 여러 디바이스를 지원할 수 있도록 설계됐다. 이와 달리 SPI(serial peripheral interface) 같은 여타 프로토콜은 두 지점간의 단일 디바이스를 지원하도록 설계됐다. 또한, 2와이어 I2C 인터페이스는 4와이어 SPI 인터페이스에 비해서 배선을 간소화할 수 있으며 범용 입/출력(GPIO)을 줄일 수 있다.

TI의 포트폴리오는 I2C 트리를 구축하기 위한 용도로 그림 1에서 보는 것과 같이 3가지 기능으로 구분할 수 있다. 버퍼드 변환기, I/O 확장기, I2C 스위치가 그것이다.

[그림 1] 각기 다양한 I2C 기능적 디바이스로 이루어진 전자 시스템

 

I2C 버퍼드(버퍼 기능이 있는) 변환기는 긴 거리의 배선에 걸쳐서 신호가 저하되거나 IC들 사이에 전압이 불일치한 경우에 사용하기에 적합하다. 예를 들어 3.3V MCU I2C I/O와 5V 온도 센서 사이에 전압이 불일치한다면 PCA9306 같은 I2C 전압 변환기를 사용할 수 있다. 또한, 똑같이 긴 배선 거리일 때 전압이 불일치하면 TCA9617B 같은 버퍼드 변환기 제품을 사용해 전압 차이를 극복하고 리프레시된 신호를 출력할 수 있다.

I2C I/O 확장기는 이름 그대로를 뜻한다. IO 확장기를 사용하면, 선택된 프로세서에서 가능한 포트 수가 부족할 때 [그림 2]에서와 같이 I/O 수를 확장할 수 있다. 이들 디바이스는 I2C 버스 상의 디바이스와 직접적으로 통신할 수 있다는 점에서 표준적 GPIO 확장기와 다르다. TI의 확장기 제품들은 채널 수, 리셋 핀, 레벨 시프팅을 비롯해 특정한 시스템 요구를 충족하도록 다양한 기능들을 제공한다.

 

[그림 2] 마이크로컨트롤러나 프로세서에 I/O 확장기를 사용해 다수의 주변장치 제어

 

I2C 스위치는 두 가지 문제를 해결할 수 있다. 첫 번째 문제는 동일 버스 상의 두 디바이스가 동일한 어드레스일 때 흔히 발생되는 어드레스 충돌에 관련된 것이다. 예를 들어 어떤 시스템이 동일 I2C 버스 상으로 2개의 온도 센서와 2개의 습도 센서를 사용하고 이들 모든 센서가 어드레스가 0xFF라고 했을 때, [그림 3]에서 같이 I2C 스위치를 사용함으로써 한 번에 한 센서로 전환할 수 있다. 두 번째 문제는 전력 소모에 관한 것이다. I2C 스위치는 한 번에 I2C 버스의 한 부분만 구동할 수 있으므로 버스의 사용되지 않는 부분은 전력이 낮아진다.

 

[그림 3] 8개 채널을 제공하는 I2C 스위치 예

 

인터넷에서는, I2C를 사용하면 시스템 설계자가 견고한 시스템 제어를 손쉽게 구현할 수 있다. I2C는 유용한 프로토콜일 뿐만 아니라, 시스템 차원에서 이로운 다양한 기능들을 가진 디바이스라고 말한다. 버퍼드 리피터, I/O 확장기, I2C 스위치를 사용함으로써 I2C 버스 구현을 특정한 설계 목표에 맞게 향상시키고, 확장하고, 수정할 수 있다.

<자료제공: 텍사스인스트루먼트>

이 기사를 공유합니다
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지