nutblog

실무 기반 반도체 지식과 취업·직무 경험을 공유하는 엔지니어링 Blog 입니다.

  • 2025. 4. 30.

    by. nutblog

    많은 개발자들이 I2C 통신은 간단하다고 생각하지만, 속도가 올라가는 순간 그 오해는 깨집니다.
    특히 400kHz 이상의 고속 모드(Fast Mode, Fast Mode Plus)로 동작할 때는 배선, 부품, 신호 품질 관리가 매우 민감해지며,
    설계 실수 하나로 통신이 간헐적으로 끊기거나, 슬레이브 인식 실패, 데이터 에러, 심지어 MCU 전체 리셋으로 이어질 수 있습니다.
    실제로 IoT 기기, 고속 센서 시스템, 전력 모니터링 IC(예: INA226) 등을 사용할 때 1MHz 통신을 설정하는 경우가 많은데,
    이때 안정적인 I2C 통신을 유지하려면 단순한 회로 연결을 넘어선 전략적인 설계가 필요합니다.
    이번 글에서는 400kHz~1MHz I2C 환경에서 통신 신뢰성을 확보하기 위한 실무 중심의 회로/소프트웨어 팁을 정리합니다.


    고속 모드에서의 주요 위험 요소는?

    I2C 속도가 빨라질수록 다음과 같은 문제가 발생할 가능성이 커집니다:

    • 신호 상승/하강 속도가 버스 요구보다 느려짐
    • SDA/SCL 라인 임피던스 증가로 반사 신호 발생
    • 풀업 저항 미세한 차이로 신호 타이밍 깨짐
    • 슬레이브가 클록을 처리하지 못해 NACK 반환
    • 버스 락업(Bus Hang), 프레임 깨짐 현상

    이런 문제는 저속 모드에서는 거의 나타나지 않지만,
    400kHz 이상부터는 노이즈나 부하 용량의 작은 차이도 바로 통신 불량으로 연결될 수 있습니다.


    풀업 저항 – 저항값은 낮게, 타이밍은 빠르게

    고속 I2C 환경에서는 SDA/SCL이 빠르게 High 상태로 복귀해야 하므로,
    풀업 저항의 값은 작게(1kΩ~2.2kΩ 수준) 설정하는 것이 안정적입니다.

    • 표준 모드(100kHz): 4.7kΩ
    • 고속 모드(400kHz): 2.2kΩ
    • 패스트 플러스(1MHz): 1kΩ ~ 1.5kΩ

    단, 풀업 저항이 작아지면 전류 소모가 증가하므로 MCU의 핀 드라이브 능력도 함께 고려해야 합니다.


    라인 배선 – 짧고, 평행하고, GND 인근으로

    고속 신호일수록 물리적인 배선 설계가 매우 중요합니다.
    실제 설계에서는 다음을 지켜야 합니다:

    • SDA/SCL은 최대한 짧고 평행하게 배치
    • 두 신호선은 GND 레이어 바로 위를 통과하게 하여 리턴 경로 확보
    • 슬레이브 수가 많거나 버스 길이가 15cm 이상일 경우, I2C 버퍼(P82B96 등) 추가 고려
    • 멀티 슬레이브 연결 시 ‘스타형 배선’은 피하고 버스형 직렬 구조 유지

    특히 1MHz 환경에서는 한 칩에서 다른 칩으로 갈 때마다 신호 품질이 급격히 나빠질 수 있음을 기억해야 합니다.


    슬레이브의 타이밍 사양 확인 – 데이터시트는 필수

    고속 통신에서 가장 흔한 실수 중 하나는 슬레이브 IC가 고속 I2C를 지원하지 않음에도 400kHz 이상으로 통신하는 것입니다.
    각 I2C 디바이스는 데이터시트에 Max Clock Frequency를 명시하고 있으며,
    이를 초과하면 슬레이브가 ACK 타이밍을 놓쳐 통신 에러가 발생할 수 있습니다.
    특히 일부 저가형 센서나 PMIC는 100kHz까지만 지원하는 경우도 있으므로, 반드시 확인 후 클록 설정해야 합니다.


    MCU 설정 – 클록 소스 안정화와 인터럽트 우선순위

    MCU에서 I2C를 고속으로 설정할 때는 내부 클록이 안정되어야 하고,
    I2C 인터럽트가 다른 작업보다 우선 순위를 높게 갖는 것이 중요합니다.

    • F_CPU 값에 따라 I2C 클록 소스 계산
    • 클록 설정이 정확하지 않으면 SCL 주기가 흔들림
    • DMA를 사용할 경우, I2C 전송 도중 인터럽트 간섭 방지 필요

    또한, 일부 MCU는 고속 모드에서 Glitch Filter, SCL Stretching 기능을 하드웨어로 제공하므로, 이 기능을 적극 활용하세요.


    오실로스코프 측정 – SCL/SDA 파형 꼭 보기

    이론적으로 잘 설계한 회로도 실제 파형을 보지 않으면 놓치는 부분이 많습니다.
    특히 다음과 같은 상황을 체크해야 합니다:

    • SCL이 정확히 400kHz 또는 1MHz 주기로 나오고 있는가
    • SDA 데이터 전환 시 글리치(잡음)나 언더슛/오버슛 발생하는가
    • ACK/NACK 구간이 정상적인 타이밍으로 이루어지는가
    • 신호가 구형파가 아니라 ‘완만한 곡선’이라면 풀업 저항 조정 필요

    노이즈, 반사, GND 문제는 오실로스코프를 보기 전까지는 감지되지 않기 때문에 실측이 필수입니다.

     

    I2C 고속 통신 설계법 – 400kHz~1MHz 환경에서 신뢰성 유지하는 법

     

     

    오류 대응 소프트웨어 루틴

    고속 I2C에서는 통신 실패 시 빠르게 복구하는 소프트웨어가 중요합니다.
    MCU 코드에 다음 루틴을 반드시 포함하세요:

    • 타임아웃: 1~10ms 이내 응답 없으면 중단
    • 재시도: 2~3회 반복 후 오류 로그 남김
    • 버스 리셋: SDA 강제 Low → SCL 9클럭 토글 → Stop 조건 강제 출력

    또한, 디버깅 시에는 I2C 스캐너로 슬레이브 주소 감지부터 시작하여 순차적으로 통신 범위를 좁혀가는 것이 좋습니다.


    고속 I2C는 고속 설계가 필요하다

    I2C 통신이 간단해 보이더라도, 400kHz 이상 고속 환경에서는 완전히 다른 설계가 필요합니다.
    풀업 저항 하나, 라인 길이 몇 cm 차이, 슬레이브 타이밍 오차 하나가 통신 실패로 이어질 수 있기 때문입니다.
    고속으로 설계하려면 하드웨어 구조 + 전원 잡음 + 소프트웨어 루틴까지 통합적으로 관리해야 진정한 안정성을 확보할 수 있습니다.
    I2C는 단순한 2선 통신이 아니라, 디지털 신호 무결성을 종합적으로 시험하는 설계 요소임을 잊지 마세요.


    실무에서 자주 겪는 고속 I2C 문제 사례

    400kHz 이상으로 I2C를 구성하면, 개발 초기에는 정상적으로 동작하다가 양산 환경이나 특정 온도 조건, 케이블 연결 길이에 따라 통신이 간헐적으로 실패하는 문제가 종종 발생합니다.
    특히 슬레이브가 다수 연결된 시스템에서는 특정 디바이스만 응답하지 않거나, SCL 신호가 깨져 클럭 왜곡이 발생하는 경우도 흔합니다.
    이런 문제는 대부분 풀업 저항 미세 불일치, PCB 레이아웃에서의 크로스토크, 슬레이브 내부 클록 소스의 불안정성 등 하드웨어 설계 이슈에서 비롯됩니다.
    따라서 고속 I2C 설계 시에는 단순 ‘연결’ 이상으로 전기적 특성을 계측하고 조정하는 과정이 반드시 필요하며,
    실측 파형을 통한 검증 없이는 어떤 통신도 신뢰할 수 없다는 점을 기억해야 합니다.