I2C 통신 버스
I2C는 SDA와 SCL 두 가닥으로 마스터와 여러 슬레이브가 통신하는 동기식 직렬 버스다. 저속 주변장치를 적은 핀으로 연결하며, 1980년대 초반 필립스 반도체(현재 NXP 반도체)가 개발했다. 마스터가 통신을 시작하고, 슬레이브는 주소가 맞을 때만 응답한다. 두…
주요 장면
대본
I2C 정의
I2C는 SDA와 SCL 두 가닥으로 마스터와 여러 슬레이브가 통신하는 동기식 직렬 버스다.
저속 주변장치를 적은 핀으로 연결하며, 1980년대 초반 필립스 반도체(현재 NXP 반도체)가 개발했다.
마스터가 통신을 시작하고, 슬레이브는 주소가 맞을 때만 응답한다.
구조와 풀업 저항
두 선 모두 풀업 저항으로 High를 유지하는 오픈 드레인 구조다.
각 장치는 선을 Low로 끌어내리는 방식으로 데이터를 보낸다.
그래서 풀업 저항이 없으면 라인이 High로 올라가지 않는다. 답안에서 자주 감점되는 부분이다.
시작 조건과 정지 조건
시작 조건은 SCL이 High인 동안 SDA가 High에서 Low로 바뀌는 것이다.
정지 조건은 SCL이 High인 동안 SDA가 Low에서 High로 바뀌는 것이다.
두 조건은 데이터 비트와 구별되는 신호이므로 답안에 반드시 함께 쓴다.
패킷 형식과 주소 지정
I2C 패킷은 7비트 슬레이브 주소 뒤에 R/W 비트가 붙는다.
R/W 비트가 0이면 쓰기, 1이면 읽기다. 주소가 맞는 슬레이브만 ACK를 보낸다.
7비트 주소 공간은 128개이며, 예약 16개를 빼면 최대 112개 노드를 수용한다.
통신 절차
통신은 마스터가 시작 조건을 출력하며 시작한다.
이어서 7비트 주소와 R/W 비트를 보내고, 주소가 맞는 슬레이브가 ACK를 보낸다.
데이터는 8비트 단위로 MSB부터 보내며, 9번째 클록에 ACK 또는 NACK로 응답한다.
바이트 전송을 반복한 뒤 정지 조건을 내거나 반복 시작 조건으로 다음 동작을 잇는다.
주소 체계와 중재
실무에서는 대부분 7비트 주소를 쓰고, 10비트 주소는 대형 시스템에 쓰인다.
I2C는 멀티 마스터를 지원한다. 두 마스터가 동시에 송신하면 중재로 한쪽만 통신을 잇는다.
SDA 값이 자기 출력과 다르면 송신을 멈춰 패배를 인정하고, 클럭 동기화로 SCL을 맞춘다.
핵심 정리
마지막으로 핵심을 정리한다. 두 선, 오픈 드레인, 주소 체계가 기본이다.
속도와 주소 범위, 시작·정지 조건, ACK 방향은 숫자와 함께 외운다.
시험에서는 이 정리를 바탕으로 정의, 특징, 패킷 형식을 서술한다.