Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADuC70xx_K02.docx
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
1.68 Mб
Скачать

Последовательный синхронный периферийный интерфейс spi.

В микросистеме ADuC702x аппаратно реализован синхронный последовательный периферийный интерфейс SPI. SPI является промышленнымстандартом, он позволяет одновременно синхронно передавать и принимать 8-битные данные, т.е. обеспечивать полнодуплексный режим со скоростью передачи до 3.48 Мбит в секунду, как показано в табл ???. Интерфейс SPI не работоспособен в режиме ведущего (master) при настройках делителя тактовой частоты ядра (CD) POWCON[2:0] = 6 или 7. Порт SPI может быть сконфигурирован для работы в режиме ведущего или ведомого (master/slave) и обычно использует четыре линии: MISO, MOSI, SCL, and#CS.

Синхронный последовательный интерфейс SPI в основном варианте предназначен для связи двух устройств. Основной узел синхронного последовательного интерфейса это пара сдвиговых регистров, каждый из которых находится в одном из двух связанных устройств. Оба регистра тактируются одной и той же последовательностью синхроимпульсов, которые формирует единственный генератор, находящийся в одном из связанных устройств. Устройство, формирующее тактовые импульсы, называют ведущим (master). Другое устройство называют ведомым (slave).

Для запуска передачи ведущее устройство должно поместить передаваемый байт в буферный регистр своего передатчика. Немедленно запустится генератор тактовых импульсов, которыйсформирует пакет из восьми импульсов.Под их воздействием содержимое сдвигового регистра «мастера» передается в «slave» и одновременно в обратную сторону.

Перевод фрагмента из описания SPIв дата-шите 68hc11a8

==== Начало фрагмента =======

Формат передачи при CPHA=0

...Выводы MISOи MOSIна masterи на slaveсоединены «напрямую», поэтому диаграмма может интерпретироваться как для master так и для slave. ... Сигнал SS# - входной для slave, вывод SS для master не показан, но предполагается, что он не используется. ...

Если CPHA= 0, сигнал SS#должен сниматься и вновь становиться активным между передачами отдельных байтов (сдвиг в регистрах происходит по окончанию тактового импульса – апн). Если при этом slave производит запись в регистр данных SPDR в то время как SS# = 0, будет сформирован сигнал ошибки write-collision.

Если CPHA =1, сигнал SS# может оставаться активным (низким) между передачами отдельных байтов, например, его можно соединить с «землей» напостоянно. ...(сдвиг в регистрах происходит по началу тактового импульса ‑апн)

Основной элемент интерфейса SPIэто сдвиговый регистр и буферный регистр чтения. Иными словами, система single-buffered в направлении передачи и double-buffered в направлении приема. Это означает, что новый байт можно поместить в SPI-передатчик лишь после окончания сдвига предыдущего байта, в то время как после приема байта, он автоматически копируется в буферный регистр чтения, и сдвиговый регистр оказывается свободен для приема следующего байта. Принятый байт следует считать из буферного регистра до окончания приема следующего байта, иначе будет зарегистрирована ошибка overrunerror. Сдвиговый регистр (по записи) и буфер приемника (по чтению) «видны» программисту через один и тот же адрес. ....

Вывод SS# ведет себя по-разному на master и на slave. На slave этот вывод является входом, предназначенным для активации интерфейса SPI (разрешения обмена). Если SS# на slave неактивен, то slave игнорирует изменения сигналов на входах SPI и держит выход MISOв высокоимпедансном состоянии. На устройстве master вывод SS# может использоваться как error-detection вход (для конфигурации multi-master), либо как GP-выход, не связанный с SPI.

Если устройство находится в режиме master, и на входе SS# появляется (извне) сигнал 0 (другое устройство пытается войти в режим master) – это немедленно выявляется схемотехникой и выводит устройства из режима master, предотвращая возможное повреждение выходов из-за электрической коллизии. Для этого выводы порта D должны быть сконфигурированы в режим open-drain (режим wiredORDWOM)и должен использоваться внешний pull-up резистор.Это свойство позволяет использовать и другие «необычные» конфигурации, например, когда выводы MISOи MOSI соединены вместе и образуют однопроводную двунаправленную линию данных.

