ADuC812
SERIAL PERIPHERAL INTERFACE
Перевод части файла
AduC812_b.pdf скачанного с сайта www.analog.com.Этот файл дает наиболее полное описание для AduC812 в нем 56 страниц.
.В ADuC812 имеется аппаратный интерфейс
Serial Peripheral Interface (SPI). SPI это промышленный стандарт для синхронного последовательного интерфейса, который позволяет принимать или передавать 8 бит, то есть, полный дуплекс. Необходимо заметить, что контакты SPI те же, что и для интерфейса I2C, тем не менее, пользователь может установить тот или другой интерфейс в данный момент времени (смотри SPE в регистре SPICON ниже).SPI порт может быть сконфигурирован в режиме Ведущий (Master) или Ведомый (Slave) и обычно содержит четыре линии:
MISO (Master In, Slave Out Data I/O Pin), Pin #19
Линия MISO (master in slave out) конфигурируется на ввод в режиме ведущего и на выход в режиме ведомого. Линия MISO в режиме ведущий (прием) должна соединяться с линией MISO устройства в режиме slave (передача). Данные передаются побайтно (8-bit) последовательно, MSB старший бит первый.
MOSI (Master Out, Slave In Pin), Pin #27
Линия MOSI (master out slave in) конфигурируется на вывод в режиме ведущего и на ввод в режиме ведомого. Линия MOSI в режиме ведущего (передача) должна быть соединена с линией MOSI устройства работающего в режиме ведомого (прием). Данные передаются побайтно (8-bit) последовательно, MSB старший бит первый.
SCLOCK (Serial Clock I/O Pin), Pin #26
Синхроимпульсы, задаваемые ведущим (SCLOCK), используются для стробирования передачи или приема по линиям данных MOSI и MISO. Один бит данных передается или принимается за один период SCLOCK. Поэтому байт передается или принимается за восемь циклов SCLOCK. Линия SCLOCK включается на выдачу в режиме ведущего и на ввод в режиме ведомого. В режиме ведущего длительность, полярность и фаза импульса управляется битами CPOL, CPHA, SPR0 и SPR1 регистра SPICON SFR (смотри Table XII).
В режиме ведомого регистр SPICON также настраивается на фазу и полярность (CPHA и CPOL) принимаемых синхроимпульсов. В обоих режимах и ведущий и ведомый по одному фронту сигнала SCLOCK передают данные, а по другому принимаются. Важно отметить, что CPHA и CPOL устанавливаются одинаково и для ведущего и для ведомого.
SS (Slave Select Input Pin), Pin #12
Линия Выбор ведомого (Slave Select) (
SS) работающая на ввод, разделяется со входом ADC5. Для настройки этого контакта на цифровой вход, он должен быть сброшен, e.g., CLR P1.5. Эта линия активна в 0. В режиме ведомый, данные принимаются или передаются, только когда линия SS в 0, позволяя ADuC812 использовать одного ведущего и много ведомых SPI в своей конфигурации. Если CPHA = 1 тогда SS ввод может удерживаться в 0 (перманентно). При CPHA = 0 ввод SS должен быть установлен в 0 перед первым битом принимаемого или передаваемого байта и возвращен в 1 после последнего бита. В режиме ведомого SPI, логический уровень дополнительного контакта SS (Pin #13), может быть прочитан как SPR0 бит регистра SPICON SFR.Следующие регистры SFR используются для управления интерфейсом SPI.
SPICON SPI Регистр управления.
Адрес регистра |
F8H |
Значение по включению |
OOH |
Битовая адресация |
Да |
ISPI |
WCOL |
SPE |
SPIM |
CPOL |
CPHA |
SPR1 |
SPR0 |
Таблица XI. Назначение бит SPICON SFR.
Бит |
Имя |
Описание |
7 |
ISPI |
Бит прерывания. SPI I nterrupt Bit.Устанавливается контроллером в конце каждой передачи по SPI. Сбрасывается программой пользователя или при чтении регистра SPIDAT SFR |
6 |
WCOL |
Бит ошибки коллизия при передаче. Write Collision Error Bit. Устанавливается контроллером, если регистр SPIDAT читается в то время, пока процесс передачи не закончен. Сбрасывается программой пользователя. |
5 |
SPE |
Бит настройки порта на интерфейс SPI. SPI Interface Enable Bit.Устанавливается пользователем для работы по интерфейсу SPI. Сбрасывается пользователем для установки интерфейса I 2 C. |
4 |
SPIM |
SPI Master/Slave Mode Select Bit. Устанавливается пользователем для задания режима Ведущий (SCLOCK на выдачу). Сбрасывается пользователем, для задания режима, Ведомый (SCLOCK на прием). |
3 |
CPOL |
Clock Polarity Select Bit. Устанавливается пользователем если SCLOCK не активный в 1. Сбрасывается пользователем если SCLOCK не активный в 0. |
2 |
CPHA |
Clock Phase Select Bit. Устанавливается пользователем если задний фронт сигнала SCLOCK используется для передачи данных. Сбрасывается пользователем если передний фронт сигнала SCLOCK используется для передачи данных. |
1 0 |
SPR1 SPR0 |
SPI Bit-Rate Select Bits. В режиме ведущего, эти биты выбирают длительность сигнала SCLOCK (bit-rate): SPR1 SPR0 Selected Bit Rate 0 0 fOSC/4 0 1 fOSC/8 1 0 fOSC/32 1 1 fosc/64 В режиме ведомого, то есть SPIM = 0, логический уровень внешнего разъема SS (#12)может быть определен как бит SPR0. |
Замечание: Биты CPOL и CPHA имеют одинаковое значение для устройства в режиме ведущего и ведомого.
SPIDAT Регистр данных SPI.
Функция |
Регистр SPIDAT SFR записывается пользователем, для передачи данных через SPI интерфейс, или читается пользователем, для получения данных, только что принятых по SPI интерфейсу. |
Адрес регистра |
F7H |
Значение по умолчанию после включения питания |
00H |
Битовая адресация |
нет |
Использование интерфейса SPI
.В соответствии с конфигурацией битов регистра
SPICON показанных в таблице 12, интерфейс SPI контроллера передает или принимает данные в нескольких режимах. На рисунке 26 показаны все возможные конфигурации и временные соотношения для принимаемых или передаваемых данных и их синхросигналами. Также показаны моменты установки сигнала прерывания.SPI Interf
ace— Режим ведущего.В режиме ведущего, контакт SCLOCK всегда работает на выдачу и выдает пакет из 8 импульсов, каждый раз, после того как пользователь производит запись в регистр
SPIDAT. Скорость передачи определяется установкой бит SPR0 и SPR1 регистра SPICON. Следует отметить, что сигнал SS не используется в режиме мастер. И если внешнему устройству требуется сигнал SS, следует использовать цифровой выход порта.В режиме ведущего передача или прием байта инициируется записью в SPIDAT. Восемь импульсов выдается по SCLOCK и SPIDAT байт передается по MOSI. По каждому SCLOCK бит данных считывается по MISO. После 8 импульсов, передаваемый байт будет полностью передан, а принимаемый байт заполнит сдвиговый регистр. Флаг ISPI будет установлен автоматически и вызовет прерывание, если оно разрешено. Значение сдвигового регистра будет занесено в регистр SPIDAT.
SPI Interface – Режим ведомого.
В режиме ведомого SCLOCK работает на прием. Линия SS должна быть установлена в 0 внешним сигналом в период обмена данными. Передача также инициируется записью в SPIDAT. В режиме ведомого, бит данных передается по MISO, а принимается бит данных по MOSI во время каждого периода входного SCLOCK. После восьми синхроимпульсов, передаваемый байт будет полностью выдан, а байт ожидаемый на ввод будет находиться во входном сдвиговом регистре. Флаг ISPI будет взведен автоматически и, возбудится прерывание, если оно разрешено. Значение сдвигового регистра будет переписано в SPIDAT только когда передаваемый / принимаемый байт принят полностью. Конец передачи возникает каждый раз после восьми синхроимпульсов, если CPHA = 1, или когда SS возвращается в 1 при CPHA = 0.
SPI MASTER MODE TIMING (CPHA = 1) ns
Parameter |
Min |
Typ |
Max |
|
tSL |
SCLOCK низкий уровень синхроимпульса |
330 |
||
tSH |
SCLOCK высокий уровень синхроимпульса |
330 |
||
tDAV |
Выдача удержание после фронта SCLOCK |
50 |
||
tDSU |
Выдача установка перед фронтом SCLOCK |
100 |
||
tDHD |
Ввод удержание после фронта SCLOCK |
100 |
||
tDF |
заднего фронта выдаваемых данных |
10 |
25 |
|
tDR |
переднего фронта выдаваемых данных |
10 |
25 |
|
tSR |
SCLOCK переднего фронта |
10 |
25 |
|
tSF |
SCLOCK заднего фронта |
10 |
25 |
SPI MASTER MODE TIMING (CPHA = 0) ns
Длительность |
Min |
Typ |
Max |
|
tSL |
SCLOCK низкий уровень синхроимпульса |
330 |
||
tSH |
SCLOCK высокий уровень синхроимпульса |
330 |
||
tDAV |
Выдача удержание после фронта SCLOCK |
50 |
||
tDOSU |
Выдача установка перед фронтом SCLOCK |
150 |
||
tDSU |
Ввод установка перед фронтом SCLOCK |
100 |
||
tDHD |
Ввод удержание после фронта SCLOCK |
100 |
||
tDF |
заднего фронта выдаваемых данных |
10 |
25 |
|
tDR |
переднего фронта выдаваемых данных |
10 |
25 |
|
tSR |
SCLOCK переднего фронта |
10 |
25 |
|
tSF |
SCLOCK заднего фронта |
10 |
25 |