Перейти к содержимому

#20. SPI (Serial Peripheral Interface)

Шина SPI является широко используемым последовательным интерфейсом для связи со многими распространенными аппаратными устройствами, включая дисплеи, карты памяти и датчики. Процессоры STM32 имеют несколько интерфейсов SPI, и каждый из этих интерфейсов может взаимодействовать с несколькими устройствами. Далее попробуем использовать шину SPI для взаимодействия с широко доступными микросхемами памяти EEPROM. Эти чипы обеспечивают энергонезависимую память для встраиваемых систем и часто используются для хранения ключевого параметра и данных о состоянии.

SPI Protocol Block Diagram

Каждый экземпляр шины SPI имеет одного главного и одного или нескольких подчиненных. Хотя STM32 может быть настроен в любой роли, здесь мы рассмотрим только тот случай, когда он настроен как мастер. На рисунке четыре однопроводных сигнала — три от ведущего и один от подчиненного. Один из этих сигналов, SS (для «выбора ведомого»), должен дублироваться для каждого ведомого, подключенного к шине. Вся связь контролируется ведущим, который выбирает подчиненное устройство, с которым он хочет установить связь, путем понижения соответствующей линии SS, а затем заставляет одно слово (обычно один байт) последовательно передаваться ведомому устройству по выходу MOSI (« master out, slave in ») и одновременно принимает один байт от slave по сигналу MISO (« master in, slave out »). Эта передача осуществляется путем генерации 8 тактовых импульсов по сигналу SCK («последовательный тактовый сигнал»).

Логическое поведение шины SPI

Основной механизм передачи данных можно представить в виде пары связанных сдвиговых регистров, как показано на рисунке. На этом рисунке данные смещены (in), начиная с самого старшего бита.
Фактическое поведение протокола иллюстрируется временной диаграммой. Ведущий инициирует связь с ведомым, понижая SS. Обратите внимание, что сигнал MISO переходит из состояния высокого импеданса (трех состояний) после выбора ведомого. Мастер контролирует передачу с 8 импульсами на SCLK. На этом рисунке данные «синхронизируются» в регистрах сдвига главного / подчиненного на восходящих фронтах тактовых импульсов, а новые данные приводятся на падающих фронтах тактовых импульсов. К сожалению, конкретная связь между фронтами тактовых импульсов и данными зависит от конфигурации — существует четыре возможных тактовых режима; однако для ЖК-дисплея необходим показанный режим (обычно называемый CPOL = 0, CPHA = 0).

SPI Protocol Timing

Добавить комментарий