Лекция: Последовательный периферийный интерфейс SPI

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR. Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.

При обмене данными по интерфейсу SPI МК AVR может работать как ведущий (режим «MASTER») либо как ведомый (режим «SLAVE»). При этом пользователь может задавать скорость передачи (семь программируемых значений) и формат передачи (от младшего разряда к старшему или наоборот). Дополнительная возможность SPI – «пробуждение» МК из Idle режима при поступлении данных.

Соединения между ведущим и ведомым CPU, использующими SPI интерфейс, показаны на рис. 26. Вывод PB7(SCK) является выходом тактового сигнала ведущего микроконтроллера и входом тактового сигнала ведомого. По записи ведущим CPU данных в SPI регистр начинает работать тактовый генератор SPI и записанные данные сдвигаются через вывод выхода PB5(MOSI) ведущего микроконтроллера на вывод входа PB5(MOSI) ведомого микроконтроллера. После сдвига одного байта тактовый генератор SPI останавливается, устанавливая флаг окончания передачи (SPIF). Если в регистре SPCR будет установлен бит разрешения прерывания SPI (SPIE), то произойдет запрос прерывания. Вход выбора ведомого PB4(SS), для выбора индивидуального SPI устройства в качестве ведомого, устанавливается на низкий уровень. При установке высокого уровня на выводе PB4(SS) порт SPI деактивируется и вывод PB5(MOSI) может быть использован в качестве вывода входа. Режим ведущий/ведомый может быть установлен и программным способом установкой или очисткой специального бита MSTR в регистре управления SPI. Два сдвиговых регистра ведущего и ведомого микроконтроллеров можно рассматривать как один разнесенный 16-разрядный циклический сдвиговый регистр (см. Рис 26).

Одновременно при сдвиге данных из ведущего микроконтроллера в ведомый происходит сдвиг данных из ведомого микроконтроллера в ведущий по выходу PB6 (MISO) ведомого на вход PB6 (MISO) ведущего, т.е. в течение одного цикла сдвига происходит обмен данными между ведущим и ведомым микроконтроллерами.

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

С другой стороны, при приеме данных принимаемый символ должен быть считан из регистра данных SPI (SPDR по адресу 0F($2F)) прежде, чем будет завершен прием следующего символа, в противном случае предшествовавший символ будет потерян.

 

Рис. 26. Межсоединения ведущего и ведомого SPI

Подробно со структурой и функционированием модуля SPI можно ознакомиться в [1].

еще рефераты
Еще работы по информатике