Обзор I2C


PHPoC обеспечивает I2C, двустрочный шинный интерфейс.

Структура данных I2C

Данные I2C всегда передаются в 8-битном блоке/юните. Структура данных I2C выглядит следующим образом:

i2c_overview_01

Условия запуска и остановки

Условия запуска и остановки I2C выглядят следующим образом:

Условие SCL SDA
Start HIGH HIGH > LOW
Stop HIGH LOW > HIGH

Адресация ведомого устройства

PHPoC использует 7-битную адресацию ведомого устройства. LSB байта адреса определяет, что кадр предназначен для чтения или записи.

i2c_overview_02

Условия чтения/записи

Связь I2C состоит из чтения или записи данных от ведущего устройства.

Раздел SCL SDA
Read 8-й бит - HIGH HIGH
Write 8-й бит - HIGH LOW

ACK / NACK

Как ведущий I2C, так и ведомый отправляют подтверждение (ACK), когда принимают 8-битовые данные. Правильное подтверждение осуществляется выходом HIGH на 9-м бите. Если состояние шины находится в HIGH, то данные еще не получены.

Раздел SCL SDA
Подтверждение/Acknowledgement(ACK) 9-й бит - HIGH LOW
Отсутствие подтверждения/No Acknowledgement (NACK) 9-й бит - HIGH HIGH

Сценарий связи I2C

4 различных сценария связи I2C заключаются с следующем: белые области фона являются выходными данными ведущего, а серые области фона - выходными данными ведомого.

Успешная запись данных

i2c_overview_03

Ошибка при записи данных

i2c_overview_04

Успешное чтение данных

i2c_overview_05

Ошибка при чтении данных

i2c_overview_06