Существует множество материалов, доступных в течение всей недели. Например, вы найдете хорошую информацию о https://i2c.info/. Также, если вы посмотрите на листы данных микроконтроллеров, таких как ATMega328p , вы также можете найти очень подробные описания.
Обычная процедура выглядит следующим образом:
- Условие START при главной настройке (переход от HIGH к LOW SDA, когда SCL находится в HIGH)
- Master отправляет I2 C адрес устройства (обычно 7-битный адрес + бит0 = 0 для записи)
- Slave отправляет: ACK
- Ведущий отправляет I2 C адрес регистра, который вы хотите прочитать (8 бит)
- Ведомые отправляет: ACK
- Ведущий отправляет повторный пуск (ВЫСОКИЙ - НИЗКИЙ переход SDA, в то время как SCL ВЫСОКИЙ)
- Отправить I2 C адрес устройства (7-битный адрес + бит0 = 1 для чтения)
- Подчиненные посылки: ACK
- Подчиненные посылки : MSB запрошенного регистра
- Мастер отправляет: ACK
- Ведомый отправляет: младший бит запрошенного регистра (если адрес регистра фактически содержит более одного байта)
- Мастер отправляет: NACK (сообщить Slave, что он получил все ожидаемые данные)
- Мастер посылает STOP (переход SDA с НИЗКОГО на ВЫСОКИЙ, в то время как SCL ВЫСОКИЙ)