I2C는 선 두 개(SDA, SCL)로 여러 개의 센서와 표시기를 연결하는 통신 방식입니다. 배선이 간단해서 온도 센서, OLED 화면, 시계 모듈처럼 만능기판 작품에 매우 자주 쓰입니다. 그런데 "분명히 연결했는데 장치가 안 보인다"는 문제가 가장 흔하고, 대부분 풀업 저항, 주소, 배선, 전원 중 하나가 원인입니다. 이 글에서는 I2C 버스의 구조, 풀업 저항 값을 정하는 법, 장치 주소 문제, 안 될 때의 점검 순서를 정리합니다.
I2C의 구조
- SDA: 데이터 선
- SCL: 클럭 선
- 마스터: 통신을 시작하고 클럭을 만드는 장치(마이크로컨트롤러)
- 슬레이브: 센서·표시기 등 장치. 각 장치는 고유한 7비트 주소를 가집니다.
SDA와 SCL은 오픈 드레인 방식입니다. 장치는 선을 Low로만 당길 수 있고, High는 풀업 저항이 전원 쪽으로 끌어올려서 만듭니다. 그래서 풀업 저항이 없으면 선이 올라가지 못해 통신이 되지 않습니다.
| 모드 | 속도 | 비고 |
|---|---|---|
| 표준 모드 | 100kHz | 가장 안정적, 입문 기본 |
| 빠른 모드 | 400kHz | 많은 센서·OLED가 지원 |
풀업 저항 값 정하기
값이 너무 크면 선이 느리게 올라가 신호가 둔해지고, 너무 작으면 장치가 선을 Low로 당길 때 전류가 커져서 문제가 됩니다.
- 일반적인 값: 3.3V·5V 버스에서 4.7kΩ(100kHz), 빠른 모드나 선이 긴 경우 2.2kΩ ~ 3.3kΩ
- 최솟값: 장치가 당길 수 있는 전류(보통 3mA)로 결정됩니다.
R_min ≈ (전원 − 0.4V) ÷ 3mA이므로 3.3V에서 약 1kΩ, 5V에서 약 1.5kΩ입니다. - 최댓값: 선의 용량(C)과 요구되는 상승 시간으로 결정됩니다.
R_max ≈ 상승 시간 ÷ (0.85 × C). 표준 모드의 상승 시간 한도는 1000ns이므로 C = 100pF이면 약 11.8kΩ까지 가능합니다.
SDA와 SCL 각각에 풀업 저항 한 개씩(두 개)을 둡니다. 저항 값 읽는 법은 저항 읽는 법을 참고하세요.
전압 맞추기
I2C의 High는 풀업이 연결된 전원 전압입니다. 3.3V 장치와 5V 장치를 한 버스에 섞으면 안 됩니다.
- 모든 장치가 같은 전압에서 동작하도록 하거나,
- 서로 다르면 양방향 레벨 시프터를 쓰세요(3.3V와 5V 신호 연결).
- 5V 풀업이 3.3V 마이크로컨트롤러 핀에 걸리지 않도록 하세요.
주소와 충돌
각 장치는 7비트 주소(0x08 ~ 0x77 범위의 값)를 가지며 같은 버스에서 겹치면 안 됩니다.
- 센서 모듈에는 주소를 바꾸는 점퍼나 핀(A0, A1)이 있는 경우가 많습니다.
- 같은 종류의 장치를 여러 개 쓰려면 주소 핀으로 나누거나, I2C 멀티플렉서(TCA9548A 등)로 채널을 나눠 쓰세요.
- 어떤 주소가 응답하는지 확인하려면 마이크로컨트롤러로 I2C 스캐너 프로그램을 실행하면 연결된 장치의 주소를 모두 출력합니다.
배선 요령
- 짧게: 100kHz에서 수십 cm 이내가 안정적입니다. 길어지면 선 용량이 늘어 풀업을 줄이고 속도를 낮춰야 합니다.
- SDA와 SCL을 나란히 두되 다른 신호선과 떨어뜨립니다. 클럭 선은 이웃 선에 잡음을 줍니다.
- 공통 접지: 모든 장치의 GND를 연결합니다. 접지가 없으면 신호 기준이 달라 통신이 안 됩니다(전원 레일과 접지 설계).
- 장치마다 100nF을 전원 핀 가까이에 답니다.
- 만능기판에서는 SDA와 SCL을 점퍼선으로 가볍게 연결하고, 풀업 저항은 마이크로컨트롤러 쪽 한 군데에 모아 두면 관리하기 쉽습니다.
안 될 때 점검 순서
| 순서 | 확인 | 방법 |
|---|---|---|
| 1 | 전원 | 장치의 VCC 전압(3.3V/5V)이 맞는지 측정 |
| 2 | 접지 | 모든 GND가 이어져 있는지 도통 시험 |
| 3 | SDA·SCL 위치 | 서로 바뀌지 않았는지, 핀 번호가 맞는지 확인 |
| 4 | 풀업 | 선이 평소 High인지 측정(0V이면 풀업 없음 또는 쇼트) |
| 5 | 전압 | 장치와 마이크로컨트롤러의 논리 전압이 같은지 |
| 6 | 주소 | 스캐너 프로그램으로 주소 확인, 충돌 점검 |
| 7 | 속도 | 문제가 있으면 속도를 100kHz로 낮춰 시험 |
| 8 | 파형 | 오실로스코프나 로직 분석기로 신호 확인(오실로스코프 입문) |
SDA나 SCL이 평소에도 Low라면 어떤 장치가 선을 잡고 있거나 쇼트입니다. 평소에도 High가 아닌 중간 전압이라면 풀업이 없거나 너무 큰 것입니다. 대부분의 문제는 점검표 1~4단계에서 찾을 수 있습니다(완성했는데 동작하지 않을 때: 단계별 점검표).
정리
I2C는 SDA·SCL 두 선과 각각 풀업 저항(보통 4.7kΩ), 공통 접지, 같은 논리 전압, 겹치지 않는 주소로 이루어집니다. 모듈에 풀업이 이미 달려 있는지 확인하고, 선을 짧게 하며, 안 되면 전원과 주소부터 점검하세요. 보드를 만능기판에 올리는 방법은 개발 보드를 만능기판에 올리는 법에서 이어서 볼 수 있습니다.