Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 400 по 524.doc
Скачиваний:
3
Добавлен:
02.08.2019
Размер:
1.71 Mб
Скачать

Из приведенного соотношения следует, что дискретизация коэффициента заполне­ния у определяется выбранным коэффициентом счета /ССч таймера-счетчика. Следова­тельно, модуль процессора событий TIM08 может реализовать ШИМ с дискретизацией коэффициента заполнения вплоть до 16 бит. При необходимости полярность импульсов ШИМ-сигнала может быть изменена. Для этого необходимо при инициализации выбрать следующие опции: при наступлении события выходного сравнения на выходе устанавливается высокий логический уровень;

при переполнении таймера-счетчика уровень сигнала на выходе инвертируется.

Рассмотренный режим небуферированной ШИМ подвержен сбоям в работе так же, как и режим небуферированного выходного сравнения (рис. 4.52). Так, если вы станете менять код заполнения в течение периода, то при смене большего кода на меньший возможен пропуск момента сравнения и, как следствие, получение единичного коэффи­циента заполнения. Поэтому режим небуферированной ШИМ следует использовать в тех случаях, когда код коэффициента заполнения требуется изменять крайне редко. В остальных случаях следует использовать режим буферированной ШИМ.

Для получения буферированной ШИМ используют режим буферированного выходно­го сравнения, при котором каналы объединяются по парам, и для генерации ШИМ сигна­ла на одном выводе используются регистры сразу двух каналов захвата/сравнения. Вслед­ствие этого число линий с ШИМ-сигналами для любого процессора событий TIM08 со­кращается вдвое.

Особенности инициализации модулей захвата/сравнения в режиме буферированной ШИМ определяются правилами инициализации канала на режим бу­ферированного выходного сравнения.

Формат регистра управления канала захвата/сравнения приведен в табл. 4.38.

Регистры данных канала TxCHiH и TxCHiL являются 8-разрядными регистрами, кото­рые доступны для чтения и для записи. Полный перечень регистров двух процессоров событий МК MC68HC908GP32 приведен в табл. 4.39. 4.3.8. МОДУЛЬ ПОСЛЕДОВАТЕЛЬНОГО СИНХРОННОГО ИНТЕРФЕЙСА SPI08

Модуль последовательного периферийного интерфейса SPI08 предназначен для вы­сокоскоростного обмена между МК и периферийными микросхемами, такими как АЦП и ЦАП, FLASH-память большой информационной емкости, часы реального времени. Мо­дуль SPI08 обладает следующими характеристиками:

поддерживает два режима работы: ведущего (master) и ведомого (slave) приемопередатчиков; позволяет программно настраивать частоту обмена, причем в формировании сетки ча­стот модули таймеров TIM08 и PIT08 не задействованы:

где Кт= 2, 8, 32, 128; максимальная частота обмена в режиме ведущего составляет 4,0 МГц, в режиме ведомого - 8,0 МГц;

генерирует запросы на прерывание с раздельными векторами по завершению приема очередного байта или по окончании передачи байта;

генерирует два флага нарушения режима работы: при переполнении приемника и при принудительной смене режима работы (ведущий/ведомый) в процессе незавершенного обмена;

позволяет программно конфигурировать линии приема и передачи данных (MISO и MOSI) как линии с открытым коллекторным выходом; объединение MISO и MOSI по схеме «монтажное ИЛИ» делает модуль совместимым с протоколом интерфейса PC.

Контроллер SPI08 обслуживает стандартную шину SPI, для чего имеет четыре линии:

MOSI - линия передачи данных от ведущего к ведомому (Master Output Slave Input);

MISO -линия передачи данных от ведомого к ведущему (Master Input Slave Output);

SPSCK - линия сигнала синхронизации данных;

SS-линия выбора ведомого.

Направление передачи каждой линии определяется выбором режима работы кон­троллера SPI08. Если назначен режим ведущего (бит MSTR регистра управления SPCR равен 1), то линии MOSI и SCK работают в режиме вывода, а линия М!3_О_в режиме ввода. Если назначен режим ведомого (MSTR = 0), то линии MOSI, SCK и SS работают в режиме ввода, a MISO - в режиме вывода. В режиме ведущего линия §s может быть использована, как обычная линия ввода/вывода.

Обслуживание модуля SPI08 является альтернативной функцией для линий PTD (см. рис. 4. 44). Если бит разрешения работы контроллера модуля установлен SPE = 1, то независимо от значения соответствующих битов регистра направления передачи пор­та ввода/вывода его линии назначаются для работы в составе контроллера SPI08.

Функциональная схема контроллера SPI08 приведена на рис. 4.53. Основные эле­менты контроллера - 8-разрядный сдвиговый регистр (Shift Register) и два буферных регистра данных, программно доступных по одному и тому же адресу. При выполнении операции записи в регистр данных SPDR данные будут запомнены в буферном регистре передатчика. Буфер данных передатчика недоступен для чтения. Операция чтения реги­стра SPDR возвращает данные из буферного регистра приемника. Буфер данных прием­ника недоступен для записи.

Если контроллер настроен для работы в режиме ведущего, то обмен данными в лю­бом из направлений (прием или передача) инициируется операцией записи байта в ре­гистр данных. Этот байт сначала автоматически копируется в сдвиговый регистр, а затем

сдвигается в течение 8 тактов генератора синхронизации обмена на линию MOSI. Одно­временно на линию SCK выдаются импульсы синхронизации. Каждый из импульсов син­хронизации SCK, поступающих от ведущего на одноименный вход ведомого, вызывает операцию сдвига данных на один разряд в сдвиговом регистре принимающего устрой­ства. В результате очередной бит, переданный ведущим по линии MOSI, запоминается в регистре-приемнике, но одновременно на линию MISO выдвигается очередной стар­ший бит этого регистра. Бит с линии MISO фиксируется в сдвиговом регистре ведущего. При завершении передачи 8 бит данных от ведущего к ведомому в сдвиговом регистре ведущего окажется принятый байт данных от ведомого. Если пользователь желает реа­лизовать передачу байта данных от ведущего к ведомому, то для осуществления обмена в программе ведущего в регистр данных контроллера SPI08 записывается передавае­мый байт, а при завершении передачи бесполезные данные из регистра данных порта SPI08 просто не считываются. Если же пользователь желает реализовать прием байта данных, то для осуществления обмена в программе ведущего в регистр данных контрол­лера SPI08 записывается любой «ненужный» байт, а при завершении передачи приня­тый полезный байт данных считывается из регистра данных порта SPI08. Завершение передачи каждого байта данных отмечается установкой в «1» бита SPIF регистра состо­яния SPSR. Этот бит генерирует запрос на прерывание, если прерывания от модуля SPI

разрешены (бит SPIE = 1). При обмене с высокими скоростями в режиме ведущего бит завершения передачи байта SPIF следует контролировать программно. Для этого после записи очередного байта в регистр данных следует прочитать регистр состояния SPSR, дождаться, пока бит SPIF не установится, а затем произвести считывание принятых дан­ных или запись следующего передаваемого байта в регистр данных (в зависимости от направления передачи). Бит SPIF сбрасывается в «О» автоматически при выполнении последовательности из двух операций:

чтение регистра состояния SPSR при установленном бите SPIF;

чтение или запись в регистр данных SCDR.

Если контроллер SPI08 работает в режиме ведомого, то момент начала передачи определяет ведущий. Поэтому следует организовать прерывания по запросу от триггера SPIF, в подпрограмме обработки которого принятый байт будет прочитан из регистра данных и проанализирован, а при необходимости предоставления ведущему каких-либо данных очередной байт будет записан в регистр данных для последующей передачи при поступлении импульсов синхронизации SCK от ведущего.

Контроллер SPI08 поддерживает 4 возможных режима SPI. Для задания детализиро­ванной временной диаграммы обмена следует использовать биты СРНА и CPOL регист­ра управления SPCR. Скорость обмена в режиме ведущего определяется программно настраиваемым коэффициентом делителя fBUS (биты SPR1:SPRO регистра управления). Максимальная скорость обмена составляет fBUS/2, минимальная - feus/128. В режиме ве­домого биты SPR1:SPRO не оказывают влияния на работу контроллера. Скорость обме­на определяется ведущим, она может достигать fBus.

