**I2C (Inter-Integrated Circuit)**는 마이크로컨트롤러와 주변 장치들 간에 데이터를 교환하기 위해 필립스(현 NXP Semiconductors)에 의해 개발된 직렬 통신 프로토콜입니다. 주로 짧은 거리의 통신에 사용되며, 두 개의 신호선만을 사용한다는 큰 장점이 있습니다.

 

1. I2C 통신의 기본 특징

  • 2-와이어 통신: I2C는 단 두 개의 신호선만 사용합니다.
    • SDA (Serial Data Line): 데이터를 송수신하는 양방향 데이터 선입니다.
    • SCL (Serial Clock Line): 통신 타이밍을 동기화하기 위한 클럭 신호 선입니다.
  • 마스터-슬레이브 구조:
    • 마스터(Master): 통신을 시작하고 클럭 신호(SCL)를 생성하며, 데이터 전송을 제어하는 장치입니다.
    • 슬레이브(Slave): 마스터의 요청에 응답하며, 고유한 **주소(Address)**를 가집니다. 하나의 마스터에 여러 개의 슬레이브(최대 127개, 7비트 주소 기준)를 연결할 수 있습니다.
  • 동기식 통신 (Synchronous): SCL 클럭 신호를 사용하여 데이터 전송의 타이밍을 맞추므로, 별도의 통신 속도(Baud Rate) 설정이 필요 없습니다.
  • 반이중 통신 (Half-Duplex): SDA 선 하나로 데이터를 주고받기 때문에, 송신과 수신이 동시에 이루어질 수 없습니다.
  • 풀업 저항 (Pull-up Resistor): SDA와 SCL 선 모두 Open-Drain 또는 Open-Collector 방식으로 작동하기 때문에, 통신 버스가 유휴 상태(Idle)일 때 High 상태를 유지하도록 외부에 풀업 저항이 반드시 필요합니다.

2. I2C 통신의 동작 원리 (프로토콜)

I2C 통신은 다음과 같은 주요 단계로 이루어집니다.

  1. 시작 조건 (START Condition, S):
    • SCL이 High인 상태에서 SDA가 High에서 Low로 떨어질 때(Falling Edge) 마스터가 통신 시작을 알립니다.
  2. 슬레이브 주소 전송 및 R/W 비트 (Address Transmission):
    • 마스터는 통신하고자 하는 슬레이브의 7비트 주소를 전송합니다.
    • 이어서 1비트의 R/W (Read/Write) 비트를 전송합니다. ('0'은 쓰기, '1'은 읽기 요청을 의미합니다.)
  3. ACK/NACK 응답 (Acknowledge):
    • 주소가 일치하는 슬레이브는 9번째 클럭에서 SDA 선을 Low로 끌어내려 ACK (Acknowledge) 신호를 보냅니다. 통신 준비가 안 되었거나 주소가 일치하는 슬레이브가 없으면 High를 유지하여 **NACK (Not Acknowledge)**가 됩니다.
  4. 데이터 전송 (Data Transfer):
    • 마스터와 선택된 슬레이브 간에 8비트(1바이트) 단위로 데이터가 전송됩니다.
    • 쓰기(Write): 마스터가 데이터를 전송하고 슬레이브가 ACK를 보냅니다. 레지스터 주소도 데이터로 전송될 수 있습니다.
    • 읽기(Read): 슬레이브가 데이터를 전송하고 마스터가 ACK를 보냅니다. 마스터가 데이터를 충분히 읽으면 마지막 바이트 수신 후 NACK를 보내 슬레이브에게 데이터 전송 종료를 알립니다.
    • 데이터 샘플링: SCL이 High인 순간에 SDA의 데이터 비트를 읽습니다.
  5. 정지 조건 (STOP Condition, P):
    • SCL이 High인 상태에서 SDA가 Low에서 High로 상승할 때(Rising Edge) 마스터가 통신 종료를 알리고 버스를 해제합니다.

3. I2C의 장점 및 단점

장점 단점
2개의 선(SDA, SCL)만 사용해 하드웨어 구성이 간단함. 데이터 전송 속도가 비교적 느림 (최대 3.4Mbps, 일반적으론 100kbps, 400kbps).
다수의 슬레이브 장치를 하나의 버스에 연결 가능 (주소 지정). 통신 오버헤드가 있음 (주소 및 R/W 비트, ACK/NACK).
하드웨어 구현이 비교적 쉬움. 풀업 저항이 필수.

+ Recent posts