Последовательный периферийный интерфейс – 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