Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
3555
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

I2C

412

называется повторным START-условием (или RESTART-условием). Ведущее устройство снова отправляет адрес ведомого, но на этот раз транзакция запускается в режиме чтения (обратите внимание на R, выделенную жирным шрифтом на рисунке 5). Ведомое устройство теперь передает содержимое желаемых регистров, и ведущее устройство подтверждает каждый отправленный байт. Ведущее устройство завершает транзакцию, выдавая NACK (это действительно важно, как мы увидим далее) и STOP-условие.

14.1.1.7. Удержание синхросигнала

Иногда скорость запроса данных ведущим устройством может превышать способность ведомого устройства предоставлять эти данные. Это происходит, потому что данные еще не готовы (например, ведомое устройство не выполнило аналого-цифровое преобразование), или потому что предыдущая операция еще не завершилась (скажем, EEPROM, которая еще не завершила запись в энергонезависимую память и должна закончить это, прежде чем она сможет обслуживать другие запросы).

В этом случае некоторые ведомые устройства будут выполнять то, что называется удер-

жанием синхросигнала (clock stretching). При удержании синхросигнала ведомое устройство приостанавливает транзакцию, удерживая линию SCL на НИЗКОМ уровне. Транзакция не может быть продолжена до тех пор, пока линия снова не будет освобождена. Удержание синхросигнала не является обязательным, и большинство ведомых устройств не включают в себя драйвер для работы с линией SCL, поэтому они не могут удерживать синхросигнал (в основном, для упрощения аппаратной реализации интерфейса I²C). Как мы обнаружим позже, микроконтроллер STM32, сконфигурированный в режиме ведомого I²C-устройства, может дополнительно реализовывать режим удержания синхросиг-

нала.

14.1.2.Наличие периферийных устройств I²C в микроконтроллерах STM32

В зависимости от типа семейства и используемого корпуса микроконтроллеры STM32 могут предоставлять до четырех независимых периферийных устройств I²C. Таблица 1 резюмирует доступность периферийных устройств I²C в микроконтроллерах STM32, оснащающих все шестнадцать плат Nucleo, которые мы рассматриваем в данной книге.

Для каждого периферийного устройства I²C и используемого микроконтроллера STM32 в таблице 1 показаны выводы, соответствующие линиям SDA и SCL. Более того, более темные ряды показывают альтернативные выводы, которые можно использовать во время разводки платы. Например, для микроконтроллера STM32F401RE, мы видим, что периферийное устройство I2C1 отображается на PB7 и PB6, при этом PB9 и PB8 также могут использоваться в качестве альтернативных выводов. Обратите внимание, что периферийное устройство I2C1 использует одинаковые выводы I/O во всех микроконтроллерах STM32 с корпусом LQFP-64. Это яркий пример совместимости между выводами, предлагаемый микроконтроллерами STM32.