Студопедия

КАТЕГОРИИ:

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


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




Структурная схема модуля SPI приведена на Рис.11.

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

 

Рис. 11. Структурная схема модуля SPI

 

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

Название ATmega16x ATmega162x Описание
SCK PB7 PB7 Выход (master)/вход(slave) тактового сигнала
MISO PB6 PB6 Вход (master)/выход (slave) данных
MOSI PB5 PB5 Выход (master)/вход (slave) данных
SS PB4 PB4 Выбор ведомого устройства

 

При включенном модуле SPI режим работы указанных выводов (направление передачи данных) переопределяется согласно Табл.

 

Таблица. 19. Переназначение режима работы выводов модуля SPI

Вывод Режим Master Режим Slave
MOSI Определяется пользователем* Вход
MISO Вход Определяется пользователем*
SCK. Определяется пользователем* Вход
SS Определяется пользователем* Вход

 

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

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

 

 
  SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
Чтение(R)/Запись(W) R/W R/W R/W R/W R/W R/W R/W R/W
Начальное значение

 

Рис. 12. Формат регистра SPCR

 

Таблица 20. Регистр SPCR

Разряд Название Описание
SPIE Разрешение прерывания от SPI
SPE Включение/выключение SPI
DORD Порядок передачи данных
MSTR Выбор режима работы (Master/Slave)
CPOL Полярность тактового сигнала
CPHA Фаза тактового сигнала
1,0 SPR1:SPR0 Скорость передачи

 

Контроль состояния модуля осуществляется с помощью регистра состояния SPSR (доступен только для чтения), расположенного по адресу $0Е ($2Е). Формат этого регистра приведен на Рис. 13, а назначение его разрядов описано в Табл. 21.

 

 
  SPIF WCOL - - - - - SPI2X
Чтение(R)/Запись(W) R R R R R R R R/W
Начальное значение

 

Рис. 13. Формат регистра SPSR

 

Таблица. 21. Описание регистра SPSR

Разряд Название Описание
SPIF Флаг прерывания от SPI Данный флаг устанавливается в «1» по окончании передачи очередного байта. Если флаг SPIE регистра SPCR установлен в «1» и прерывания разрешены, одновременно с установкой флага генерируется прерывание от SPI. Также флаг SPIF устанавливается в «1» при переводе микроконтроллера из режима Master в режим Slave посредством вывода SS (см. раздел 10.3). Флаг сбрасывается аппаратно либо при старте подпрограммы обработки прерывания, либо после чтения регистра состояния SPI с последующим обращением к регистру данных SPI (SPDR).
WCOL Флаг конфликта записи Данный флаг устанавливается в «1» при попытке записи в регистр данных (SPDR) во время передачи очередного байта. Флаг сбрасывается аппаратно после чтения регистра состояния SPI с последующим обращением к регистру данных SPI.
5...0 - Зарезервированы, читаются как «0»
SPI2X Удвоение скорости обмена. При установке этого бита в 1 и работе микроконтроллера в режиме Master частота сигнала SCKудваивается.

 

Передаваемые данные записываются, а принимаемые - считываются из регистра данных SPDR, расположенного по адресу $0F ($2F). Запись в этот регистр инициирует начало передачи, а при его чтении считывается содержимое приемного буфера сдвигового регистра. Поэтому этот регистр можно назвать буфером между регистровым файлом микроконтроллера и сдвиговым регистром модуля SPI.

Соединение двух микроконтроллеров (ведущий - ведомый) по интерфейсу SPI показано на Рис. 14. Вывод SCK ведущего микроконтроллера является выходом тактового сигнала, а ведомого микроконтроллера - входом.

 

Рис. 14. Соединение микроконтроллеров по интерфейсу SPI

 

Перед выполнением обмена необходимо, прежде всего, разрешить работу модуля SPI. Для этого следует установить в «1» разряд SPE регистра SPCR. Режим работы определяется состоянием разряда MSTR этого регистра: если разряд установлен в «1», микроконтроллер работает в режиме Master (ведущий), если сброшен в «0» — в режиме Slave (ведомый).

Передача данных осуществляется следующим образом. При записи в регистр данных SP1 ведущего микроконтроллера запускается генератор тактового сигнала модуля SPI, и данные начинают поразрядно выдаваться на вывод MOSI и, соответственно, поступать на вывод MOSI ведомого микроконтроллера. Порядок передачи разрядов данных определяется состоянием разряда DORD регистра SPCR. Если разряд установлен в «1», первым передается младший разряд байта, если же сброшен в «0» — старший разряд. После выдачи последнего разряда текущего байта генератор тактового сигнала останавливается с одновременной установкой в «1» флага «Конец передачи» (SPIF). Если прерывания от модуля SPI разрешены (флаг SPIE регистра SPCR установлен в «1»), генерируется запрос на прерывание. При подключении к ведущему устройству нескольких ведомых, что разрешено спецификацией SPI, выбор конкретного ведомого устройства осуществляется подачей на его вход SS сигнала ВЫСОКОГО уровня.

Образно говоря, два сдвиговых регистра ведомого и ведущего устройств можно считать одним распределенным 16-разрядным циклическим сдвиговым регистром, как показано на Рис. 10.4. Одновременно с передачей данных от ведущего к ведомому происходит передача и в обратном направлении. Таким образом, в каждом цикле сдвига происходит обмен данными между устройствами.

В модуле используется одинарная буферизация при передаче и двойная — при приеме. Это означает, что готовый для передачи байт данных не может быть записан в регистр данных SPI до окончания предыдущего цикла обмена. При попытке изменить содержимое регистра данных во время передачи устанавливается в «1» флаг WCOL регистра SPSR. Сбрасывается этот флаг после чтения регистра SPSR с последующим обращением к регистру данных SPI.

Соответственно во время приема принятый байт должен быть прочитан из регистра данных SPI до того, как в сдвиговый регистр поступит последний разряд следующего байта. В противном случае первый байт будет потерян.


Поделиться:

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





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