Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Для асинхронного последовательного обмена данными в микроконтроллерах семейства 68HC08/908 используется модуль SCI08 (Serial Communication Interface-08), который обеспечивает стандартный асинхронный формат приема-передачи данных с одним старт-битом и одним стоп-битом, восемью информационными битами d0-d7 и возможностью пересылки 9-го (контрольного) бита d8 (рис.18). Таким образом в каждом кадре передавемых данных содержится по крайней мере один нулевой бит (старт-бит) и один единичный бит (стоп-бит). Кадр, состоящий из 10 (при отсутствии контрольного бита) или 11 (при наличии контрольного бита) нулей служит сигналом прекращения передачи (символ BREAK). Кадр, состояший из 10 (при отсутствии контрольного бита) или 11 (при наличии контрольного бита) единиц является сигналом, переводящим приемник в режим ожидания следующего цикла передачи данных (символ IDLE).

0 1 2 3 4 5 6 7 8 0

    d0 d1 d2 d3 d4 d5 d6 d7 d8*     d0

Старт Информационные биты d0-d7, Стоп Следующий

бит * контрольный бит бит старт-бит

Рис.18. Формат кадра данных, передаваемого асинхронным портом SCI

Структура модуля SCI08 показана на рис.19. Модуль содержит регистр данных SCDR (адрес $0018), два регистра состояния SCS1, SCS2, и три регистра управления SCC1SCC3.


Рис.19. Cтруктура модуля SCI08

Генератор синхросигналов (ГСС) формирует синхросигналы обмена, частота которых Fs определяется содержимым регистра SCBR. Для обмена данными используются вход приемника RxD и выход передатчика TxD, подключенные, соответственно, к выводам PTE1 и PTE0 порта E. Формат кадра обмена определяется значением бита M в регистре управления SCC1 (рис. 20,а): 10-битный кадр (8 бит пересылаемых данных) при M=0, 11-битный кадр (9 бит переслаемых данных) при M=1. Если M=1, то при передаче в качестве девятого (контрольного) бита передается бит T8 из регистра SCC3, а при приеме девятый бит заносится в регистр SCC3 в качестве бита R8. Перед началом передачи на линии устанавливается уровень 1 (сигнал ожидания) на время не менее, чем длительность одного такта синхросигналов Ts =

= 1/ Fs. Если на линии поддерживается уровень 0 в течении 10Ts при 10-битном кадре (M=0) или 11Ts при 11-битном кадре (M=1), то такой нулевой кадр является сигналом прекращения обмена - символ BREAK. Если на линии поддерживается уровень 1 в течении 10Ts (при M=0) или 11Ts (при M=1), то такой единичный кадр является сигналом ожидания начала обмена - символ IDLE.

Функционирование модуля SCI08 определяется значениями управляющих кодов, загружаемых в регистры SCC1-SCC3. При запуске микроконтроллера все биты этих регистров принимают значение 0. Регистр управления SCC1 (рис.20,а) содержит биты, имеющие следующее назначение:

LOOPS – при установке значения LOOPS=1 переводит модуль SCI08 в режим кольцевого обмена, когда вход приемника отключается от вывода RxD/PTE1 и соединяется с выходом передатчика; при этом передаваемые данные поступают в приемник, если в регистре SCC2 значения битов RE=TE=1 (одновременно разрешены прием и передача); данный режим используется для проверки работы модуля;

ENSCI – при установке значения ENSCI=1 разрешает работу модуля SCI08;

TXINV – при установке значения TXINV=1 вызывает передачу инверсных значений всех битов (старт- и стоп-битов, информационных и контрольного битов);

M – задает формат пересылаемого кадра: 10-битный при M=0 (отсутствие контрольного бита), 11-битный при M=1 (наличие контрольного бита);

WAKE – определяет способ выхода приемника из режима ожидания: прием символа IDLE (10 или 11 единичных битов) при WAKE=0, единичное значение старшего принятого бита данных d7 (при M=0) или d8 (при M=1) при WAKE=1;

ILTY – указывает начало отсчета единичных битов, представляющих символ ожидания IDLE: начиная с очередного старт-бита при ILTY=0 или с очередного стоп-бита при ILTY=1;

PEN – разрешает при установке значения PEN=1 контроль четности при передаче и приеме данных;

PTY – определяет вид контроля: если PTY=0, то контрольный бит равен 1 при четном числе информационных битов (контроль четности), если PTY=1, то контрольный бит равен 1 при нечетном числе информационных битов (контроль нечетности).

               
LOOPS ENSCI TXINV M WAKE ILTY PEN PTY

