Последовательный периферийный интерфейс (SPI)
Последовательный периферийный интерфейс (SPI) обеспечивает высокоскоростной синхронный обмен данными между микроконтроллерами AT90S4434/8535 и периферийными устройствами или между несколькими AVR-устройствами.
Основные характеристики SPI интерфейса:полнодуплексный 3-проводной синхронный обмен данными; режим работы ведущий или ведомый;
обмен данными с передаваемыми первыми старшим или младшим
битами; четыре программируемые скорости обмена данными; флаг ошибки при записи; активация из Idle-режима.
Соединения между ведущим и ведомым CPU, использующими SPIинтерфейс, показаны на рис. 3.11. Вывод PB7(SCK) является выходом тактового сигнала ведущего микроконтроллера и входом тактового сигнала ведомого.
По записи ведущим CPU-данных в SPI-регистр начинает работать тактовый генератор SPI и записанные данные сдвигаются через вывод выхода PB5(MOSI) ведущего микроконтроллера на вывод входа PB5 (MOSI) ведомого микроконтроллера. После сдвига одного байта тактовый генератор SPI останавливается, устанавливая флаг окончания передачи (SPIF). Если в регистре SPCR будет установлен бит разрешения прерывания SPI (SPIE), то произойдет запрос прерывания. Вход выбора ведомого PB4(SS) для выбора индивидуального SPI-устройства в качестве ведомого устанавливается на низкий уровень.
Рис. 3.11. SPI-интерфейс (подключение устройств)
Два сдвиговых регистра ведущего и ведомого микроконтроллеров можно рассматривать как один разнесенный 16-разрядный циклический сдвиговый регистр (рис. 3.11). При сдвиге данных из ведущего микроконтроллера в ведомый одновременно происходит сдвиг данных из ведомого микроконтроллера в ведущий, т. е. в течение одного цикла сдвига происходит обмен данными между ведущим и ведомым микроконтроллерами.
В системе организовано одиночное буферирование передающей стороны и двойное буферирование на приемной стороне. Это означает, что передаваемые символы не могут быть записаны в регистр данных SPI, прежде чем будет полностью завершен цикл сдвига.
Тем не менее, когда передаются данные, переданный байт должен быть считан из регистра данных SPI ранее, чем следующий байт будет полностью передан. В противном случае первый байт потерян.
Дата добавления: 2016-10-17; просмотров: 543;