Программно-логическая модель модуля SPI08 включает три регистра специальных функций:

SPCR - регистр управления модуля SPI08;

SPSCR - регистр состояния модуля SPI08;

SPDR - регистр данных модуля SPI08.

Форматы регистров SPCR и SPSCR приведены в табл. 4.40 и 4.41. Регистр данных SPDR доступен по адресу 0012h.

4.3.9. Модуль последовательного асинхронного интерфейса sci08

Контроллер последовательного асинхронного интерфейса SCI предназначен для об­мена с устройствами управления верхнего уровня. Модуль SCI08 обладает следующими характеристиками:

поддерживает полнодуплексный режим обмена данными:

реализует стандартный протокол асинхронного обмена с длиной кадра в 10 или 11 бит;

подсистема передатчика реализует режим вставки бита паритета, подсистема приемни­ ка автоматически контролирует соблюдение логики паритета в принятом байте данных;

позволяет программно настраивать частоту обмена, причем в формировании сетки ча­ стот модуль таймера TIM08 не задействован; частота обмена программируется в соот­ ветствии с Формулой

где NP= 1, 3,4,13; NS = 2", n = CN-7; максимальная скорость обмена составляет 131 Кбит/с;

имеет независимые биты разрешения работы приемника и передатчика;

генерирует запросы на прерывание с раздельными векторами по окончании передачи байта, завершению приема очередного байта и при диагностировании ошибок приема байта;

генерирует 4 флага нарушения режима работы: при переполнении приемника, при возникновении шума на линии в процессе приема, при нарушении формата принимаемого кадра, при нарушении логики паритета; каждое из перечисленных событий формирует

запрос на прерывание; реализуется раздельное маскирование всех указанных событий нарушения режима работы;

имеет встроенные аппаратные средства для организации работы в локальной сети;

позволяет реализовать «замкнутый» режим работы, при котором передаваемые данные без внешних коммутаций поступают на вход приемника;

имеет опцию изменения полярности передаваемых данных.

Контроллер SCI08 обслуживается двумя выводами: TxD - линия передачи данных; RxD - линия приема данных. Обслуживание модуля SCI08 является альтернативной функцией линий порта РТЕ (см. рис. 4.44). Если бит разрешения работы модуля ENSCI в регистре SCC1 установлен, то независимо от значения соответствующих битов регистра, направления передачи порта ввода/вывода, его линии назначаются для работы в составе контроллера SCI08.

Принцип действия модуля SCI08 аналогичен рассмотренному принципу действия модуля типа UART. По сравнению с рассмотренным ранее последовательным портом МК MCS-51 модуль SCI08 отличает значительно более сложная функциональная схема, которая реализует логику паритета, а также диагностирует пять типов ошибок приема, позволяя существенно повысить надежность обмена данными. Соответственно увеличи­лось и число регистров специальных функций, которые обслуживают модуль. Однако протоколы обмена и базовые алгоритмы функционирования модуля остались неизмен­ными. Аппаратные средства модуля SCI08 делят на две подсистемы: приемника и пере­датчика. Основу каждой подсистема составляют сдвиговый регистр и буферный регистр данных (см. рис. 4.19).

Различают два состояния подсистемы передатчика:

активное состояние или состояние передачи данных, которое характеризуется периодическим появлением на линии TxD сигнала низкого логического уровня; даже если все биты данных передаваемого кадра равны 1, то линия TxD будет находиться в «О» в течение интервала передачи стартового бита; в состоянии передачи данных в буферном регистре или в сдвиговом регистре обязательно присутствуют еще не переданные данные;

состояние ожидания (IDLE), которое характеризуется наличием сигнала высокого логического уровня на линии TxD в течение не менее 10 или 11 тактов работы передатчика (для 10- и 11-битового кадра соответственно); передатчик переходит в состояние ожидания, если в буферном регистре данных и в сдвиговом регистре новые данные для передачи отсутствуют.

