Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
После того, как все биты регистров управления SP0CR1 и SP0CR2 установлены в соответствии с выбранным режимом работы, следует разрешить работу контроллера SPI. Для этого предназначен бит SPE регистра SP0CR1. Разрешение работы ведущего контроллера SPI должно быть выполнено ранее ведомого.
Если все операции по инициализации модулей SPI ведущего и ведомого МК завершены, то можно приступить к непосредственно к обмену данными. Начало обмена инициирует ведущий. Для этого необходимо под управлением программы записать пересылаемый байт информации в регистр данных SP0DR модуля SPI. Если сдвиговый регистр модуля в момент записи оказался пустым, то данные немедленно автоматически перемещаются из регистра данных в сдвиговый регистр. Далее аппаратные средства контроллера SPI формируют восемь импульсов синхронизации SCK. Каждый импульс SCK сдвигает один двоичный разряд регистра данных ведущего по линии MOSI в регистр данных ведомого. Одновременно другой разряд регистра данных ведомого по линии MISO вдвигается в регистр данных ведущего. По истечении восьми импульсов SCK пересылка одного байта заканчивается, и устанавливаются флаги SPIF в регистре состояния обоих контроллеров. В ведущем МК флаг SPIF сигнализирует о завершении передачи одного байта, в то время, как в ведомом МК этот флаг информирует о завершении приема байта данных. Если пересылка следующих байтов не предполагается, то вход ведомого должен быть установлен в 1, что переводит контроллер SPI ведомого устройства в неактивное состояние. Рассмотренный способ обмена характеризуется одновременным перемещением данных от ведущего к ведомому и в обратном направлении. Такой способ обмена называют полнодуплексным.
Аппаратные средства контроллера SPI могут генерировать запросы на прерывание. Два источника запросов располагаются в регистре состояния SP0SR. Первый источник — триггер завершения обмена SPIF, второй источник — флаг нарушения режима MODF.
Оба прерывания разрешаются установкой в 1 бита SPIE в регистре управления SP0CR1.
Вопросы для самопроверки1. Каковы различия между двумя режимами работы контроллера SPI: режимом ведущего и режимом ведомого?
Ответ: Контроллер SPI, работающий в режиме ведущего, начинает обмен и генерирует импульсы синхронизации SCK для обмена. Таким образом, ведущий контроллер управляет обменом. Ведомый контроллер SPI ожидает сигналов от ведущего, и под их управлением запоминает информацию с линии MOSI, а также генерирует информацию на линию MISO. Завершается обмен под управлением ведущего.
2. Каково назначение сигнала SCK?
Ответ: Сигнал SCK предназначается для синхронизации передачи информации между двумя устройствами. Частота этого сигнала определяет скорость передачи. В течение одного периода SCK два устройства обмениваются одним битом данных.
4.19.3. Регистры контроллера SPI
Подобно контроллеру асинхронного обмена контроллер SPI обслуживается несколькими регистрами специальных функций:
• Регистр скорости обмена;
• Регистры управления;
• Регистр состояния;
• Регистр данных.
Далее мы рассмотрим формат и назначение битов каждого регистра модуля SPI.
Регистр скорости обмена SPxBRРегистр скорости обмена SPxBR позволяет выбрать частоту следования импульсов синхронизации SCK, а, следовательно, и скорость обмена по синхронному последовательному интерфейсу. Формат регистра SPxBR представлен на рис. 4.72. Три бита этого регистра SPR2…SPR0 определяют коэффициент деления импульсной последовательности ECLOCK, из которой образуется сигнал синхронизации SCK. Соответствие численных значений коэффициентов деления возможным комбинациям битов SPR2…SPR0 устанавливает таблица рис. 4.72. Внимательно проанализируйте данные этой таблицы. Вспомните, что при тех же частотах системной шины МК, максимальная скорость обмена в асинхронном режиме с использованием контроллера SCI составляла 38400 бод, что для SPI эквивалентно частоте SCK в 38,4 кГц. А для контроллера SPI максимальная частота синхронизации, а, следовательно, и максимальная скорость обмена составляет 4,0 МГц.
Выбор частоты обмена по SPI
SPR[2:0] Коэффициент деления При частоте внутренней системной шины 4 МГц 8 МГц 000 2 2,0 МГц 4,0 МГц 001 4 1,0 МГц 2,0 МГц 010 8 500 кГц 1,0 МГц 011 16 250 кГц 500 кГц 100 32 125 кГц 250 кГц 101 64 62,5 кГц 125 кГц 110 128 31,3 кГц 62,5 кГц 111 256 15,6 кГц 31,3 кГц Формат регистров управления контроллера SPIРис. 4.72.
Регистры управления SPxCR1 и SPxCR2Формат первого регистра управления SPxCR1 контроллера SPI представлен на рис. 4.72. Биты этого регистра имеет следующее назначение:
SPIE:
Бит разрешения прерывания по запросу модуля SPI. Бит разрешает генерацию запросов на прерывание от модуля SPI. Запросы в модуле SPI могут генерироваться при установленном флаге SPIF, который свидетельствует о завершении приема или передачи одного байта информации, или при установленном флаге ошибки MODF.
1 — прерывания разрешены;
0 — прерывания по запросу приемника запрещены.
SPE:
Бит разрешения работы модуля SPI.
1 — контроллер SPI включен;
0 — контроллер SPI выключен.
SWOM:
Бит выбора режима открытого коллектора. Этот бит определяет состояние выходных буферов линий MOSI, MISO, SCK, если эти линии работают на вывод.
1 — буферы переведены в режим открытого коллекторного выхода;
0 — буферы работают в режиме двунаправленной передачи с возможностью установки в высокоимпедансное состояние.
Перевод линий MOSI и MISO в режим открытого коллектора позволяет соединить их по схеме «монтажное И».
MSTR:
Бит режима работы контроллера SPI.
1 — контроллер SPI работает в режиме ведущего (Master);
0 — контроллер SPI работает в режиме ведомого (Slave).
CPOL:
Бит выбора полярности сигнала синхронизации SCK.
Этот бит определяет состояние линии SCK между сеансами передачи данных. Бит CPOL вместе с битом CPHA задает один из четырех возможных режимов SPI интерфейса.
1 — SCK=1 между сеансами передачи данных
0 — SCK=0 между сеансами передачи данных
CPHA:
Бит выбора фазы сигнала синхронизации SCK. Этот бит определяет протокол обмена по SPI шине. Если CPHA=0, то начало обмена инициируется установкой сигнала выбора ведомого в активное состояние (режимы 0 и 1). Первый перепад сигнала синхронизации SCK используется принимающим устройством для запоминания очередного бита в сдвиговом регистре. Передающее устройство выставляет очередной бит посылки на линии MOSI по каждому четному фронту сигнала SCK. Сигнал на линии выбора ведущего должен быть возвращен в неактивное состояние после передачи каждого байта в любом направлении. Режимы 0 и 1 предпочтительно использовать в системах, которые имеют более одного ведомого устройства.
Если CPHA=1, то начало обмена определяет первое изменение уровня сигнала на линии SCK после установки сигнала выбора ведомого в активное состояние (режимы 2 и 3). Все нечетные перепады SCK вызывают выдвижение очередного бита посылки из сдвигового регистра передатчика на линию. Каждый четный перепад используется для записи этого бита в сдвиговый регистр приемника. Сигнал выбора ведомого может оставаться в активном состоянии = 0 в течение передачи нескольких байт информации. Режимы 2 и 3 рекомендуется использовать в системах с одним ведомым устройством.
SSOE:
Бит разрешения работы вывода в режиме ведущего. Если контроллер SPI работает в режиме ведущего, то при установке этого бита в 1 вывод может использоваться как вывод для формирования сигнала «выбор ведомого»