Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




 

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

 

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

Разряд Описание
CPOL Полярность тактового сигнала 0 - генерируются импульсы положительной полярности, при отсутствии импульсов на выводе присутствует НИЗКИЙ уровень; 1 - генерируются импульсы отрицательной полярности, при отсутствии импульсов на выводе присутствует ВЫСОКИЙ уровень.
СРНА Фаза тактового сигнала 0 - обработка данных производится по переднему фронту импульсов сигнала SCK (для CPOL = 0 - по нарастающему, а для CPOL = 1 - по спадающему фронту). 1 - обработка производится по заднему фронту импульсов сигнала SCK.

 

Соответствующие этим режимам форматы обмена данными через SPI приведены на Рис. 15 и 16 (передача ведется от старшего разряда к младшему).

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

 

Такт SCK (для справки)

 

 

SCK (CPOL = 0)

SCK (CPOL = 1)

MOSI (от ведущего)

MISO (от ведомого)

SS (к ведомому)

 

Моменты выборок

 

 

????????????Оцифровать рисунок

*Не определено (как правило, С3Р только что принятого байта)

Рис. 15. Передача данных при СРНА = 0 и DORD = 0

 

 

Такт SCK (для справки)

 

SCK (CPOL = 0)

SCK (CP0L = 1)

MOSI (от ведущего)

 

MISO (от ведомого)

SS (к ведомому)

 

 

????????????Оцифровать рисунок

Моменты выборок

 

* Не определено (как правило, М3Р только что переданного байта)

Рис. 16. Передача данных при СРНА = 1 и DORD = 0

 

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

SPI2X SPR1 SPR0 Частота сигнала SCK
FCLK / 4
FCLK / 16
FCLK / 64
FCLK / 128
FCLK / 2
FCLK / 8
FCLK / 32
FCLK / 64

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

 

Использование вывода SS

 

Вообще этот вывод предназначен для выбора активного ведомого устройства и в режиме Slave всегда является входом. При подаче на него напряжения НИЗКОГО уровня модуль SPI активируется и вывод MOSI переключается в режим вывода данных (если это задано пользователем). Остальные выводы модуля SPI являются в этом режиме входами. А при подаче на вывод SS напряжения ВЫСОКОГО уровня все выводы модуля SPI переключаются в режим ввода данных. При этом модуль переходит в неактивное состояние и прием данных не производится.

Следует помнить, что каждый раз, когда на вывод SS подается напряжение ВЫСОКОГО уровня, происходит сброс модуля SPI. Соответственно, если изменение состояния этого вывода произойдет во время передачи данных, и прием и передача немедленно прекратятся, а передаваемый и принимаемый байты будут потеряны.

Если же микроконтроллер находится в режиме Master (разряд MSTR регистра SPCR установлен в «1»), направление передачи данных через вывод SS определяется пользователем. Если вывод сконфигурирован как выход, он работает как линия вывода общего назначения и не влияет на работу модуля SPI. Если же он сконфигурирован как вход, то для обеспечения нормальной работы модуля SPI на него должен быть подан сигнал ВЫСОКОГО уровня. Дело в том, что подача на этот вход сигнала НИЗКОГО уровня от какой-либо внешней схемы будет воспринята модулем SP1 как выбор данного микроконтроллера в качестве ведомого и, соответственно, начало передачи ему данных. Во избежание конфликта на шине система SPI в таких случаях выполняет следующие действия:

1. Флаг MSTR регистра SPCR сбрасывается, и микроконтроллер переключается в режим Slave. Как следствие, выводы MOSI и SCK начинают функционировать как входы.

2. Устанавливается флаг SPIF регистра SPSR, генерируя запрос на прерывание от SPI. Если прерывания от SPI разрешены и флаг I регистра SREG установлен в «1», происходит запуск подпрограммы обработки прерывания.

Таким образом, если ведущий микроконтроллер использует передачу данных, управляемую прерыванием, и существует вероятность подачи на вход SS сигнала НИЗКОГО уровня, в подпрограмме обработки прерывания от SPI обязательно должна осуществляться проверка состояния флага MSTR. При обнаружении сброса этого флага он должен быть программно установлен обратно в «1» для обратного перевода микроконтроллера в режим Master. [ 1, с.419-426 ]

 


Поделиться:

Дата добавления: 2014-12-30; просмотров: 92; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты