Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
WCOL:
Бит нарушения режима передачи данных. Этот бит устанавливается в 1, если МК пытается записать в регистр данных SPxDR новый байт для передачи в то время, когда предыдущий байт еще находится в процессе передачи.
MODF:
Бит нарушения режима контроллера SPI. Устанавливается, если на линию
Формат регистра данных контроллера SPI приведен на рис. 4.75. Особенностью этого регистра является то, что он одновременно является регистром для размещения как передаваемых, так и принимаемых данных. Эта особенность обусловлена рассмотренным ранее принципом обмена по интерфейсу SPI. В процессе обмена регистр данных передающего контроллера (этот контроллер ведущий) и регистр данных принимающего контроллера (этот контроллер ведомый) объединяются в 16-разрядный кольцевой сдвиговый регистр. По прошествии восьми импульсов синхронизации SCK 8-разрядное слово из ведущего контроллера сдвигается в регистр данных ведомого контроллера. При этом 8-разрядное слово регистра данных ведомого перемещается в регистр данных ведущего. Таким образом, независимо от того, желает программист передать данные из ведущего в ведомый или принять данные из ведомого в ведущий, в любом из этих случаев оба устройства одновременно принимают и передают данные. Поэтому до сеанса обмена регистр данных ведущего контроллера содержит подготовленные к передаче данные, а после сеанса обмена этот же регистр содержит принятые данные.
Рис. 4.76. Формат регистра данных и альтернативные функции линий порта PORTS
Порт S может работать в режиме порта ввода/вывода общего назначения. Работа каждой линии в режиме ввода или в режиме вывода определяется соответствующим разрядом регистра направления передачи DDRS. Если линия порта PSx установлена на ввод, то чтение регистра данных порта PORTS возвращает в разряде PORTSx значение сигнала на соответствующем выводе МК. Если линия PSx установлена на вывод, то запись в разряд PORTSx регистра данных PORTS 1 или 0 устанавливает на выводе МК сигнал с логическим уровнем 1 или 0. Альтернативной функцией порта S является обслуживание контроллеров асинхронного SCI и синхронного SPI последовательного обмена.
Если порт S работает в режиме порта ввода/вывода общего назначения, то биты регистра направления передачи DDRS определяют режим ввода или режим вывода для каждой линии порта S. Если разряд DDRSx установлен в 0, то линия PSx работает в режиме ввода. При DDRSx = 1 линия PSx работает в режиме вывода.
Рис. 4.77. Формат регистра направления передачи порта PORTS
Если активизированы контроллеры последовательных интерфейсов, то значения битов регистра DDRS определяют режим работы линий порта S по следующим правилам:
DDRS2, DDRS0. Если контроллер SCI конфигурирован для работы в обычном двухпроводном режиме, то линии порта PS2 и PS0 будут выполнять функцию входов приемников двух модулей SCI независимо от значения битов DDR2 и DDR0.
DDRS3, DDRS1. Если контроллер SCI конфигурирован для работы в обычном двухпроводном режиме, то линии порта PS3 и PS1 будут выполнять функцию выходов передатчиков двух модулей SCI независимо от значения битов DDR3 и DDR1.
DDRS6…DDRS4. Если контроллер SPI
DDRS7. Если контроллер SPI активизирован и работает в режиме ведомого, то линия PS7 будет выполнять функцию входа для выбора ведомого
1. Какова минимальная частота сигнала синхронизации SCK, если частота импульсной последовательности ECLK составляет 8 МГц?
Ответ: При значении кодовой комбинации битов SPR2…SPR0 = 111 частота SCK составляет 31,2 кГц.
2. Какова максимальная частота сигнала синхронизации SCK, если частота импульсной последовательности ECLK составляет 4 МГц?
Ответ: При значении кодовой комбинации битов SPR2…SPR0 = 000 частота SCK составляет 2 МГц.
3. Напишите выражение на Си для установки минимальной частоты SCK.
Ответ: SP0BR = 0x07
4. Каково назначение флага SPIF?
Ответ: Этот флаг устанавливается, когда контроллер SPI завершил выдачу на линию восьми бит данных. Чтобы сбросить бит SPIF необходимо сначала прочитать регистр состояния SP0SR, а затем выполнить операцию записи в регистр данных SP0DR.
4.19.4. Алгоритмы программного обслуживания контроллера SPI
Ранее в данном параграфе мы обсудили действия, которые необходимо совершить, чтобы инициировать пересылку одного байта с использованием интерфейса SPI. Эти действия отражены в блок-схемах алгоритмов, которые представлены на рис. 4.78. Далее мы покажем, как записать эти действия на Си.
Рис. 4.78. Блок-схемы алгоритмов программного обслуживания контроллера асинхронного обмена SPI
Микроконтроллер и периферийные интегральные схемы. Одна из основных функций интерфейса SPI в микропроцессорных системах — обмен данными между МК и установленными на той же печатной плате интерфейсными ИС. Контроллер SPI в составе МК 68HC12 может быть инициализирован для работы как в режиме ведущего (мастера), так и в режиме ведомого (подчиненного). В процессе обмена с интерфейса SPI — дополнительная функция линий PS7..PS4 порта S. Сигналы SPI распределяются между линиями PS7..PS4 в следующем порядке:
• PS7 — сигнал
• PS6 — сигнал SCK;
• PS5 — сигнал MOSI. По этой линии передаются данные от ведущего устройства к ведомому;
• PS4 — сигнал MISO. По этой линии передаются данные от ведомого устройства к ведущему.
Регистры управления, используемый в примере. Ниже перечислены биты и регистры управления, которые используются в данном примере: