I²C는 두 신호선으로 여러 저속 장치를 연결하는 동기식 직렬 버스다. 데이터선 SDA와 클럭선 SCL은 오픈드레인 방식으로 동작한다. 장치는 신호선을 낮은 상태로 끌어내리기만 하고, 풀업 저항이 선을 다시 높은 상태로 만든다. 이 구조를 쓰면 한 버스에 장치를 여러 개 붙일 수 있다. 센서, EEPROM, 전원 관리 IC와 제어 장치가 서로 다른 주소로 통신할 수 있어 보드 안팎의 제어 연결에 널리 쓰인다.
I2C 구조
- 신호선
- 데이터선 SDA와 클럭선 SCL 두 가닥
- 동작
- 오픈드레인으로 선을 낮추고 풀업 저항이 다시 높인다
- 주소
- 센서, EEPROM, 전원 관리 IC를 주소로 구분해 한 버스에 연결
통신
- 순서
- START, 주소와 읽기·쓰기 비트, 데이터 바이트, ACK/NACK, STOP
- 충돌
- 주소가 겹치면 보드 설계에서 주소를 나누거나 멀티플렉서로 분리
- 속도 조건
- 버스 정전용량과 풀업 저항이 상승 시간을 정한다
규격 모드
- NXP 정의
- Standard 100, Fast 400, Fast-mode Plus 1M, High-speed 3.4Mbit/s
- 실제 속도
- 붙은 장치와 전기 조건이 허용하는 범위에서 정해진다
SMBus
- 차이
- 같은 2선 구조에 전압·타이밍·명령 프로토콜·시간 제한·오류 검사를 더 구체화
- 쓰임
- 메인보드 센서, 배터리, 메모리 SPD, 전원 관리
- 호환
- 모든 I2C 장치와 SMBus 호스트가 완전히 호환되지는 않는다
- 주의
- 공유 경로에 잘못된 저수준 접근을 보내면 버스가 잠기거나 센서 읽기가 막힌다
통신은 START 조건으로 시작해 주소와 읽기·쓰기 비트, 데이터 바이트, ACK/NACK를 거치고 STOP 조건에서 끝난다. 주소가 같은 장치를 한 버스에 두면 응답이 충돌하므로 보드 설계 단계에서 주소를 나누거나 멀티플렉서로 경로를 분리한다. 통신 품질은 회로의 전기 조건에도 따라 달라진다. 버스 정전용량과 풀업 저항이 신호가 높아지는 시간을 결정하고, 장치 수와 배선 길이가 늘어나면 높은 속도를 유지하기 어려워진다.
NXP의 I2C-bus 규격은 Standard-mode 100kbit/s, Fast-mode 400kbit/s, Fast-mode Plus 1Mbit/s, High-speed mode 3.4Mbit/s 등을 정의한다. 이는 규격이 구분한 동작 모드다. 연결된 모든 장치가 모든 속도를 지원하지 않으므로, 버스는 함께 붙은 장치와 전기 조건이 허용하는 범위 안에서 속도가 정해진다.
SMBus와의 관계
System Management Bus(SMBus)는 I²C와 비슷한 2선 물리 구조를 사용한다. 다만 전압과 타이밍 범위, 명령 프로토콜, 시간 제한, 오류 검사 같은 요구를 더 구체적으로 정한다. 메인보드의 센서, 배터리, 메모리 SPD, 전원 관리에 쓰이는 이유도 장치를 단순히 연결하는 것 이상의 관리 동작을 규칙 안에서 주고받기 때문이다. 물리 구조가 비슷해도 모든 I²C 장치와 SMBus 호스트가 완전히 호환되는 것은 아니다. 지원 범위와 시간 제한이 다를 수 있다.
SMIF가 2024년 10월 공개한 SMBus 3.3.1은 2026년 10월 확인 시 공식 규격 목록에 제공된다. DIMM의 SPD를 읽거나 보드 센서 값을 확인할 때 SMBus 경로는 다른 장치와 함께 쓰일 수 있다. 이 공유 경로에 잘못된 저수준 접근을 보내면 통신이 끊길 수 있다. 그 결과 버스가 잠기거나, 정상적인 센서 읽기가 방해받을 수 있으므로 접근 범위와 대상 장치를 먼저 구분해야 한다.
주소와 레지스터 읽기
일반적인 센서 읽기는 장치 주소로 통신을 시작한 뒤 읽을 레지스터 번호를 보내고, repeated START로 버스를 놓지 않은 채 읽기 방향으로 전환하는 구조다. 데이터시트에 적힌 7비트 주소와 읽기/쓰기 비트까지 붙인 8비트 전송 값을 혼동하면 다른 주소에 접근하게 된다. 장치 주소와 장치 내부 레지스터 주소는 서로 다른 값이다.
I²C의 clock stretching은 대상 장치가 SCL을 낮게 유지해 처리가 끝날 때까지 기다리게 하는 동작이다. SMBus는 시간 제한과 프로토콜 조건을 더 구체적으로 정의하므로, 같은 SDA·SCL 선에 연결해도 긴 대기를 허용하는 I²C 장치가 모든 SMBus 호스트에서 작동하는 것은 아니다. 풀업 전압과 입력 허용 전압도 맞아야 하며, 3.3V와 5V 장치를 단순히 병렬 연결하는 것은 전기적 호환성을 보장하지 않는다.
SPD·전원 관리 IC에는 읽기 전용 정보와 쓰면 동작이 바뀌는 레지스터가 함께 있을 수 있다. 센서가 보이지 않는다고 알려지지 않은 주소에 무차별 쓰기나 초기화 명령을 보내는 것은 진단이 아니다. 제조사가 지원하는 모니터링 경로를 우선하면 공유 버스와 펌웨어의 관리 동작을 방해할 가능성을 줄일 수 있다.
참고 링크
- NXP — I²C 주소·repeated START·clock stretching
- NXP Semiconductors, I2C-bus specification and user manual, UM10204 Rev. 7
- System Management Interface Forum, SMBus Specifications
함께 읽기: 메인보드 구조와 데이터 경로, DIMM과 메모리 폼팩터, 하드웨어 진단 원칙