РАБОТА ПОСЛЕДОВАТЕЛЬНОГО КАНАЛА SPI на МК AVR

March 7, 2011 by admin Комментировать »

Цель работы – изучение приема и передачи информации по последовательному каналу SPI (Serial Peripheral Interface) и программирование ввода;вывода.

Интерфейс SPI используется для организации высокоскоростного канала связи между микроконтроллером и периферийными устройствами, а также обмена данными между микроконтроллерами.

В состав модуля SPI (рис. 5.6) входят:

–    8-разрядный сдвиговый регистр SPDR, который принимает байт данных с шины данных микроконтроллера, сдвигает его вправо или влево с выдачей последовательного кода на вывод микроконтроллера, одновременно с выводом принимает последовательный код со входа микроконтроллера и через буферный регистр передает его на шину данных микроконтроллера;

–    8-разрядные регистр управления SPCR и регистр состояния SPSR;

–    предварительный делитель частоты;

–    схемы управления.

Рис. 5.6. Структурная схема SPI (имена сигналов на выходах 0-7 регистра SPCR приведены в табл. 5.4)

В микроконтроллерах АТх8515 для сигналов интерфейса SPI выделены четыре линии порта РВ: РВ5 – MOSI, РВ6 – MISO, PB7-SCK, PB4-;SS.

Порт SPI может работать в режиме ведущего (master) или ведомого (slave). Выбор режима определяется установкой бита MSTR управляющего слова SPCR (табл. 5.4).

Таблица 5.4. Управляющее слово SPCR порта SPI

№ разряда

7

6

5

4

3

2

1

0

Имя

SPIE

SPE

DORD

MSTR

CPOL

СРНА

SPR1

SPRO

При MSTR = 1 порт SPI работает в режиме ведущего. При этом вывод MOSI является выходом данных, вывод MISO – входом данных, вывод SCK – выходом для импульсов, используемых в качестве сдвиговых при приеме данных ведомым микроконтроллером. Функция вывода ;SS зависит от состояния разряда DDRB.4. При DDRB.4 = 1 вывод ;SS порта SPI не подключен к выводу порта РВ4, при DDRB.4 = О значение сигнала на входе влияет на работу порта SPI. Если PB4(;SS) = 1, порт работает в режиме ведущего, а при появлении сигнала О переключается в режим ведомого. Перевод порта SPI в рабочее состояние осуществляется путем установки бита SPE регистра SPCR.

При MSTR = О порт SPI работает в режиме ведомого. При этом вывод MOSI является входом данных, вывод MISO – выходом данных, вывод SCK – входом для импульсов сдвига, вывод ;SS – входом. Выводы SPI подключаются к выводам порта РВ также при

Рис. 5.7. Схема соединения двух микроконтроллеров (master – ведущий, slave – ведомый)

установке бита SPE регистра SPCR. Перевод порта в рабочее состояние осуществляется по сигналу логического О на входе ;SS.

На рис. 5.7 приведена схема соединения двух микроконтроллеров для обмена данными по каналу SPI.

Передача данных начинается после записи данных в регистр SPDR ведущего микроконтроллера. Диаграммы сигналов при передаче данных по интерфейсу SPI приведены на рис. 5.8.

Порядок выдачи определяется состоянием бита DORD при настройке канала. Если DORD = 1, вывод начинается с младшего разряда (LSB), иначе – со старшего (MSB). После выдачи последнего разряда устанавливается в 1 флаг SPIF (бит 7 регистра состояния SPSR) и одновременно вырабатывается запрос прерывания SPI STC с адресом вектора $008, если флаг разрешения прерывания SPIE от модуля SPI при настройке канала был установлен в 1. Одновременно с передачей производится прием данных от

Рис. 5.8. Временные диаграммы сигналов интерфейса SPI (¦ – неопределенное состояние)

ведомого микроконтроллера. По окончании приема данных в ведомом микроконтроллере также устанавливается в 1 флаг SPIF и вырабатывается запрос прерывания SPI STC при разрешении прерывания. При попытке записи в регистр данных SPDR во время передачи очередного байта устанавливается в 1 флаг WCOL (бит 6 регистра состояния SPSR).

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