а). SCC1 (адрес $0013)

               
SCTIE TCIE SCRIE ILIE TE RE RWU SBK

б). SCC2 (адрес $0014)

               
R8 T8     ORIE NEIE FEIE PEIE

в). SCC3 (адрес $0015)

Рис.20. Формат содержимого регистров управления модуля SCI08

Управляющий код, записываемый в регистр SCC2 (рис.20,б), разрешает или запрещает формирование запросов прерывания, производит запуск и отключение приемника и передатчика, устанавливает режим ожидания приемника и выдачу сигнала прекращения обмена передатчиком. Отдельные биты содержимого SCCR2 имеют следующее назначение:

SCTIE - разрешает при значении SCTIE=1 формирование запроса прерывания при установке признака освобождения регистра SCDR в режиме передачи (в регистре SCS1 признак SCTE=1);

TCIE - разрешает при значении TCIE=1 формирование запроса прерывания при установке признака завершения передачи (в регистре SCS1 признак TC=1);

SCRIE - разрешает при значении SCRIE=1 формирование запроса прерывания при заполнении регистра SCDR в режиме приема (в регистре SCS1 признак SCRF=1);

ILIE - разрешает при значении ILIE=1 формирование запроса прерывания при поступлении на вход RxD символа ожидания IDLE (в регистре SCS1 признак IDLE=1);

TE - включает (при TE=1) и отключает (при TE=0) передатчик;

RE - включает (при RE=1) и отключает (при RE=0) приемник;

RWU - переводит при RWU=1 приемник в режим ожидания, а при RWU=0 разрешает активизацию приемника (в соответствии со значением бита WAKE в регистре SCC1);

SBK - вызывает при установке SBK=1 выдачу на выход TxD передатчика символа прекращения обмена BREAK (последовательность 0).

Регистр управления SCC3 (рис.20,б) содержит контрольные биты и биты разрешения прерываний при возникновении ошибок приема:

R8 – принимает значение 9-го (контрольного) бита, поступающего на вход RxD приемника при 11-битном кадре пересылаемых данных (значение M=1);

T8 – содержит значение 9-го (контрольного) бита, выдаваемого на выход TxD передатчика при 11-битном кадре пересылаемых данных (значение M=1);

ORIE – разрешает при значении ORIE=1 формирование запроса прерывания при переполнении приемника (в регистре SCS1 притзнак OR=1);

NEIE – разрешает при значении NEIE=1 формирование запроса прерывания при обнаружении шумов в режиме приема (в регистре SCS1 признак NE=1);

FEIE разрешает при значении FEIE=1 формирование запроса прерывания при ошибке кадра в режиме приема (в регистре SCS1 признак FE=1);

PEIE - разрешает при значении PEIE=1 формирование запроса прерывания при ошибке четности в режиме приема (в регистре SCS1 признак PE=1).

               
SCTE TC SCRF IDLE OR NF FE PE

а). SCS1 (адрес $0016)

               
- - - -   - BKF RPF

б). SCS2 (адрес $0017)

               
- - SCP1 SCP0 - SCR2 SCR1 SCR0

в). SCBR (адрес $0019)

Рис.21. Формат содержимого регистров состояния и управления ГСС модуля SCI08

Содержимое регистров SCS1, SCS2, которое доступно только для считывания, указывает текущее состояние модуля SCI08. Эти регистры содержат признаки, которые устанавливаются в процессе приема и передачи данных. При запуске микроконтроллера все признаки принимают значение 0. В регистре состояния SCS1 (рис.1.21,а) устанавливаются следующие признаки:

SCTE - признак готовности передатчика к приему новых данных, принимает значение SCTE=1 после того, как содержимое регистра SCDR переписывается в сдвиговый регистр передатчика для последовательной выдачи на выход TxD;

TC - признак окончания передачи, принимает значение TC=1 после выдачи последнего бита данных из сдвигового регистра передатчика на выход TxD;

SCRF - признак заполнения приемника, принимает значение SCRF=1 после того, как данные, поступившие в сдвиговый регистр приемника, переписываются в регистр SCDR;

IDLE - признак поступления символа ожидания IDLE, принимает значение IDLE=1, если состояние 1 на входе RxD поддерживается более 10 (при M=0) или 11 (при M=1) тактов Ts;

