Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
16.04.2013
Размер:
238 Кб
Скачать

2. Последовательный периферийный интерфейс.

Последовательный периферийный интерфейс предназначен для соединения микроконтроллеров друг с другом или с периферийными устройствами. На физическом уровне он организован сложнее, чем последовательный интерфейс связи (здесь задействованы не две, а четыре линии порта D: MISO, MOSI, SCK, SS; подробнее см. теоретическую часть). Использование двух линий данных (MISO и MOSI) позволяет реализовать дуплексную связь, а поддержка статуса ОЭВМ в сети (Master/Slave) дает возможность вести корректный арбитраж при пользовании сетью.

Схема соединения ОМ по SPI приведена на рис.3. Сигналы MISO, MOSI, SCK, SS и C0 ведущего ОМ, буферизированы, а на ведомых ОМ кроме этого сигналы SS и С0 проходят через логический блок, который формирует активный (низкий) уровень на входе выбора нужного ведомого устройства SS (в зависимости от сигнала C0, поступающего от ведущего ОМ).

Рис.3 Схема соединения ОМ по SPI.

В данной лабораторной работе используется подключение ОМ по три (см. рис.3). При этом одна из них жестко сконфигурирована как ведущая (Master) и две как ведомые (Slave). Выбор одной либо другой ведомой платы для организации связи осуществляется младшим битом параллельного порта C (0 - ведомый ОМ1, 1 - ведомый ОМ2).

Рассмотрим работу SPI на примере, в котором демонстрируется обмен данными между ведущим и ведомым устройствами. Программы примера функционируют следующим образом. Командой с адресом $212 в программе 1 посылаются данные по сети. Затем программа дожидается окончания передачи (команда с адресом $214). Как только передача завершена (это значит, что завершен и прием данных, так как он протекает параллельно передаче), программа загружает полученное значение в регистр X и завершается. Конечно, во время передачи данных на ведомой машине должна выполняться программа 2. Ее задача - дождаться окончания обмена и увеличить полученное число на 1, чтобы в следующий раз отослать его обратно. Заметим, что командами $20C..$20F одновременно сбрасывается флаг окончания приема данных (RDRF).

Программа 1 должна запускаться на ведущей плате, программа 2 - на ведомой, причем программа 2 должна быть запущена на выполнение первой.

Программа 1:

200 LDA #$FF Конфигурируем порт C

STA $6 на запись.

LDA #$1 Выбираем ведомый

STA $2 микроконтроллер 2.

LDA #$18 Конфигурируем порт D

STA $7 (линии D3, D4 на вывод, остальные на ввод).

LDA #$54 Разрешаем передачу по SPI с выбранной

STA $A полярностью синхросигнала.

210 LDA $0 Посылаем число с переключателей

212 STA $C по сети.

214 BRCLR 7,$B,$214 Ждем окончания передачи.

217 LDX $C Считываем полученное значение.

219 BRA $219 Организуем бесконечный цикл.

Программа 2:

200 LDA #$4 Конфигурируем порт D

STA $7 (линию D2 на вывод, остальные на ввод).

LDA #$44 Разрешаем прием по SPI с выбранной

STA $A полярностью синхросигнала.

LDX $B Сбрасываем

STA $C флаги.

20C BRCLR 7,$B,$20C Ждем окончания приема.

20F INC $C Инкрементируем полученный байт.

213 BRA $20C Возвращаемся на прием данных.

Поставьте точку останова по адресу $219 в программе 1 и запустите сначала программу 2, затем программу 1. В результате в регистрах A и X ведущего микроконтроллера будут содержаться посланное и принятое значения соответсвенно (в регистре А - то, что установлено на переключателях дополнительной платы, в регистре Х - число $44). Запуская программу 1 несколько раз с различным положением переключателей, убедитесь, что приходящее с ведомой машины число на 1 больше того, которое передавалось на нее в прошлый сеанс связи.

Аналогично последовательному интерфейсу связи, при выполнении заданий следует учитывать, что адрес подпрограммы обработки прерывания от SPI должен заноситься в ячейки $1FF4 (старший байт) и $1FF5 (младший байт).

Контрольные вопросы и задания.

Соседние файлы в папке Motorola - Описание лаб