ISIS 6 Professional из пакета Proteus 6 Professional фирмы Labcenter Electronic с сайта http:;;www.labcenter.co.uk.

Создадим проект для схемы на рис. 5.10.

Микроконтроллер МК1 (U1) работает в режиме master (ведущий), микроконтроллер МК2 (U2) – в режиме slave (ведомый).

Выбрав из библиотеки компонентов Component;PickDevices; Micro микроконтроллер AT90S8515 (ATmega8515), в окно редактора вводим два микроконтроллера, которые соединяем линиями связи. Добавляем периферийные устройства: переключатель (SW-SPST) из библиотеки компонентов Component;Active и, при желании, светодиоды, так как выводы всех портов индицируются программой автоматически. Присоединяем выводы переключателя: один – к выводу порта PD5, второй – к общей шине GROUND, выбрав ее из списка Inter-sheet Terminal на панели инструментов.

Предварительно выделив правой кнопкой мыши переключатель и щелкнув левой кнопкой, в открывающемся окне назначаем ему новое имя – SW5. Сохраняем проект, создав для него новую папку (например, Sample;SPI). С помощью команд меню Source;Add ;Remove Source files., добавляем файлы с программами передачи и приема. Для этого воспользуемся подготовленными в AVR Studio 4 файлами с расширением .asm. Выполняем совместную компиляцию программ командой Source;Build All При отсутствии ошибок связываем микроконтроллеры с соответствующими им hex- файлами. Для этого нужно, выделив предварительно на схеме правой клавишей мыши обозначение микроконтроллера, щелчком левой клавиши мыши открыть окно, в котором указывается путь к файлу. (Микроконтроллеры можно связать также с hex-файлами, полученными при компиляции в AVR Studio 4, не прибегая к компиляции в ISIS. – Пргш. авт.) Чтобы перейти к отладке, выполним команду меню Debug;Start;Restart Debugging. Открыв окна I;O Registers, Internal RAM, Source Code для обоих AVR устройств (Ul, U2), осуществляем пошаговую отладку, нажимая клавишу F11, наблюдая за состоянием регистров SPI и ячеек SRAM и замыкая- размыкая SW5 для вывода данных в порт PC (для светодиодов). Для ускорения работы при отладке в пошаговом режиме вызов подпрограммы задержки в программе следует закомментировать.

Задание 2. Изменить программу 5.3, организуя однократное переключение сигнала из 1 в О на линии РВО перед выводом первого байта и, таким образом, сохраняя постоянно уровень сигнала О для всех последующих передач. Проверить работу интерфейса на модели путем симуляции.

Задание 3. Изменить обе программы, задав CPOL = 1. Проверить работу интерфейса на модели путем симуляции. Обратить внимание на изменение полярности сигналов на линии РВ7 (SCK).

Задание 4. Изменить обе программы, задав DORD = 1. Проверить работу интерфейса на модели. Обратить внимание на изменение порядка вывода битов данных на линию MOSI, т. е. начиная с младшего разряда.

Задание 5. Экспериментальная проверка передачи и приема по интерфейсу SPI в STK500.

Запрограммируем микроконтроллеры МК1 и МК2, используя две платы STK500. Отключив питание, выполним необходимые соединения между портами микроконтроллеров: РВОмк! с РВ4мк2, пару (РВ5, РВ7)мк1 с парой (РВ5, РВ7)мк2, обеспечивающие передачу данных в одном направлении – из МК1 в МК2.

6—1998

При необходимости платы STK500 после программирования можно отсоединить от кабелей RS-232. Соединим между собой выводы GND обеих плат. На плате STK500-2 соединим шлейфом порт PC – LED, PD5-SW5. Включив питание, кнопкой RESET запустим программу микроконтроллера МК2 для приема данных, переведя его в режим ожидания установки флага приемника SPIF. Затем, запустив кнопкой RESET программу микроконтроллера МК1, выполняем передачу. По окончании приема (светодиоды включены) проверяем работу интерфейса. Нажимая кнопку SW5 на плате STK500 второго МК, наблюдаем на индикаторах принятые байты данных. Повторим передачу несколько раз, перезапуская программы микроконтроллеров (сначала МК2, затем МК1) и просматривая принимаемые данные.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты