135324 (721865), страница 9
Текст из файла (страница 9)
при FE=1-индицирует отсутствие стоп-бита в принятых данных. FE устанавливается одновременно с установкой RDRF. Если принятый байт вызывает и ошибку кадрирования, и ошибку переполнения, процессор опознает только переполнение. Дальнейшая передача данных в RDR запрещается до сброса FE.
при FE=0-сброс бита FE произошел при чтении SCSR, следовавшим за чтением RDR.
Регистр данных (SCDAT) расположен по адресу 11Н и используется для передачи и приема данных.
Регистр данных
SCD7 | SCD6 | SCD5 | SCD4 | SCD3 | SCD2 | SCD1 | SCD0 |
Как уже упоминалось, SCDAT функционирует как два раздельных регистра: передающий и принимающий.
Перейдем к рассмотрению Последовательного периферийного интерфейса, дающего возможность нескольким ОЭВМ и/или периферийным устройствам быть объединенными в одно целое. Периферийные устройства могут представлять собой как простой сдвиговый TTL регистр, так и сложные подсистемы, например драйверы жидкокристаллических дисплеев или системы ЦАП или АЦП.
В формате периферийного интерфейса сигнал синхронизации не включен в поток данных и выполнен в виде отдельного сигнала. Система на основе последовательного периферийного интерфейса должна состоять из одного ведущего устройства (ОЭВМ) и нескольких ведомых устройств, которые также могут представлять собой ОЭВМ (см. рис. 2-13), либо ОЭВМ, которые могут быть как ведущими, так и ведомыми.
Особенности интерфейса:
· полно-дуплексная, трехпроводная синхронная передача данных;
· работа ОЭВМ в качестве ведущего или ведомого устройства;
· максимальная частота ведущего 1.05 МГц;
· максимальная частота ведомого 2.1 МГц;
· четыре программируемые скорости передачи данных ведущим;
· программируемая полярность синхронизации и фаза;
· флаг прерывания при окончании передачи;
· флаг защиты от конфликта при записи данных;
· возможность защиты от сбоя режима ведущий-ведомый.
Рис. 2-11 Последовательный периферийный интерфейс. Блок-схема.
Блок-схема интерфейса представлена на рис. 2-11. При работе с периферийным интерфейсом нет необходимости указывать направление передачи данных, поскольку "ведущий" одновременно производит передачу и прием по раздельным линиям. Сдвиговые регистры ведущего и ведомого устройств удобно рассматривать как один 16-битный регистр, замкнутый в кольцо. Когда происходит передача данных, содержимое регистра сдвигается на 8 позиций, и устройства обмениваются данными.
Как видно из рис. 2-12, в состав периферийного интерфейса входят 4 линии (MOSI, MISO, SCK и SS), назначение которых приведено ниже:
MOSI (Master Out, Slave In)-линия, предназначенная для ввода последовательной информации, если устройство находится в режиме "ведомый", или для вывода информации, если устройство находится в режиме "ведущий". Данные по линии передаются в одном направлении старшим битом вперед.
MISO (Master In, Slave Out)-линия, предназначенная для ввода последовательной информации, если устройство находится в режиме "ведущий", или для ввода информации, если устройство находится в режиме "ведомый". Данные по линии также передаются старшим битом вперед. Линия MISO ведомого устройства находится в высокоимпедансном состоянии, если режим "ведомый" для него не выбран (SS\=1). Линия MISO ведомого устройства находится в состоянии высокого импеданса, если SS=1.
SCK (Serial CloK)-вывод синхронизации. Поскольку синхронизация происходит по ведущему устройству, линия SCK ведомого устройства работает на ввод. Как показано на рисунке, возможны четыре различных типа синхронизации, которые могут быть выбраны через биты CPOL и CPHA регистра управления. Режим синхронизации задается одинаковым для ведущего и ведомого устройств. Биты SPR0 и SPR1 в регистре управления ведущего устройства задают скорость обмена информацией. Значение этих бит у ведомого прибора не имеет значения.
SS\ (Slave Select)-выбор ведущий/ведомый. Линия SS\ имеет высокий уровень у ведущего устройства. Если вывод SS\ ведущего устройства переходит в состояние логического нуля, в регистре статуса SPSR устанавливается флаг MODF. Если ОЭВМ работает как ведущее устройство, генератор ведущего устройства является источником сигнала синхронизации для ведомых устройств. Данные параллельно загружаются в 8-битный сдвиговый регистр из внутренней шины (в ходе цикла записи) и затем последовательно поступают через вывод MOSI на ведомое устройство. В ходе цикла чтения данные поступают последовательно через вывод MISO от ведомого устройства в 8-битный сдвиговый регистр. Затем данные параллельно переносятся в буфер чтения и становятся доступными для чтения с внутренней шины. Если ОЭВМ работает как ведомое устройство, то на внешний вывод SS\ должен поступать сигнал низкого уровня, а на вывод SCK-сигнал синхронизации. Данные от ведущего устройства поступают последовательно на вывод MOSI и передаются в 8-битный сдвиговый регистр для параллельного переноса в буфер чтения. У ведомого в ходе цикла записи, данные параллельно загружаются в 8-битный сдвиговый регистр с внутренней шины данных, ожидая сигнала синхронизации от ведущего, для того чтобы последовательно передать данные через вывод MISO.
Рис. 2-12. Структурная схема SPI.
На рис. 2-13 представлена типовая схема подключения пяти микропроцессорных устройств, из которых одно является ведущим, а четыре-ведомыми. В этой системе у каждого устройства обозначены основные контакты: MISO, MOSI, SCK и SS\.
Рис. 2-13 Схема подключения устройств с использованием периферийного интерфейса.
Рис. 2-14 Диаграмма работы SPI.
На рисунке 2-14 представлена временная диаграмма, показывающая соотношение данных с сигналом синхронизации. Как видно из рисунка, возможны 4 различных варианта, которые могут быть выбраны через биты CPOL и CPHA управляющего регистра. Различные протоколы работы SPI позволяют осуществлять обмен данными с любыми последовательными синхронными устройствами.
В состав периферийного интерфейса входят три регистра, которые осуществляют управление, отражают статус, а так же выполняют другие функции.
Управляющий регистр (SPSR), расположенный по адресу 0АН, контролирует индивидуальные функции интерфейса: прерывания, разрешение/запрет доступа, выбор ведущего/ведомого устройства и другими.
Управляющий регистр
Название | SPIE | SPE | - | MSTR | CPOL | CPHA | SPR1 | SPR0 |
Установка после RESET | 0 | 0 | - | 0 | 0 | 0 | 0 | 0 |
SPIE-бит разрешения/запрета прерываний от последовательного интерфейса связи,
при SPIE=1 прерывания разрешены,
при SPIE=0 прерывания запрещены,
SPE-активация/блокировка интерфейса,
при SPE=1-система периферийного интерфейса активирована,
при SPE=0-система блокирована,
MSTR-бит выбора режима ведущий/ведомый,
при MSTR=1-режим "ведущий",
при MSTR=0-режим "ведомый",
CPOL-бит полярности синхронизации (см. рис. 17),
при CPOL=1-SCK-линия считается нерабочей в высоком состоянии,
при CPOL=0-SCK-линия считается нерабочей в низком состоянии,
CPHA-фаза синхронизации (см. рис. 17),
при CPHA=1 вывод SS\ является управляющим выводом доступа к данным
при CPHA=0-сдвиг синхронизации является логическим "ИЛИ" SCK и SS. Когда SS в состоянии 0 первый фронт SCK является сигналом начала передачи.
Биты SPR0,SPR1 задают скорость передачи данных, которую можно выбрать, руководствуясь таблицей:
SPSR1 | SPSR0 | Внутренняя синхронизация делится на |
0 | 0 | 2 |
0 | 1 | 4 |
1 | 0 | 16 |
1 | 1 | 32 |
Регистр статуса расположен по адресу 0ВН и содержит три бита статуса
Регистр статуса
Название | SPIF | WCOL | - | MODF | - | - | - | - |
Установка после RESET | 0 | 0 | - | 0 | - | - | - | - |
SPIF-флаг пересылки данных,
при SPIF=1-индицирует завершение обмена данными между ОЭВМ и внешним устройством. Передача данных начинается при записи "ведущим" данных в регистр данных. (если SPIF=1 и SPIE=1 прерывания разрешены),
при SPIF=0-сброс происходит при чтении SPSR (где SPIF=1), следующим за доступом к SPDR.
WCOL-флаг конфликта записи,
при WCOL=1-индицирует попытку записи данных в SPDR в тот момент, когда процесс обмена данными еще не завершен, передача данных прекращается,
при WCOL=0-сброс происходит при чтении SPSR (где WCOL=1), следующим за доступом к SPDR.
MODF-флаг сбоя режима,
при MODF=1-индицирует конфликт системы из-за наличия нескольких ведущих устройств. Флаг устанавливается, если cигнал на линии SS/ переходит в низкий уровень, в то время, как ОЭВМ конфигурируется ведущим устройством,
при MODF=0- сброс достигается при чтении SPSR (где MODF=1), следующим за записью в SPSR.
Регистр данных расположен по адресу 0СН и предназначен для обмена данными. Запись в этот регистр у ведущего устройства инициирует начало приема/передачи данных. Затем данные передаются прямо в сдвиговый регистр, который обменивается данными с ведомым устройством. По окончание обмена устанавливается флаг SPIF.
Регистр данных
SPD7 | SPD6 | SPD5 | SPD4 | SPD3 | SPD2 | SPD1 | SPD0 |
3. Специальные режимы работы.
3.1 RESET.
RESET, или начальная установка, по-существу означает запуск программы, хранящейся в ППЗУ ОЭВМ, с определенного адреса с установкой периферийных систем, управляющих регистров и флагов в определенное состояние. Начальная установка происходит в одном из 4-х случаев:
1) Внешний RESET при подаче активного сигнала низкого уровня на вывод RESET/ микросхемы.
2) Внутренний RESET при включении питания.
3) Внутренний RESET при неправильном функционировании программы.
4) Внутренний RESET при отсутствии сигнала синхронизации.
При установке ОЭВМ в исходное состояние происходит следующее:
· все регистры направления передачи данных сбрасываются (настройка на ввод информации);
· в указатель стека загружается значение 00FFH;
· бит I в регистре признаков устанавливается в "1";
· триггер внешнего прерывания сбрасывается;
· запрещается доступ к последовательному интерфейсу связи (биты ТЕ=0 и RE=0). Остальные биты регистров интерфейса связи: TIE, TCIE, RIE, ILIE, RWU, SBK, RDRF, IDLE, OR, и FE-сбрасываются.
· биты статуса последовательного интерфейса TDRE и TC устанавливаются в 1.
· предварительный делитель частоты и биты управления скоростью обмена информацией SCP0 и SCP1 сбрасываются.
· последовательный периферийный интерфейс блокирован (бит SPE=0). Остальные биты сбрасываются: SPIE, MSTR, SPIF, WCOL, и MODF.
· все биты разрешения прерываний от устройств последовательного ввода-вывода сбрасываются (SPIE, TIE, TCIE).
· последовательный периферийный интерфейс конфигурируется как подчиненный (ведомый) компонент системы (MSTR=0).
· предварительный делитель частоты таймера сбрасывается. В счетчик таймера загружается значение FFFCH. Бит TCMP сбрасывается. Все биты разрешения прерываний от таймера сбрасываются (ICIE, OCIE, и TOIE), запрещая прерывания. Бит OLVL сбрасывается.