20.4. Подчиненный режим
Когда интерфейс SPI настроен как подчиненный, он будет находиться в состоянии ожидания до тех пор, пока на выводе SS будет присутствовать высокий уровень, при этом, линия MISO будет находиться в высокоимпедансном состоянии. Когда модуль находится в состоянии ожидания, программа имеет возможность обновления содержимого регистра данных, но данные не будут передаваться сдвигом даже при наличии импульсов синхронизации на линии SCK. После установления низкого уровня на выводе SS и при условии настройки вывода MISO как выхода, подчиненный модуль начнет передачу данных сдвигом по первому импульсу синхронизации на линии SCK. По завершении передачи сдвигом одного байта данных, становится равным единице флаг прерывания модуля SPI. Подчиненный модуль может разместить новые данные для передачи в регистре до чтения принятых данных. Последний принятый байт данных сберегается в буферном регистре.
Если вход SS вновь переходит в высокое состояние, это приведет к сбросу логики SPI и невозможности дальнейшего приема данных. Если это произойдет во время передачи, то все частично принятые сдвиговым регистром данные будут потеряны.
Вывод SS используется для сигнализации начала и окончания передачи. Он также полезен для синхронизации пакетов/посылок за счет поддержания синхронизма счетчика бит подчиненного устройства и генератора синхронизации в ведущем устройстве.
20.5. Режимы SPI
Возможны четыре комбинации фазы и полярности сигнала SCK по отношению к сигналам данных. Передача данных по интерфейсу SPI выполняется в форматах, показанных на рисунке 20.2. Биты данных передаются сдвигом и защелкиваются по противоположным фронтам сигнала SCK. Этим гарантируется достаточность времени для стабилизации сигналов данных.
Таблица 20.2. Режимы SPI
Режим |
Передний фронт |
Задний фронт |
0 |
Нарастающий; выборка |
Падающий; установка |
1 |
Нарастающий; установка |
Падающий; выборка |
2 |
Падающий; выборка |
Нарастающий; установка |
3 |
Падающий; установка |
Нарастающий; выборка |
Передний фронт - фронт, с которого начинается период импульсов синхронизации. Задний фронт - фронт, которым заканчивается период импульсов синхронизации.
Рисунок 20.2. Режимы передачи SPI
20.6. Поддержка DMA
Поддержка DMA модулем SPI доступна только в подчиненном режиме. Подчиненный модуль SPI может запустить DMA-передачу после заполнения в результате сдвигов регистра данных. При необходимости поддержки DMA в ведущем режиме, можно воспользоваться модулем USART, настроенный на работу в режиме SPI. Более детально об этом см. в разделе 21.10 "USART в режиме ведущий SPI".
|