----------------- Конец фрагмента --------------------------------------------------------------------

SPITX – регистр-буфер передачи.

Доступен только по записи. Запись байта в этот регистр вызывает немедленное его копирование в сдвиговый регистр и начало передачи, т.е. запускает генератор тактовой частоты. Буфер передачи после записи первого байта немедленно освобождается, позволяя тут же записать второй байт.

SPIRX– регистр-буфер приемника.

Доступен только по чтению. По окончании передачи принятый байт копируется в буфер приемника, позволяя программе прочитать принятый байт без спешки.

Регистр SPICON – управляющий регистр порта SPI (два байта).

Бит

Название

Назначение

15:13

Не используются

12

Непрерывная передача

0 – после передачи каждого байта сигнал SS снимается на время одного тактового периода, даже если следующий байт записывается в буфер передатчика до окончания передачи предыдущего.

1 – при записи следующего байта в буфер передатчика до окончания передачи предыдущего, сигнал SSсохраняет состояние Low

11

Замкнуть выход на вход (тестовый реж.)

Если 1 – выход передатчика замыкается на вход приемника, позволяет протестировать правильность функционирования

10

Разрешение выхода данных ведомого.

Если 1 – разрешается выходной сигнал данных в режиме ведомого.

9

Разрешение выхода сигнала SS на ведущем.

Если 0, то при передаче автоматически формируется сигнал SS, если 1, то линия SSв состоянии High.

8

Разрешение замены данных в SPIRX.

Если 1, то приходящий байт заменяет ранее принятый (но не считанный), если 0 – принятый байт теряется.

7

Режим работы SPITX при запуске от SPIRX

Если 1, то передается нулевой байт. Если 0, то повторяется передача предыдущего байта.

6

Выбор режима запуска и прерывания.

Если 1 – передача запускается записью в регистр SPITX, иначе ‑ запуск при считывании из SPIRX.

5

Порядок передачи битов

Если 1 – младшие биты вперед, иначе – старшие биты вперед.

4

Не используется

3

Полярность тактирования

Если 1 – уровень тактирования в паузе между пакетами высокий, иначе – низкий.

2

Фаза тактирования

Если 1 – тактовый импульс в начале битового интервала, иначе – в конце.

1

Режим ведущего/ведомого

Если 1 – SPIв режиме ведущего, иначе – в режиме ведомого.

0

Разрешение SPI

Если 1 – подсистема SPIвключена, иначе выключена.

Регистр SPISTA– состояния последовательного синхронного интерфейса (один байт)

Бит

Описание

7:6

Резервировано

5

SRxOvf

Флаг переполнения буфера приемникаSPIRX– следующий байт принят до того, как был прочитан предыдущий. Флаг сбрасывается при чтении SPIRX. Бит SPICON.8 определяет, который байт будет потерян.

4

SRxIrq

Флаг запроса прерывания от приемника SPI. Устанавливается, если установлен хотя бы один из битов 3 или 5. Сбрасывается при чтении регистра SPIRX.

3

SRxFul

Флаг наличия нового байта в SPIRX. Устанавливается по окончанию приема байта. Сбрасывается при чтении регистра SPIRX.

2

STxEmp

1 – буфер передатчика пуст. Бит сбрасывается при записи в буфер передатчика SPI. Устанавливается в режиме запуска чтением регистра данных, в том случае, если перед этим в буфер передатчика не были записаны данные.

1

STxIrq

Бит запроса преывания от передатчика SPI. Устанавливается, если бит0=0 или бит2=1

0

STxIdle

Флаг установлен в 1, пока идет передача. Сбрасывается в 0 по окончании передачи. Нулевое состояние этого флага сигнализирует, что передавать нечего.

Зависимость флагов от состояний регистров данных.

SRxOvf 1<<5 // 1 - переполнения приемника

SRxIrq 1<<4 // Флаг запроса прерывания от SPIRX

SRxFul 1<<3 // 1 - данные готовы

STxEmp 1<<2 // 1 - Буфер TX свободен

STxIrq 1<<1 // Флаг запроса прерывания от SPITX

STxIdle 1<<0 // 1 - идет сдвиг

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]