I2C는 Inter-Integrated Circuit의 약자로, 여러 장치가 두 개의 와이어 인터페이스를 통해 서로 통신할 수 있게 해주는 널리 사용되는 직렬 통신 프로토콜입니다. 주로 저속 주변 장치를 마더보드, 임베디드 시스템, 또는 마이크로컨트롤러에 연결하는 데 사용됩니다.
I2C는 마스터-슬레이브 아키텍처를 사용하며, 하나의 장치가 마스터로 작동하면서 통신을 시작하고, 다른 장치들이 슬레이브로 작동하여 마스터의 요청에 응답합니다. 이 프로토콜은 멀티 마스터 구성을 지원하여, 여러 장치들이 동일한 버스에 연결되어 서로 통신할 수 있습니다.
I2C 버스에서 중요한 두 개의 와이어는 다음과 같습니다:
I2C 통신은 다양한 속도로 이루어질 수 있으며, 일반적으로 I2C 버스 속도로 불립니다. 가장 흔한 버스 속도는 표준 모드 (최대 100 kbit/s), 고속 모드 (최대 400 kbit/s), 그리고 고속 모드 (최대 3.4 Mbit/s)입니다.
I2C 프로토콜은 마스터 및 슬레이브 장치 간의 통신을 수립하기 위해 시작과 정지 메커니즘을 사용합니다. 시작 조건은 데이터 전송의 시작을 나타내고, 정지 조건은 끝을 나타냅니다. 통신 과정은 다음 단계를 포함합니다:
시작 조건: 마스터 장치는 시작 조건을 전송하여 통신을 시작합니다. 이때 SDA 라인을 낮게 유지하면서 SCL 라인은 높게 유지합니다.
주소 지정: 시작 조건 후, 마스터는 통신을 원하는 슬레이브 장치의 7비트 주소를 전송하고, 그 후 읽기 또는 쓰기 비트를 전송합니다. 읽기 비트는 마스터가 슬레이브로부터 데이터를 읽고자 함을 나타내고, 쓰기 비트는 마스터가 슬레이브에 데이터를 쓰고자 함을 나타냅니다. 버스에 있는 각 슬레이브 장치는 고유한 주소를 가지고 있습니다.
승인: 지정된 주소의 슬레이브가 주소 비트를 수신하면, 승인(ACK) 비트로 응답합니다. ACK는 슬레이브 장치가 SDA 라인을 내리는 것입니다.
데이터 전송: 주소 지정 과정 후, 마스터와 슬레이브는 서로 데이터를 전송할 수 있습니다. 데이터는 8비트 세그먼트로 전송되며, 각 세그먼트 뒤에는 수신 장치로부터의 ACK가 따릅니다. 이 과정은 마스터가 통신을 중지할 때까지 계속됩니다.
정지 조건: 마스터 장치는 SDA 라인을 높게 유지하면서 SCL 라인을 높게 유지함으로써 정지 조건을 생성합니다. 정지 조건은 슬레이브에게 통신이 종료되었음을 알립니다.
데이터 전송 중에는 SCL 라인이 낮을 때만 SDA 라인이 변할 수 있음을 주의해야 합니다. 이는 마스터와 슬레이브 장치 간의 동기화된 통신을 보장합니다.
I2C는 통합 회로 간의 통신을 위해 다양한 전자 시스템에서 널리 사용됩니다. I2C의 일반적인 응용 분야는 다음과 같습니다:
I2C는 온도 센서, 습도 센서, 가속도계 등의 다양한 센서와의 통신에 자주 사용됩니다. 이러한 센서는 각각의 파라미터에 대한 데이터를 제공할 수 있어, 연결된 장치들이 수신된 정보에 기반하여 유효한 결정을 내릴 수 있게 합니다.
LCD 및 OLED 디스플레이와 같은 많은 디스플레이 모듈은 I2C를 사용하여 인터페이스할 수 있습니다. 이는 I2C 프로토콜이 디스플레이 모듈과 제어 장치 간의 쉬운 통신을 허용하기 때문에 다양한 시스템에 디스플레이를 통합하는 것을 단순화합니다.
I2C는 종종 전기적 소거 가능 프로그래머블 ROM (EEPROM) 칩을 프로그래밍하고 읽는데 사용됩니다. EEPROM은 전력이 제거되더라도 데이터를 저장할 수 있는 비휘발성 메모리 장치입니다. I2C 프로토콜은 제어 장치와 EEPROM 간의 효율적인 데이터 전송을 용이하게 합니다.
I2C는 다양한 장치에서 정확한 시간 기록 기능을 제공하기 위해 실시간 클록에 사용됩니다. 이러한 클록은 정확한 시간과 날짜 정보를 유지하며, 데이터 로깅, 일정 관리, 시간 민감 작업과 같은 응용에서 일반적으로 사용됩니다.
I2C (Inter-Integrated Circuit)는 두 개의 와이어 인터페이스를 사용하여 장치들이 서로 통신할 수 있게 해주는 널리 사용되는 직렬 통신 프로토콜입니다. 간단한 아키텍처를 가지고 있으며, 멀티 마스터 구성을 지원하여 여러 장치를 하나의 버스에 연결하는데 유연성을 제공합니다. I2C는 센서 인터페이스, 디스플레이 모듈, EEPROM 프로그래밍, 실시간 클록과 같은 응용에서 일반적으로 사용됩니다. I2C는 제한 사항이 있지만, 다양한 전자 시스템에서 저속 통신을 위해 여전히 인기 있는 선택입니다.