Переназначение режима работы выводов модуля SPI
Вывод | Режим «Master» | Режим «Slave» |
MOSI | Определяется пользователем* | Вход |
MISO | Вход | Определяется пользователем* |
SCK | Определяется пользователем* | Вход |
SS | Определяется пользователем* | Вход |
* Направление передачи данных определяется состоянием соответствующего разряда регистра DDRB.
Как видно из таблицы, в некоторых случаях пользователь должен самостоятельно задать режим работы вывода, используемого модулем SPI, в соответствии с его назначением (см. далее). Причем возможность управления внутренними подтягивающими резисторами выводов, работающих как входы, сохраняется независимо от способа управления их режимом работы.
Для управления модулем SPI предназначен регистр управления SPCR, расположенный по адресу $0D ($2D). Формат этого регистра приведен на рис.8.2.
SPI Control Register (SPCR)
Бит $0D($2D) R/W Нач.знач. | SPCR | ||||||||
SPIE | SPE | DORD | MSTR | CPOL | CPHA | SPR1 | SPR0 | ||
R/W | R/W | R/W | R/W | R/W | R/W | R/W | W | ||
Рисунок 8.2 – Регистр управления SPI (SPCR)
|
|
Бит 7 - SPIE (SPI Interrupt Enable). Разрешение преывания от SPI. Прерывание возникает при выставлении в «1» флага SPIF регистра SPSR. При этом прерывания должны быть разрешены глобально (бит I регистра SREG).
Бит 6 - SPE (SPI Enable). Разрешение работы SPI. Для разрешения работы бит необходимо выставить в «1».
Бит 5 - DORD (Data Order). Порядок следования данных. При DORD=1 первым передается младший разряд данных, а при DORD=0 – старший.
Бит 4 - MSTR (Master/Slave Select). Выбор режима Master/Slave. При MSTR=1 SPI работает в режиме Master, а при MSTR=0 - в режиме Slave.
Бит 3 - CPOL (Clock Polarity). Полярность тактовых импульсов. При CPOL=0 генерируются импульсы положительной полярности, при отсутствии импульсов на выводе SCK присутствует низкий уровень. При CPOL=1 -отрицательной полярности, при отсутствии импульсов – высокий уровень.
Бит 2 - CPHA (Clock Phase). Фаза тактовых импульсов. При CPHA=0 обработка данных производится по переднему фронту импульсов сигнала SCK (при CPOL=0 – по нарастающему, а для CPOL=1 – по спадающему фронту). При CPHA=1 - по заднему фронту.
Биты 1,0 - SPR1, SPR0 (SPI Clock Rate Select 1 and 0). Задание частоты тактового сигнала SCK в режиме “Master”. В режиме Slave эти биты не задействованы. Значения частоты тактового сигнала SCK приведены в табл.8.2.