Передача данных от МК к другому устройству инициируется посредством записи бай­та данных в буферный регистр передатчика по адресу регистра данных SCDR. Аппарат­ные средства передатчика загружают содержимое буферного регистра данных в сдвиго­вый регистр. Одновременно устанавливается флаг SCTE (флаг очистки регистра буфе­ра данных в регистре SCS1), который информирует МК о том, что буферный регистр передатчика пуст, и в него могут быть загружены новые данные. Если следующий байт данных для передачи будет загружен в буферный регистр SCDR до завершения переда­чи предыдущего байта, то нарушения в работе передатчика не произойдет. Второй байт данных будет сохраняться в буферном регистре до тех пор, пока передача предыдущего байта не будет завершена. Следует иметь в виду, что копирование содержимого буфер­ного регистра в сдвиговый регистр под управлением аппаратных средств не сопровож­дается автоматическим началом передачи этого байта данных. Процесс передачи ново­го байта из сдвигового регистра на линию TxD начнется только после того, как бит SCTE будет сброшен. Для достижения последнего необходимо выполнить две операции:

прочитать регистр состояния SCS1 при установленном бите SCTE;

записать в регистр буфера передатчика по адресу SCDR новый байт данных.

Тогда под управлением генератора скорости передачи GT биты предыдущего байта данных начнут последовательно передаваться из сдвигового регистра на вывод TxD.

После завершения передачи пакета обмена, когда в сдвиговом и буферном регист­рах не осталось данных для передачи, устанавливается в «1» бит ТС. Флаги очистки буфера данных SCTE и окончания передачи ТС имеют независимое маскирование (биты SCT1E и TCIE регистра SCC2 соответственно). Если прерывания по этим запросам раз­решены, то любой из триггеров генерирует запрос на прерывание. Рассматриваемые запросы объединяются по «ИЛИ» и обслуживаются по единому вектору прерывания от передатчика модуля SCI08 (см. табл. 4.31).

Формат кадра передаваемых данных определяется значением бита М в регистре уп­равления SCC1. Если М = 0, то обмен осуществляется с использованием 10-битового кадра . Сдвиговый регистр передатчика автоматически настраивается на 10-разрядный формат, в младшем и старшем разрядах сдвигового регистра устанавливаются логичес­кие уровни стартового и стопового битов (см. рис. 4.20). Если М = 1, то используется 11-битовый кадр обмена (см. рис. 4.21). Сдвиговый регистр настраивается на 11-разрядный формат. Недостающий бит данных D8 заполняется значением Т8 из регистра управле­ния SCC3, которое должно быть определено программой до записи в буферный регистр восьми младших бит передаваемого слова. Значение бита М определяет формат кадра обмена как для приемника, так и для передатчика. Поэтому обмен в дуплексном режиме возможен только с одинаковым форматом кадра.

Скорость передачи данных, так же как и скорость приема, определяется собствен­ным генератором модуля SCI08. Этот генератор состоит из двух делителей частоты тактирования межмодульных магистралей fEUS: предварительного с коэффициентом деле­ния NP и основного с коэффициентом деления NS. Скорость обмена данными следует определить в формуле:

где NP - коэффициент деления предварительного делителя, NP = 1, 3, 4,13; NS - коэф­фициент деления основного делителя, NS= 1, 2, 4, 8, 16, 32, 64, 128.

Значения коэффициентов NP и NS определяются установкой соответствующих раз­рядов в регистре скорости передачи SCBR.

Передатчик модуля SCI08 реализует режим генерации сигнала «конец сеанса обмена» (сигнал «Break»), который состоит из 10 или 11 нулей, и в мультимикропроцессорных сис­темах обозначает конец сеанса обмена между двумя устройствами. Для генерации сигна­ла «конец сеанса обмена» необходимо установить бит SBK в регистре управления SCC2.

Основные элементы приемника - сдвиговый регистр, 8-разрядный буферный регистр данных, схема мажоритарной логики для формирования значения очередного принима­емого бита, схема детектирования условия вывода приемника из режима ожидания, ло­гический блок управления. Различают два состояния подсистемы приемника:

