Последовательный периферийный интерфейс – SPI. Цель работы.Изучение принципа работы SPI
Цель работы.Изучение принципа работы SPI. Получение навыков использования SPI для программирования МК и организации приема/передачи данных. Разработка и отладка управляющих программ приема/передачи и программ обработки данных.
Краткие теоретические сведения
SPI представляет собой последовательный трехпроводной синхронный интерфейс, предназначенный для обмена данными с другими устройствами и внутрисистемного программирования МК.
Устройство, которое имеет SPI порт работает по принципу ведущий-ведомый. К одному порту могут быть подключены несколько ведомых устройств. В некоторых случаях SPI порт используется только в однонаправленном режиме. Более подробно см. раздел 2.9.
Соединение ведущего и ведомого производится посредством трех линий: MOSI, MISO, SCK. (см. раздел 2.9).
Ведущее устройство по линии MOSI посылает данные в последовательном коде для ведомого, а по линии SCK формирует тактовые импульсы для ведомого. Частота SCK определяет скорость обмена, причем тактовые импульсы всегда формирует ведущий. Максимальная частота не должна превышать частоту МК/4.
При приеме данных ведущее устройство формирует тактовые импульсы, а ведомое передает данные по линии MISO. В отличие от UART, SPI не может одновременно принимать и предавать данные.
Особенности SPI:
1. Обмен данными можно производить, начиная со старшего или с младшего разряда.
2. После завершения приема/передачи формируется запрос прерывания.
3. Имеет программные средства определения скорости обмена.
4. Имеет режим энергосбережения (работает только ведомый).
При подключение к одному ведущему несколько ведомых необходимо управлять выходом SS. В этом случае линии MISO, MOSI программируются пользователем. В одной системе могут быть два и более ведущих, работающих поочередно.
Управление портом производится с помощью регистров: SPDR, SPCR, SPSR.
Регистр данных SPDR.Необходим для временного хранения передаваемых или получаемых данных.
Регистр управления SPCR.Предназначен для хранения управляющих слов организующих работу порта.
Назначение битов регистра:
· D7-SPIE – бит разрешения прерывания по завершению приема данных.
· D6-SPE – разрешение работы SPI.
· D5-DORD – порядок данных. При установке передача начинается с младшего разряда, иначе со старшего.
· D4-MSTR – бит выбора режима ведущий/ведомый.
· D3-CPOL – полярность тактовых сигналов.
· D2-CPHA – фаза тактового сигнала.
· D1,D0-SPR1,SPR0 – скорость обмена.
Регистр статуса SPSR.Предназначен для хранения служебной информации о порте и о ходе его работы. Назначение битов регистра:
· D7-SPIF – флаг завершения передачи/приема.
· D6-WCOL – бит ошибки положения.
· D5-D0 – зарезервировано.
Пример программы передачи байта данных по SPI порту. Данные для передачи считывать из порта А.
;------------------------------------------------------------
;инициализация стека
ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
;------------------------------------------------------------
;инициализация порта А
clr r16
out DDRA, r16
;------------------------------------------------------------
;инициализация передатчика в режиме мастер
ldi r16,(1<<DDB5)|(1<<DDB4)
;установка MOSI и SCK на вывод, все остальные на ввод
out DDRB,r16
;разрешение SPI в режиме мастера, установка скорости связи fck/16
ldi r17,(1<<SPE)|(1<<MSTR)|(1<<SPR0)
out SPCR,r17
Start:
In r16, PORTA ;ввод байта из порта А
RCall Transmit ;вызов подпрограммы передачи байта данных
rjmp start
;------------------------------------------------------------
;Подпрограмма передачи данных
Transmit:
out SPDR,r16 ;Запуск передачи данных
Wait:
sbis SPSR,SPIF ;Ожидание завершения передачи данных
rjmp Wait
ret
Индивидуальные задания к выполнению
Лабораторной работы №6
Разработать программу (варианты)
1. передачи данных, расположенных в ОЗУ, начиная со старшего бита, по порту SPI.
2. приема данных в режиме ведомого по порту SPI с сохранением их в ОЗУ по сигналу «Запрос прерывания».
3. приема данных по порту SPI. Если количество единиц в байте четное, то сохранить байт в одной области ОЗУ, нечетное - в другой области.
4. приема данных по порту SPI. Если количество единиц в байте четное, то записать байт в порт A, иначе - в порт В.
5. приема данных по порту SPI. Если четное число, то сохранить в одной области ОЗУ, иначе - в другой области.
6. приема данных по порту SPI. Если четное число, то записать в порт A, иначе - в порт В.
7. передачи данных по порту SPI в режиме ведущего по двум адресам. Передаваемые данные расположены в ОЗУ.
8. передачи и приема данных по порту SPI с контролем по паритету.
Контрольные вопросы к лабораторной работе № 6
1. Назначение SPI порта МК и его основные характеристики.
2. Режимы работы SPI и отличительные особенности.
3. Формат регистра статуса SPI - SPSR и назначение битов регистра. Привести пример использования регистра статуса SPI
4. Регистр управления SPI - SPCR и назначение битов регистра. Привести пример использования регистра управления SPI.
5. Выбор частоты тактового сигнала и требования к выбору частоты обмена данными.
6. Назначение регистра данных SPI - SPDR.
7. Привести пример считывания содержимого регистра статуса SPI, записи данных в регистры управления и данных SPI.
8. Вектора прерывания SPI и их назначение. Привести пример организации приема/передачи в режиме прерывания.
9. Приведите временные диаграммы приема/передачи информации SPI порту.
10. Привести схему соединения ведущего и ведомого МК по SPI порту.
11. Особенности использования SPI при программировании МК.
12. Чем отличается работа ведущего-приемника от ведомого-приемника?
13. Чем отличается работа ведущего-передатчика от ведомого-передатчика?
Лабораторная работа №7