코드를 느껴바라

[네트워크] I2C 통신 인터페이스 개요 본문

개발/임베디드(Embedded)

[네트워크] I2C 통신 인터페이스 개요

feelTheCode 2026. 2. 6. 00:12

I2C (Inter-Integrated Circuit) Communication Interface

임베디드 시스템에서 장치 수가 늘어나기 시작하면
UART는 금방 한계를 드러낸다.
핀은 부족하고, 연결해야 할 장치는 많아진다.

이 지점에서 등장하는 것이 I2C 통신 인터페이스다.
I2C는 적은 핀 수로 여러 장치를 하나의 버스에 연결할 수 있도록 설계된
대표적인 버스 기반 직렬 통신 인터페이스다.


I2C란 무엇인가

I2C
(Inter-Integrated Circuit)

I2C는 이름 그대로
칩과 칩 사이의 통신을 목적으로 만들어진 인터페이스다.

특징은 아주 명확하다.

  • 두 개의 선
  • 여러 장치 연결 가능
  • 주소 기반 통신

UART처럼 1:1로만 연결하는 방식이 아니라,
여러 슬레이브 장치를 하나의 선로에 매달아 쓰는 구조다.


두 개의 선으로 어떻게 통신하나

I2C는 다음 두 신호선을 사용한다.

  • SCL (Serial Clock Line)
    → 클럭 신호
  • SDA (Serial Data Line)
    → 데이터 신호

이 두 선은 모든 장치가 공유한다.
송신용 선, 수신용 선이 따로 존재하지 않는다.

그래서 I2C는 구조적으로
전이중이 아닌 반이중 통신이다.


I2C는 동기 통신이다

I2C는 UART와 다르게 클럭을 사용한다.
마스터가 SCL을 생성하고,
모든 슬레이브는 이 클럭에 맞춰 데이터를 주고받는다.

이 덕분에,

  • Baud Rate 개념이 없음
  • 비트 샘플링 타이밍 문제 없음

대신,

  • 클럭을 누가 만들지
  • 버스를 누가 제어하는지

가 중요해진다.


마스터와 슬레이브 구조

I2C는 기본적으로 마스터–슬레이브 구조를 따른다.

  • 마스터
    → 클럭 생성
    → 통신 시작 및 종료 제어
  • 슬레이브
    → 주소가 호출될 때만 응답

여러 개의 슬레이브가 같은 SDA/SCL 선에 연결되어 있어도,
주소(Address) 덕분에 충돌 없이 통신할 수 있다.


주소 기반 통신이라는 개념

I2C 통신은 항상 주소 전송으로 시작한다.

마스터는 먼저
“지금부터 누구랑 통신할 건지”를 버스에 알린다.

이 주소를 보고

  • 해당 주소를 가진 슬레이브만 응답하고
  • 나머지는 조용히 무시한다

이게 가능한 이유는
모든 장치가 항상 SDA를 감시하고 있기 때문이다.


I2C의 시작과 끝은 신호로 구분된다

I2C에는 별도의 프레임 시작 비트가 없다.
대신 선의 상태 변화 자체가 의미를 가진다.

  • START 조건
    → SCL이 High일 때 SDA가 High → Low
  • STOP 조건
    → SCL이 High일 때 SDA가 Low → High

이 두 신호로
모든 장치는 “통신이 시작됐다 / 끝났다”를 인지한다.


ACK / NACK의 존재

I2C에서는 데이터를 주고받을 때마다
응답 비트가 반드시 따라온다.

  • ACK (0)
    → 정상 수신
  • NACK (1)
    → 수신 거부 또는 종료 의사

이 ACK/NACK 덕분에
I2C는 UART보다 신뢰성이 높은 통신이 된다.


I2C의 물리적 특징

I2C의 SDA와 SCL은 오픈 드레인(Open-Drain) 방식이다.

즉,

  • 직접 High를 만들지 못함
  • Low만 당길 수 있음
  • High는 풀업 저항에 의해 형성됨

이 구조 덕분에,

  • 여러 장치가 같은 선을 공유해도 충돌이 나지 않고
  • 멀티 슬레이브 환경이 가능해진다

대신 속도는 빠르지 않다.


I2C의 성격 정리

I2C는 이런 통신이다.

  • 핀 수 최소화
  • 여러 장치 연결 가능
  • 주소 기반 통신
  • ACK 기반 신뢰성
  • 속도는 느린 편

그래서 I2C는

  • 온도 센서
  • EEPROM
  • RTC
  • 간단한 디바이스 제어

같은 저속·제어 중심 통신에 최적화돼 있다.

 

출처 및 참고 문헌

 

Embedded System | ShareTechnote

I2C / TWI I2C or I2C came from the term Inter Integrated Circuit. You see two 'I's and one 'C' here. That's how 'I2' or 'I2' came from. Then, what does it mean ? What does it do ? Since I2C is implemented by only Two Wires (SDA, SCL), it is also called TWI

www.sharetechnote.com

 

반응형