I2C와 SMBus
I²C는 두 신호선으로 여러 저속 장치를 연결하는 동기식 직렬 버스다. 데이터선 SDA와 클럭선 SCL은 오픈드레인 방식으로 동작하며 풀업 저항이 신호를 높은 상태로 만든다. 한 버스에 여러 장치를 붙일 수 있어 센서, EEPROM, 전원 관리 IC와 제어 장치에 널리 쓰인다.
통신은 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 호스트가 완전히 호환되는 것은 아니다.
SMBus 3.3.1은 2024년 10월 공개된 현행 규격이다. DIMM의 SPD를 읽거나 보드 센서 값을 확인할 때는 SMBus 경로가 다른 장치와 공유될 수 있으며, 잘못된 저수준 접근은 버스를 잠그거나 센서 읽기를 방해할 수 있다.
출처
- NXP Semiconductors, I2C-bus specification and user manual, UM10204 Rev. 7
- System Management Interface Forum, SMBus Specifications