Rambler's Top100

Последовательный интерфейс SPI


Что такое SPI?
Конфигурация SPI
Работа SPI
Автор

Что такое SPI?

SPI (Serial Peripheral Interface) - это полнодуплексный скоростной синхронный трёхпроводной интерфейс. В настоящее время его поддерживают не только AVR-контроллеры, но и некоторые модели Microchip и Motorola, и он становится уже промышленным стандартом.
SPI в реализации Atmel имеет четыре задаваемые программно скорости передачи, может передавать байты от старшего к младшему биту и наоборот, обнаруживает ошибки пакета.

Оглавление Оглавление

Конфигурация SPI

Блок-схема SPI


Регистр SPCR - регистр управления

SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0

SPIE - разрешение прерывания по окончанию передачи.
SPE - SPI включен. Если установлен этот бит, то выводы #SS, MISO, MOSI и SCK работают как выводы SPI, иначе - как простые выводы порта.
DORD - направление передачи данных. Если установлен, то передача идёт с младшего бита, если сброшен - со старшего.
MSTR - если установлен, контроллер работает как Master, если сброшен - как Slave. Управляется также выводом #SS, если он настроен на ввод - при подаче "0" на #SS бит MSTR сбрасывается.
CPOL - определяет уровень на выходе SCK в режиме ожидания - SCK = CPOL
CPHA - если установлен, передача и приём бита производится по обратному фронту, если сброшен - по прямому.
SPR1, SPR0 - делитель тактовой частоты (F - частота генератора контроллера).
SPR1 SPR0 Частота
0 0 F/4
0 1 F/16
1 0 F/64
1 1 F/128

Регистр SPSR - регистр состояния

SPIF WCOL - - - - - -

SPIF - флаг прерывания по окончанию передачи. Устанавливается и сбрасывается аппаратно.
WCOL - флаг наложения. Устанавливается, когда принятый байт наложился на ещё не прочитанный в регистре данных. Сбрасывается чтением регистра состояния.

Регистр SPDR - регистр данных

MSB - - - - - - LSB

Оглавление Оглавление

Работа SPI

Схема соединений

MISO - Master In, Slave Out - выход ведомого, вход ведущего.
MOSI - Master Out, Slave In - вход ведомого, выход ведущего.
SCK - SPI ClocK - тактовая линия.
#SS - Slave Select. Если #SS настроен на ввод, то "0" на #SS означает, что контроллер работает ведомым, "1" - ведущим. Если #SS настроен на вывод, то он не используется при связи по SPI.

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

Оглавление Оглавление

© Берёзкин С.Е., 2001 г.

stlab@rambler.ru



Оглавление

Главная

Микроконтроллеры



Рейтинг@Mail.ru bigmir)net TOP 100 Rambler's Top100 AllBest.Ru Яндекс цитирования