OR - признак переполнения приемника, принимает значение OR=1 в случае, когда очередной символ поступает в сдвиговый регистр приемника до считывания из регистра SCDR предыдущего символа (при этом содержимое SCDR сохраняется, а очередной поступивший символ теряется);

NF - признак наличия шумов на линии приема, устанавливается в состояние NF=1, если в процессе приема какого-либо бита зафиксированы изменения уровня сигнала на входе RxD;

FE - признак нарушения кадра, принимает значение FE=1, если в принятом кадре длительность стоп-бита оказывается меньше, чем Ts

PE - признак ошибки четности, принимает значение PE=1, если четность информационных битов в принятом символе не соответствует поступившему значению контрольного бита R8.

Признаки SCTE, TC, SCRF, IDLE, OR, NF, FE, PE вызывают формирование запроса прерывания, если это разрешено соответствующими битами в регистрах SCCR2, SCCR3. Запросы, вызванные признаками SCTE, TC, SCRF обычно вызывают процедуры записи в регистр SCDR новых данных для передачи или считывания из него принятых данных. Если соответствующие запросы запрещены установкой значения 0 в битах SCTIE, TCIE, SCRIE, то прием и передача данных через SCI выполняется программно с помощью периодического считывания и анализа содержимого SCS1 (программный опрос).

Регистр состояния SCS2 (рис.21,б) содержит только два признака:

BKF – признак поступления символа окончания обмена BREAK, принимает значение BREAK=1, если состояние 0 на входе RxD поддерживается более 10 (при M=0) или 11 (при M=1) тактов Ts;

RPF – признак начала приема данных, принимает значение RPF=1, когда приемник определяет поступление на вход RxD старт-бита, значение RPF=0 устанавливается после приема символа IDLE.

Установка в 0 значений признаков в регистрах SCS1,SCS2 (кроме признака RPF) производится путем выполнения следующих операций:

- чтение содержимого регистра SCS1 или SCS2,

- чтение содержимого регистра данных SCDR.

Длительность такта обмена Ts = 1/Fs определяется частотой Fs импульсов, формируемых ГСС, которая задается содержимым регистра SCBR (рис.21,в). Значение этой частоты определяется выражением Fs = Fq/(Kd x Ks), где Kd, Ks - коэффициенты деления, которые задаются содержимым полей SCP1-0 и SCR2-0 в регистре SCBR в соответствии с табл.18. При запуске микроконтроллера все биты регистра SCBR принимают значение 0, то-есть обеспечивается скорость обмена Fs=Fq. Путем выбора различных значений коэффициентов Kd, Ks реализуются скорости последовательного обмена данными в диапазоне от десятков бит/c до100 Кбит/c.

Таблица 18. Значения коэффициентов

деления Kd, Ks для модуля SCI08

SCP1-0 Kd SCR2-0 Ks
       
       
       
       
       
       
       
       

В режиме передачи данные, предварительно записанные в SCDR с помощью команд STA или STX, переписываются в сдвиговый регистр передатчика и последовательно выдаются на выход TxD с частотой Fs. Для инициализации передатчика следует выполнить следующие операции:

- установить необходимую скорость обмена путем загрузки соответствующего содержимого в регистр SCBR,

- разрешить работу модуля SCI08 путем установки значения бита ENSCI=1 в регистре управления SCC1,

- разрешить работу передатчика путем установки значения бита TE=1 в регистре управления SCC2,

- установить значение признака SCTE=0 и запустить процесс передачи путем чтения содержимого регистра состояния SCS1 и записи передаваемых данных в регистр SCDR.

Если задан режим передачи 11-битных кадров, то в качестве бита d8 на выход TxD выдается бит T8 из регистра SCC3. Если d8 должен быть контрольным битом четности или нечетности, то этот бит необходимо предварительно сформировать и записать как T8 в регистр SCC3.

Последующий контроль работы передатчика осуществляется с помощью признаков SCTE, TE в регистре SCS1, которые вызывают выполнение подпрограммы обслуживания прерываний, если в регистре управления SCC2 биты разрешения SCTIE,TCIE=1, или опрашиваются программно, если биты SCTIE,TCIE=0. Передатчик выдает на выход TxD символы прекращения обмена BREAK (кадры из 10 или 11 нулей) при установке в регистре SCC2 значения бита SBK=1.

В режиме приема данные, поступающие на вход RxD, последовательно вводятся в сдвиговый регистр модуля SCI08 с частотой Fs. После ввода 8 бит данных они переписываются в регистр SCDR, откуда могут быть считаны в регистр A или X командами LDA, LDX. При 11-битном кадре обмена 9-й бит принятых данных d8 заносится в регистр SCC3 в качестве бита R8, который может считываться и анализироваться отдельно. После приема данных в регистре SCS1 устанавливается в 1 признак завершения приема SCRF, а при обнаружении соответствующих ошибок также признаки OR, NF, FE, PE. Установка этих признаков в 1 вызывает выполнение подпрограммы обслуживания прерываний, если в регистрах SCC2, SCC3 соответствующие биты разрешения SCRIE, ORIE, NEIE, FEIE, PEIE имеют значение 1, или опрашиваются программно, если эти биты имеют значение 0.

Приемник может переводиться в режим ожидания путем установки бита RWU=1 в регистре SCC2. В этом режиме приемник не записывает поступающие данные в регистр SCDR, но проверяет их содержание, ожидая прихода символа активизации. Признаки ошибок и запросы прерывания в режиме ожидания не формируются. При этом данные, передаваемые по линии, подключенной ко входу RxD модуля SCI08, могут приниматься другими устройствами в системе. Последующая активизация приемника производится в соответствии со значением бита WAKE в регистре SCC1. При WAKE=0 активизация происходит при поступлении на вход RxD символа IDLE - последовательности из 10 (при M=0) или 11 (при M=1) единиц. Следующий за этой последовательностью кадр данных будет приниматься модулем SCI08. В качестве начала отсчета последовательности 1 принимается старт-бит (при установке в регистре SCC1 значения бита ILTY=0) или стоп-бит (при значении бита ILTY=1) предыдущего кадра. При WAKE=1 приемник активизируется при значении 1 старшего бита d7 (при 10-битном кадре) или d8 (при 11-битном кадре) поступающих данных, который служит идентификатором адреса. В этом случае после активизации принятые данные поступают в регистр SCDR. Процессор анализирует младшие семь или восемь принятых битов, которые указывают адрес приемного устройства. Если этот адрес совпадает с адресом, программно установленным для данного модуля SCI08, то он принимает данные, поступающие в последующих кадрах. Если адрес не совпадает, то модуль снова переводится в режим ожидания путем установки бита RWU=1.

Обнаружение шумов на линии приема производится путем троекратной проверки значения сигнала на входе RxD в течении периода передачи каждого бита Ts. Если проверка дает разные значения уровня, то принимается то значение (0 или 1), которое поступило дважды (принцип мажоритирования), а однократное поступление другого значения воспринимается как помеха. В этом случае устанавливается признак наличия шумов NF=1.

В процессе приема проверяется также поступление на вход RxD символов IDLE и BREAK. Прием символа IDLE вызывает установку признака IDLE=1 в регистре SCS1 и реализацию прерывания, если в регистре управления SCC2 бит ILIE=1. Прием символа BREAK вызывает установку признака BKF=1 в регистре SCS2, а также установку признаков SCRF=FE=1 в регистре SCS1. В этом случае прерывания реализуются, если у становлен в 1 бит SCRIE в регистре SCC2 или бит FEIE в регистре SCC3.

Для обслуживания модуля SCI08 выделены три вектора прерываний, которые обеспечивают обращение к соответствующим подпрограммам обработки:

Vt – вектор прерывания по запросу передатчика, обеспечивает обработку запроса при установке в 1 признаков SCTE или TE в регистре SCS1, если прерывания разрешены битами SCTIE, TCIE в регистре SCC2;

Vr – вектор прерывания по запросу приемника, обеспечивает обработку запроса при установке в 1 признаков SCTE или TE в регистре SCS1, если прерывания разрешены битами SCTIE, TCIE в регистре SCC2;

Ve – вектор прерывания при обнаружении ошибки приема, обеспечивает обработку запроса при установке в 1 признаков OR, NF, FE или PE в регистре SCS1, если прерывания разрешены битами ORIE, NFIE, FEIE, PEIE в регистре SCC3.

Вектора Vt (адрес $FFE2-E3), Vr (адрес $FFE2-E3), Ve (адрес $FFE2-E3) занимают три позиции в таблице векторов (см. табл. 10). Обращение к каждому из этих векторов может быть вызвано различными причинами, если биты разрешения прерываний в регистрах SCC2, SCC3 установлены в 1. В этом случае вызванный обработчик прерываний должен произвести анализ состояния соответствующих признаков в регистре SCS1, чтобы определить причину прерывания и обеспечить выполнение необходимой процедуры обслуживания поступившего запроса.





Дата публикования: 2014-11-02; Прочитано: 699 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...