Я пытаюсь резюмировать общее описание и не могу придумать, как это сказать. Опишите, как вы общаетесь с внешним периферийным устройством по шине I2C? Может со ступеньками
Опишите, как вы взаимодействуете с внешним периферийным устройством по шине I2C.
Ответы (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