?Л" - НАЧИНАЮЩИМ
Для работы с SPI имеются три специальных регистра:
регистр данных SPDR, регистр управления SPCR и регистр
состояния SPSR.
Как и SBUF в UART, SPDR физически реализован в виде
пары регистров сдвига, доступных раздельно: один только
для записи выводимого байта, другой только для считыва-
ния принятого.
Регистр SPCR показан в таблице 26.
Флаг SPE включает модуль SPI, при этом к выводам пор-
тов Р1.4.
.. Р1.7 подключаются сигналы модуля SPI. Если флаг
сброшен, то модуль SPI неактивен.
Флаг MSTR управляет включением режима ведущего.
Если он установлен, то модуль SPI работает в режиме веду-
щего, а линия SS не используется (т.е. порт Р1.4 может ис-
пользоваться в программе, как обычный порт ввода-выво-
да). Если этот флаг сброшен, то SPI работает в режиме ведо-
мого, при этом его активность дополнительно управляется
уровнем на входе SS: только при низком уровне на этом вхо-
де SPI работает.
флаг SPIE - не что иное, как флаг разрешения прерыва-
ний otSPI. Так как для обработки прерываний от UART и SPI
используется один и тот же вектор, при помощи этого флага
Таблица 26. Регистр SPCR
Разряд
7
6
5
4
3
2
1
0
Флаг
SPIE
SPE
DORD
MSTR
CPOL
СРНА
SPR1
BPRO
Таблица 27. Управление скоростью обмена по SPI
SPRO
SPR1
Скорость обмена, бод
0
0
^osc/4
1
0
W i e
0
1
Pose«*
.1
1
Розсів
Таблица 28. Регистр SPSR
Разряд
7
6
5
4
3
2
1
0
Флаг
SPIF
WCOL
-
-
-
-
• -
-
СРНА=0
SCK (CPOL=0)
SCK (CPOL*1)
~~Х
Р°
01
'X
ог~Х"
X
D3
X
D 3
X
р4
Х
х :
X
Х ...°§ -Х
X
рб X
СРНА=1
SCK (СРО1=0)
SCK (СР01=1)
MISO
X
ОД
Х ~~°
X
°° X
01
Х ~ °
2
~ а ~~р
X
.й і-Х
D3
X
X D5 X "
X
„рЮ С
Об
Рис. 17. Диаграммы сигналов при различных значениях СРНА
можно управлять обслуживанием запросов от SPI. Запросы
прерываний поступают, если SPIE=1.
Обмен начинается сразу же после записи байта в ре-
гистр SPDR ведущего устройства. Модуль SPI, в сущнос-
ти, не более чем обычный регистр последовательного сдви-
га. Поэтому при обмене из него просто выталкиваются биты
в линию MOSI, а из линии MISO “заталкиваются” новые из
ведомого устройства. У ведомого при Зтом все происхо-
дит аналогично. После того, как байт передан/принят, ап-
паратно устанавливается флаг SPIF (см. таблицу 26) -
флаг запроса прерывания. Если при этом SPIE=1, то фор-
мируется запрос прерывания, который обрабатывается об-
щим обработчиком прерываний от последовательных ин-
терфейсов.
Флаги SPRO и SPR1 определяют скорость работы SPI,
т.е. частоту сдвига данных, как это показано в таблице 27.
Fosc - это частота примененного кварцевого резонатора.
флаг DORD определяет порядок следования битов при
обмене: если DORD=1, то обмен начинается с младшего бита
данных, иначе - со старшего.
Флаг CPOL определяет полярность импульсов синхро-
низации SCK: если CPOL=1, то импульсы имеют отрицатель-
ную полярность (“защелкивание” бита происходит по спаду
импульса SCK), а при СРОЬ=0 - положительную (“защелки-
вание" бита происходит по фронту импульса SCK).
Флаг СРНА определяет момент времени, когда прини-
маемые на входе MISO данные имеют верное значение. Если
СРНА=0, то к моменту активного фронта импульса SCK дан-
ные в линии MISO уже правильные (т.е. ведомое устройство
как бы заранее их выставило). Если же СРНА=1, то в линии
MISO правильные данные появляются только ко второму ак-
тивному фронту SCK. Рис. 17 поясняет сказанное.
После сброса в регистре SPCR установлен флаг СРНА,
все остальные флаги, кроме SPRO и SPR1, сброшены, со-
стояние флагов SPRO и SPR1 не определено.
Как правило, для обмена между двумя однотипными ус-
тройствами на микроконтроллерах ATB9S8252,.знамения фла-
гов СРНА и С POL можно не трогать, а рабо-
тать с тем, что будет после сброса. В зтом слу-
чае все режимы у обоих устройств совпадут,
и обмен будет происходить без ошибок. Слож-
ности могут начаться, если использовать, на-
пример, микросхему DataFlash: тогда придет-
ся задать тот режим работы SPI, который под-
держивается ею.
Регистр SPSR содержит флаги, показы-
вающее состояние модуля SPI (таблица 28).
Флаг SPIF упомянут ранее, это флаг зап-
роса прерывания, он устанавливается сразу
после завершения обмена байтами.
Флаг WCOL - признак ошибки записи
(коллизии), он устанавливается, если было
обращение для записи SPDR во время пе-
У
D7
у -
редачи. При этом запись в SPDR не проис-
ходит (продолжают передаваться старые
данные). При чтении во время обмена SPDR
может вернуть некорректные данные, но
ошибкой это не является.
х :
X I
X
24
U Радиолюбитель - 0 1 /2 0 0 8
предыдущая страница 24 Радиолюбитель 2008-01 читать онлайн следующая страница 26 Радиолюбитель 2008-01 читать онлайн Домой Выключить/включить текст