Опишите, как вы общаетесь с внешним периферийным устройством на шине I2 C - PullRequest
0 голосов
/ 17 марта 2020

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

1 Ответ

0 голосов
/ 17 марта 2020

Существует множество материалов, доступных в течение всей недели. Например, вы найдете хорошую информацию о 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 ВЫСОКИЙ)
...