Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
367
Добавлен:
21.05.2015
Размер:
7.55 Mб
Скачать
    1. Ведущий режим

Когда интерфейс SPI используется как ведущий, автоматическое управление линией SS не производится. Вывод SS необходимо настроить как выход и им необходимо управлять из программы пользователя. Если к шине подключено несколько подчиненных и/или ведущих устройств, то ведущий модуль SPI может использовать любые имеющиеся у МК линии ввода-вывода общего назначения для управления линией SS каждого подключенного к шине подчиненного устройства.

После записи байта в регистр данных включается в работу генератор синхронизации шины SPI и выполняется передача сдвигом восьми бит данных в подчиненное устройство. По завершении сдвига одного байта, генератор синхронизации шины SPI останавливается и устанавливается флаг прерывания модуля SPI. Записью нового байта в регистр данных ведущее устройство может продолжить передачу данных. Кроме того, он может сигнализировать о завершении передачи данных установкой низкого уровня на линии SS. Последний принятый байт данных сберегается в буферном регистре.

Если вывод SS настроен как вход, необходимо учитывать, что работа ведущего устройства будет возможной, только если на этом входе будет присутствовать высокий уровень. Если же вывод SS будет работать как вход и на нем будет присутствовать низкий уровень, то модуль SPI будет интерпретировать такую ситуацию, как попытку другого ведущего устройства получить управление над шиной. Во избежание конфликтов на шине, ведущее устройство выполняет следующие действия:

  • Переходит в подчиненный режим.

  • Устанавливает флаг прерывания модуля SPI.

    1. Подчиненный режим

Когда интерфейс SPI настроен как подчиненный, он будет находиться в состоянии ожидания до тех пор, пока на выводе SS будет присутствовать высокий уровень, при этом, линия MISO будет находиться в высокоимпедансном состоянии. Когда модуль находится в состоянии ожидания, программа имеет возможность обновления содержимого регистра данных, но данные не будут передаваться сдвигом даже при наличии импульсов синхронизации на линии SCK. После установления низкого уровня на выводе SS и при условии настройки вывода MISO как выхода, подчиненный модуль начнет передачу данных сдвигом по первому импульсу синхронизации на линии SCK. По завершении передачи сдвигом одного байта данных, становится равным единице флаг прерывания модуля SPI. Подчиненный модуль может разместить новые данные для передачи в регистре до чтения принятых данных. Последний принятый байт данных сберегается в буферном регистре.

Если вход SS вновь переходит в высокое состояние, это приведет к сбросу логики SPI и невозможности дальнейшего приема данных. Если это произойдет во время передачи, то все частично принятые сдвиговым регистром данные будут потеряны.

Вывод SS используется для сигнализации начала и окончания передачи. Он также полезен для синхронизации пакетов/посылок за счет поддержания синхронизма счетчика бит подчиненного устройства и генератора синхронизации в ведущем устройстве.

    1. Режимы spi

Возможны четыре комбинации фазы и полярности сигнала SCK по отношению к сигналам данных. Передача данных по интерфейсу SPI выполняется в форматах, показанных на рисунке 20.2. Биты данных передаются сдвигом и защелкиваются по противоположным фронтам сигнала SCK. Этим гарантируется достаточность времени для стабилизации сигналов данных.

Таблица 20.2. Режимы SPI

Режим

Передний фронт

Задний фронт

0

Нарастающий; выборка

Падающий; установка

1

Нарастающий; установка

Падающий; выборка

2

Падающий; выборка

Нарастающий; установка

3

Падающий; установка

Нарастающий; выборка

Передний фронт - фронт, с которого начинается период импульсов синхронизации. Задний фронт - фронт, которым заканчивается период импульсов синхронизации.

Рисунок 20.2. Режимы передачи SPI

Соседние файлы в папке Архитектура ЭВМ