I2C 개요


PHPoC는 2선식 직렬 버스 통신방식인 I2C를 제공합니다.

I2C 데이터 구성

I2C 데이터는 8비트 단위로 전송됩니다. 다음은 I2C 데이터의 구성을 나타낸 예 입니다.

i2c_overview_01

데이터 시작과 종료

I2C 데이터의 시작과 종료 조건은 다음과 같습니다.

구분 SCL SDA
시작조건 HIGH HIGH > LOW
종료조건 HIGH LOW > HIGH

슬레이브 주소지정방식

PHPoC의 I2C는 7비트 주소지정방식을 사용합니다. 주소 데이터의 LSB는 읽기 또는 쓰기를 나타내는 비트 입니다.

i2c_overview_02

읽기/쓰기

I2C 통신은 마스터가 읽기 또는 쓰기 프레임을 전송하면서 시작됩니다.

구분 SCL SDA
읽기 8번째 HIGH 구간 HIGH
쓰기 8번째 HIGH 구간 LOW

응답 확인

I2C 마스터와 슬레이브는 상대방으로부터 8비트 데이터를 정상적으로 받으면 응답 확인(ACK)을 보냅니다. 정상적인 응답 확인은 SCL의 9번째 HIGH구간에서 LOW를 출력함으로써 이루어집니다. 해당 구간이 HIGH라는 것은 상대방이 데이터를 수신하지 못했다는 것을 의미합니다.

구분 SCL SDA
응답 확인(ACK) 9번째 HIGH 구간 LOW
응답 미확인(NACK) 9번째 HIGH 구간 HIGH

I2C 데이터 통신 시나리오

다음은 4개의 I2C 데이터 통신 시나리오 입니다. 음영 표시가 되지 않는 부분은 마스터가 전송한 데이터이고, 음영 표시가 된 부분은 슬레이브가 전송한 데이터 입니다.

쓰기 데이터 전송 성공

i2c_overview_03

쓰기 데이터 전송 실패

i2c_overview_04

읽기 데이터 전송 성공

i2c_overview_05

읽기 데이터 전송 실패

i2c_overview_06