Опишите, как вы взаимодействуете с внешним периферийным устройством по шине I2C.

Я пытаюсь резюмировать общее описание и не могу придумать, как это сказать. Опишите, как вы общаетесь с внешним периферийным устройством по шине I2C? Может со ступеньками


i2c
person MignolaFan    schedule 17.03.2020    source источник


Ответы (1)


Материалов в сети полно. Например, вы найдете полезную информацию на https://i2c.info/. Кроме того, если вы ищете спецификации микроконтроллеров, таких как ATMega328p вы также можете найти очень подробные описания.

Обычная процедура выглядит так:

  • Условие НАЧАЛА основной настройки (переход SDA с ВЫСОКОГО на НИЗКИЙ, в то время как SCL находится в ВЫСОКОМ состоянии)
  • Мастер отправляет адрес устройства I2C (обычно это 7-битный адрес + бит0 = 0 для записи)
  • Ведомый отправляет: ACK
  • Мастер отправляет адрес регистра I2C, который вы хотите прочитать (8 бит)
  • Ведомый отправляет: ACK
  • Мастер отправляет повторный СТАРТ (переход SDA с ВЫСОКОГО на НИЗКИЙ, пока SCL находится в ВЫСОКОМ состоянии)
  • Отправить адрес устройства I2C (7-битный адрес + бит0 = 1 для чтения)
  • Ведомый отправляет: ACK
  • Подчиненный отправляет: MSB запрошенного регистра
  • Мастер отправляет: ACK
  • Подчиненный отправляет: LSB запрошенного регистра (если адрес регистра фактически содержит более одного байта)
  • Мастер отправляет: NACK (чтобы сообщить ведомому, что он получил все ожидаемые данные)
  • Мастер отправляет STOP (переход SDA из НИЗКОГО в ВЫСОКИЙ, в то время как SCL ВЫСОКИЙ)
person mike    schedule 17.03.2020