Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСУ новая 2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
4.56 Mб
Скачать

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

Последовательный периферийный интерфейс SPI (Serial Peripheral Interface), реализованный в микроконтроллерах семейства, имеет два назначения. Прежде всего через него может быть осуществлено программирование микроконтроллера (так называемый режим последовательного программирования).

Вторым назначением интерфейса является организация высокоскоростного обмена данными между микроконтроллером и различными периферийными устройствами, такими как ЦАП/АЦП, Flash-ПЗУ и др. Посредством этого интерфейса также может производиться обмен данными между несколькими микроконтроллерами AVR. При обмене данными по интерфейсу SPI микроконтроллер AVR может работать как в режиме Master, так и в режиме Slave. При этом пользователь может задать следующие параметры:

• скорость передачи (четыре программируемых значения);

• формат передачи (от младшего разряда к старшему или наоборот);

Дополнительной возможностью подсистемы SPI является «пробуждение» микроконтроллера из режима Idle при поступлении данных.

Функционирование модуля SPI

Модуль SPI использует четыре вывода микроконтроллера. Как и для большинства прочих периферийных устройств, эти выводы являются линиями порта ввода/вывода общего назначения (табл. 5.23).

Для управления модулем SPI предназначен регистр управления SPCR, расположенный по адресу $0D ($2D). Формат этого регистра приведен на рис. 6.7, а краткое описание функций разрядов регистра приведено в табл. 6.8.

Таблица. 5.23. Выводы, используемые модулем SPI

Название сигнала

AT90S8515

Описание

SCK

РВ7

Выход (master)/ вход (slave) тактового сигнала

MISO

РВ6

Вход (master)/выход (slave) данных

MOSI

РВ5

Выход (master )/вход (slave) данных

РВ4

Выбор ведомого устройства

Режимы передачи данных

Спецификация интерфейса SPI предусматривает 4 режима передачи данных. Эти режимы различаются соответствием между фазой (момент считывания сигнала) тактового сигнала SCK, его полярностью и передаваемыми данными. Всего существует 4 такие комбинации, определяемые состоянием разрядов СРНА и CPOL регистра SPCR (табл. 5.24).

Частота тактового сигнала SCK и, соответственно, скорость передачи данных по интерфейсу определяются состоянием разрядов SPR1: SPR0 регистра SPCR (табл. 5.25) при работе МК, работающего в режиме Master, т.к. именно он является источником тактового сигнала. Для устройства, находящегося в режиме Slave, состояние этих разрядов безразлично.

Таблица. 5.24. Задание режима передачи данных

Разряд

Описание

CPOL

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

0 - генерируются импульсы положительной полярности, при отсутствии импульсов на выводе присутствует НИЗКИЙ уровень;

1 - генерируются импульсы отрицательной полярности, при отсутствии импульсов на выводе присутствует ВЫСОКИЙ уровень

СРНА

Фаза тактового сигнала

0 - обработка данных производится по переднему фронту импульсов сигнала SCK (для CPOL = 0 - по нарастающему, а для CPOL =1 - по спадающему фронту).

1 - обработка производится по заднему фронту импульсов сигнала SCK

Таблица 5.25. Задание частоты тактового сигнала SCK

SPR1

SPR0

Частота сигнала SCK

0

0

FCLK /4*

0

1

FCLK /16

1

0

FCLK /64

1

1

FCLK /128

*FCLK- тактовая частота микроконтроллера.

Аналоговый компаратор

Компаратор позволяет сравнивать значения напряжений, присутствующих на двух выводах микроконтроллера. Результатом сравнения является логическое значение, которое может быть прочитано из программы. По результату сравнения может быть сгенерировано прерывание, а также выполнена функция захвата таймера/счетчика Т1.

Используемые компаратором выводы являются контактами портов ввода/вывода общего назначения.

Чтобы указанные линии портов ввода/вывода могли использоваться аналоговым компаратором, они должны быть сконфигурированы как входы (соответствующий разряд регистра DDRx установлен в «1»). Кроме того, необходимо отключить внутренние подтягивающие ре­зисторы записью лог. «0» в соответствующий разряд регистра PORTx.

Управление компаратором и контроль его состояния осуществляются с помощью регистра ACSR, расположенного по адресу $08 ($28).

По своему действию рассматриваемый узел микроконтроллера является обычным компаратором. Если напряжение на выводе AIN0 (неинвертирующий вход) больше напряжения на выводе AIN1 (инвертирующий вход), то результат сравнения будет равен «1». В противном случае результат сравнения будет равен «0». Этот результат (состояние выхода компарато­ра) сохраняется в разряде АСО регистра ACSR.

Разряд ACD отвечает за включение и выключение компаратора. При включении напряжения питания все разряды регистра ACSR сбрасываются в «0», поэтому компаратор автоматически включается при подаче напряжения питания на микроконтроллер. Чтобы его выключить, разряд ACD следует установить в «1». При изменении состояния этого разряда необходимо запретить прерывание от компаратора.