активное состояние, которое характеризуется периодическим формированием байта данных из последовательности битов на входе RxD, копированием принятого байта в буферный регистр данных приемника с одновременной установкой в «1» бита завершения приема данных SCRF;

состояние ожидания, в котором также реализуется преобразование последователь­ного кода на входе RxD в параллельный код в сдвиговом регистре, но копирование принятого байта в буферный регистр данных приемника и установка бита завершения при­ема SCRF выполняется только тогда, когда значение принятого слова удовлетворяет одному из условий выхода из режима ожидания.

Формат кадра принимаемых данных определяется значением бита М в регистре управ­ления SCC1. При М = 0 обмен осуществляется 10-битовыми кадрами, при М = 1 использу­ется 11-битовый кадр обмена. В последнем случае сдвиговый регистр настраивается на 11-разрядный формат. Бит данных D8, который не помещается в разрядную сетку буфер­ного регистра данных приемника, записывается в разряд R8 регистра управления SCC3.

Блок логики управления подсистемы приемника детектирует наличие на входе RxD последовательности из не менее чем одного стопового бита, а затем стартового бита, и начинает формирование слова данных посредством выполнения под управлением ге­нератора скорости передачи GR сдвиговых операций. Значение старшего бита на каж­дом такте работы сдвигового регистра определяет схема мажоритарной логики. Эта схе­ма производит три выборки уровня сигнала на входе RxD в течение одного такта работы, значение старшего бита определяется по правилу «два из трех». Момент окончания фор­мирования слова в сдвиговом регистре отмечается установкой в «1» триггера заверше­ния приема SCRF в регистре SCS1. Одновременно принятые данные записываются в буферный регистр данных приемника, который доступен для чтения по адресу SCDR. Бит SCRF по существу является флагом готовности данных приемника, он информирует МК о том, что произошел прием очередного слова данных, и его следует переместить в память МК. Бит SCRF может быть считан программно, а если прерывания от приемни­ка разрешены (бит SCRIE регистра управления SCC2 равен «1»), то генерируется зап­рос на прерывание от приемника модуля SCI08. Сброс бита готовности данных приемни­ка осуществляется в процессе выполнения двух операций:

чтения регистра состояния SCS1 при установленном бите SCRF;

чтения регистр данных приемника SCDR.

Нетрудно заметить, что именно эта последовательность операций должна быть вы­полнена при считывании очередного принятого по линии RxD байта в память МК.

Если бит SCRF находится в «1», т. е. байт данных принят и находится в буферном регистре приемника, то подобная ситуация не препятствует процессу приема в сдвиго­вый регистр приемника следующего байта данных. Необходимо только, чтобы до завер­шения приема последующего байта данных предыдущий байт был считан из буферного регистра приемника. Если этого не произошло, то аппаратные средства блокируют за­пись нового байта в буферный регистр приемника, поэтому новый принятый байт будет потерян. Одновременно устанавливается бит нарушения работы OR в регистре SCS1 (Overrun - попытка перезаписи). Установленный в «1» бит OR может вызывать генера­цию запроса на прерывание, если прерывания именно по этому событию разрешены (бит ORIE в регистре SCC3 равен «1»).

Аппаратные средства приемника сообщают пользователю о наличии шума на линии RxD при приеме каждого байта данных: бит NF регистра SCS1 устанавливается в «1», если при определении значения хотя бы одного из битов кадра обмена, включая старто­вый и стоповый биты, не все три выборки сигнала были равны. Установленный в «1» бит NF может вызывать генерацию запроса на прерывание, если прерывания именно по это­му событию разрешены (бит NEIE в регистре SCC3 равен «1»). Если следующий приня­тый байт не содержит признака шума на линии, то бит NF не сбрасывается автоматичес­ки. Условия сброса бита NF указаны в табл. 4.46.

Аппаратные средства приемника также распознают нарушение формата кадра обме­на: бит FE регистра SCS1 устанавливается в «1», если на линии RxD присутствует сигнал низкого логического уровня в то время, когда должен присутствовать столовый бит с высо­ким логическим уровнем. Подобная ситуация может возникнуть, если скорости обмена приемника и передатчика не совпадают, или если принимается специальный сигнал «ко­нец сеанса обмена». Бит FE может вызывать генерацию запроса на прерывание, если прерывания именно по этому событию разрешены (бит FEIE в регистре SCC3 равен «1»).

