PHPoC는 2선식 직렬 버스 통신방식인 I2C를 제공합니다.
I2C 데이터는 8비트 단위로 전송됩니다. 다음은 I2C 데이터의 구성을 나타낸 예 입니다.
I2C 데이터의 시작과 종료 조건은 다음과 같습니다.
구분 | SCL | SDA |
---|---|---|
시작조건 | HIGH | HIGH > LOW |
종료조건 | HIGH | LOW > HIGH |
PHPoC의 I2C는 7비트 주소지정방식을 사용합니다. 주소 데이터의 LSB는 읽기 또는 쓰기를 나타내는 비트 입니다.
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 |
다음은 4개의 I2C 데이터 통신 시나리오 입니다. 음영 표시가 되지 않는 부분은 마스터가 전송한 데이터이고, 음영 표시가 된 부분은 슬레이브가 전송한 데이터 입니다.