Файл: Микропроцессорные устройства систем управления (Ю.И. Иванов, 2005).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.06.2025
Просмотров: 1572
Скачиваний: 1
РВ6), SS (альтернативная функция РВ4). Контроллер при обмене данными может работать в режиме ведущий (master) или ведомый (slave). Структур ная схема, поясняющая алгоритмы работы интерфейса, приведена на рис. 6. Этот же интерфейс используется для внутрисистемного программирования микроконтроллера с записью данных в FLASH и EEPROM.
SPI-master управляет обменом данных. Он формирует информационную 8-битовую последовательность на выходе MOSI, стробирующую выдачу данных, последовательность тактовых импульсов на выходе SCK и одно временно может принимать на входе MISO 8-битовую последовательность, стробируемую импульсами SCK. Если РВ4 конфигурируется как выход (DDB4=1), сигнал SS не используется, и РВ4 может работать в стандартном режиме вывода. Если РВ4 конфигурируют как вход (DDB4=0), при SS=1 продолжается работа в режиме SPI-master. Сигнал SS=0, поступающий от другого устройства, должен рассматриваться как запрос на переход в ре жим SPI-slave для приема данных.
master | |
| slave |
||||||||||
| |
8-битовый |
] |
MISO I |
PB6 |
PB6 |
1 MISO |
|||||
1 |
регистр сдвига |
Iе |
Г |
1 |
|РММНКЯ |
||||||
i i |
MOSI | |
РВ5 |
PB5 |
I MOSI |
к |
||||||
1 |
1 |
||||||||||
1 |
1 |
||||||||||
|PB7 |
PB7| |
I |
Схема |
! |
|||||||
SCK |
1 |
1 sc*( |
| |
управления |
| |
||||||
i_ |
i |
||||||||||
ss |
|PB4 |
P B 4 | |
ss |
J |
|||||||
I |
I |
||||||||||
Рис. 6. Интерфейс SPI
SPI-slave управляется последовательностью импульсов на входе SCK и принимает информационную 8-битовую последовательность, подаваемую на его вход MOSI. Параллельно с приемом данных по этим же стробирующим импульсам SCK может формироваться выходная информационная по следовательность на выходе MISO. Для этого режима РВ4 должен конфи гурироваться входом. При SS=0 реализуется режим SPI-slave, если SS=l, интерфейс переходит в пассивное состояние и перестает работать.
Для режима SPI-master конфигурирование порта В следующее: MISO - вход, MOSI - выход, SCK - выход, SS - вход (как вход используется только при необходимости), для режима SPI-slave: MISO - выход, MOSI - вход, SCK - вход, SS - вход (задается сигнал логического нуля для работы ин-
49
терфейса). Обмен данными между SPI-master и SPI-slave производится по алгоритму кольцевого регистра сдвига (рис. 6), по каждому такту SCK дан ные сдвигаются на один бит, после 8 тактов содержимое регистра-master и регистра-slave меняется местами. Соединение MOSI - MOSI обеспечивает передачу от SPI-master к SPI-slave, а соединение MISO - MISO использует ся при необходимости передачи данных в обратном направлении.
Управление интерфейсом SPI производится тремя регистрами файла ре гистров ввода-вывода: регистром данных - SPDR, регистром управления - SPCR, регистром состояния - SPSR. SPDR и SPCR программно доступны и для чтения, и для записи, SPSR доступен только для чтения. Логическая организация этого интерфейса, как и других интерфейсных средств, рас сматриваемых далее, существенно сложнее, чем в параллельных портах ввода-вывода. Передача данных выполняется не за один такт микрокон троллера, а требует формирования целой последовательности сигналов. Поэтому необходимо согласование и логического взаимодействия, и вре менного взаимодействия с другими реализуемыми функциями.
В главе 1 было показано, что наиболее успешно эти задачи решаются применением процедур ввода-вывода по прерываниям. Практически все интерфейсные устройства микроконтроллера содержат средства поддержки для выполнения процедур прерываний; индивидуально формируемые за просы прерываний, соответствующая им таблица векторов прерываний, флаги разрешения и запрета обработки прерываний, аппаратно реализуемая процедура вызова прерываний. Более полно особенности системы преры ваний микроконтроллера будут рассмотрены в одном из последующих раз делов. В описании же работы каждого из интерфейсных средств, в том чис ле и интерфейса SPI, будут упоминаться только необходимые элементы системы прерываний.
SPDR служит для записи передаваемых данных и чтения данных, кото рые поступили в регистр сдвига при обмене. SPCR содержит 8 бит управ ления интерфейсом (слева в таблице символических имен старший бит).
Символические имена битов управления регистра SPCR
| SPIE | SPE | DORP | MSTR \ CPOL | CPHA j SPR1 | SPRO [
SPIE - бит разрешения прерывания SPI, 0 запрещает прерывания.
SPE - бит разрешения работы; при 0 запрещены любые операции в SPI, 1 разрешает работу интерфейса.
DORD - при 1 первым передается младший бит слова данных, при 0 - старший бит.
MSTR - при I определяется режим SPI-master, при 0 - режим SPI-slave. Младшие 4 бита SPCR определяют параметры тактового сигнала SCK:
50
CPOL - определяет пассивный уровень сигнала SCK в перерывах передачи данных, т.е. при 0 тактовый сигнал в пассивном состоянии интер фейса тоже нулевой.
СРНА - при 0 запись данных должна производиться каждым первым фронтом сигнала SCK после пассивного уровня, при 1 - каждым вторым фронтом сигнала после пассивного уровня.
SPR1 и SPR0 задают частоту сигнала SCK; коэффициент деления такто вой частоты микроконтроллера для интерфейса определяется эти ми битами следующим образом:
00 - коэффициент деления 4,
01 ~ коэффициент деления 16,
10 - коэффициент деления 64,
11 - коэффициент деления 128.
В регистре SPSR используется только 2 старших бита. SPIF (бит 7) - флаг прерывания, WCOL (бит 6) - флаг коллизии. SPIF устанавливается в 1 после каждого цикла передачи данных или после отмены режима SPImaster сигналом SS. SPIF вызывает вектор прерывания SPI_STC (адрес вектора $00а), если бит SPIE=1 (разрешение прерывания в SPCR) и уста новлен флаг глобального прерывания I в регистре состояния SREG*. Флаг прерывания очищается автоматически при вызове вектора прерывания SPISTC либо одновременно с очисткой флага WCOL. Флаг коллизии ус танавливается в случае чтения регистра SPDR в период передачи данных в SPI (некорректное чтение данных) и автоматически очищается одновре менно с флагом SPIF после чтения регистра SPSR и последующего обра щения к регистру SPDR.
Если биты в регистре управления SPCR для выбора необходимого ре жима заданы, запись байта данных в регистр SPDR микроконтроллера в режиме SPI-master приводит к началу рабочего цикла интерфейса. SPImaster (рис. 6) передает на MOSI данные, с входа MISO может записывать данные от SPI-slave и на выходе SCK формирует 8 импульсов, управляю щих передачей байта данных. Под управлением этих же сигналов SCK SPIslave (рис. 6) принимает данные с входа MOSI и может передавать из сво его регистра SPDR данные на выход MISO.
После завершения рабочего цикла обмена данными в микроконтроллере, работающем в любом режиме, устанавливается флаг прерывания для вызо ва вектора прерывания SPISTC. Подпрограмма обработки этого вектора должна выполнять операции доступа к регистрам SPI для реализации не обходимых функций интерфейса. Например, чтение из SPDR, поступивших в предыдущем цикле данных, и запись в него новых данных для передачи в следующем цикле. Управление битом разрешения прерываний SPIE позво ляет отказаться от вызова вектора прерывания SPISTC и производить
" регистр состояния SREG будет описан позднее
51
только программный ввод-вывод данных с программным опросом состоя ния интерфейса SPI. К микроконтроллеру SPI-master для обмена данными вместо второго контроллера может быть подключен и обычный регистр сдвига разрядности, соответствующей формату данных.
Таким образом, интерфейс SPI обеспечивает за один рабочий цикл и пе редачу байта данных через SPDR на выход, и запись в этот же регистр но вого байта данных, поступившего на вход. Запуск рабочего цикла произво дится записью в SPI-master очередного байта данных в регистр SPDR. До первого рабочего цикла параметры работы интерфейса должны быть указа ны записью соответствующего байта управления в регистр SPCR. Команды обмена данными с регистрами интерфейса SPI аналогичны командам, рас смотренным в примерах работы с параллельными портами. Программы управления работой интерфейса SPI рассмотрены в примерах главы 5.
3.3. Последовательный интерфейс UART
Интерфейс UART обеспечивает полнодуплексную передачу данных че рез линии ввода-вывода порта D сигналами: вход приемника - RxD (аль тернативная функция PD0) и выход передатчика - TxD (альтернативная функция PD1). Приемник и передатчик интерфейса работают независимо друг от друга в асинхронном режиме со стандартными скоростями переда чи данных и стандартным форматом сообщения (более подробную инфор мацию можно найти в описании любого асинхронного приемопередатчика, например, К580ВВ51 [1] или интерфейса RS-232C). Длина одного сообще ния - 8 или 9 бит, минимальная скорость передачи - 2400 бит/с, другие стандартные скорости кратны минимальной (например, 4800, 9600, 14400 и т.д.).
Управление интерфейсом UART производится 4 регистрами из файла регистров ввода-вывода: UBR - регистр данных, UCR - регистр управле ния, USR - регистр состояния, UBRR - регистр скорости передачи данных. Все регистры интерфейса программно доступны и для чтения, и для записи. Основные алгоритмы управления интерфейсом предполагают применение процедур ввода-вывода по прерываниям. Таблица векторов прерываний микроконтроллера включает соответствующие вектора прерываний. Обра ботку и формирование других сигналов интерфейса кроме RxD и TxD не обходимо производить программно в подпрограммах векторов прерываний.
Регистр данных UDR физически состоит из двух независимых регист ров; при записи в UDR данные поступают в регистр передачи интерфейса, при чтении считывается содержимое другого регистра, обеспечивающего прием данных интерфейсом. Запуск передатчика интерфейса производится записью байта данных в UDR, а по завершению приема запускается проце дура вызова вектора прерывания для считывания байта данных, поступив шего в приемник.
52