В процессе приема каждого байта информации в формате 11-битового кадра аппа­ратные средства приемника автоматически производят контроль бита паритета. Управ­ление функцией паритета осуществляется с использованием битов PEN и РТУ регистра SCC1. Если функция контроля паритета разрешена, то бит РЕ в регистре SCS1 устанав­ливается в «1», если в принятом байте данных вычисленный бит паритета не совпадает со значением принятого бита паритета. Установленный бит РЕ может генерировать зап­рос на прерывание, если прерывания по событию несовпадения паритетов разрешены (бит PEIE в регистре SCC3 равен «1»).

Запросы на прерывание, сформированные признаками ошибки приема (триггеры OR, NF, FE, РЕ) объединены по «ИЛИ» и обслуживаются по одному вектору прерывания (см. табл. 4.31).

Неактивное состояние линии RxD, которое характеризуется наличием на линии 10 или 11 (в зависимости от формата кадра) последовательных единиц, отмечается уста­новкой бита IDLE регистра состояния SCS1. Неактивное состояние линии RxD свиде­тельствует о том, что передатчик другого устройства, которое выставляет данные на ли­нию RxD, находится в состоянии ожидания IDLE. Бит IDLE может быть считан программ­но, но может также генерировать запрос на прерывание, если эти прерывания разреше­ны (бит ILIE в регистре управления SCC2 равен «1»). Вектор обслуживания запроса по флагу IDLE совпадает с вектором обслуживания приемника модуля SCI08.

Бит RWU в регистре управления SCC2 переводит приемник модуля SCI08 в режим ожидания. Этот режим позволяет организовать протокол обмена локальной управляю­щей сети МК. В режиме ожидания приемник продолжает преобразование последова­тельного кода на входе RxD в параллельный код в сдвиговом регистре. Однако форми­рование признаков SCRF, IDLE, OR, NF, FE, PE приемник не производит, и принятые данные в буферный регистр не копируются. Определено два способа перевода прием­ника из режима ожидания в активный режим работы:

• поступление последовательности битов с установленным в «1» маркером адреса; в качестве маркера адреса используют старший значащий бит; поэтому, для 10-битового кадра бит D7 должен быть равен «1», чтобы приемник вышел из состояния ожидания, для 11-битового кадра - бит D8.;

• нахождение линии RxD в неактивном состоянии IDLE.

Выбор способа «пробуждения» приемника определяется предварительной установ­кой бита WAKE в регистре управления SCC1. При диагностировании на входе RxD одной из двух указанных последовательностей приемник выходит из состояния ожидания, ус­танавливает бит готовности данных SCRF и копирует принятые данные в буферный ре­гистр SCDR. Бит RWU автоматически сбрасывается, логика формирования бита IDLE не работает. Она начнет функционировать только при поступлении следующего байта в активном режиме работы приемника. На практике при организации локальных сетей чаще используется первый способ «пробуждения». Тогда младшие 7 или 8 бит данных первого принятого в процессе «пробуждения» слова содержат в себе адрес МК, с которым будет производиться обмен. Программа обслуживания прерывания по запросу от приемника сравнивает принятый адрес с собственным и, если адреса не совпадают, снова перево­дит приемник в режим ожидания. В случае равенства адресов приемник остается в ак­тивном режиме работы и участвует в сеансе обмена.

Программно-логическая модель модуля SCI08 включает семь регистров специаль­ных функций: SCDR - регистр данных порта SCI08; SCC1 - регистр управления контрол­лером SCI08; SCC2 - регистр управления контроллером SCI08; SCC3 - регистр управле­ния контроллером SCI08; SCS1 - регистр состояния контроллера SCI08; SCS2 - регистр состояния контроллера SCI08; SCBR - регистр скорости обмена контроллера SCI08.

Форматы этих регистров представлены в табл. 4.42 -4.48.