Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADuC70xx_K02.docx
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
1.68 Mб
Скачать

Основные регистры сф, ассоциированные с подсистемой uart

Общее количество СФР, связанных с UART, равно 16 (а не 8, как в привычном COM-порте ПК), что связано с наличием дополнительных свойств у подсистемы UART в ADuC702x. Однако количество адресов, используемых для доступа к этим РСФ составляет всего 12, поскольку в подсистеме использован приём, когда несколько регистров доступны через один и тот же адрес (подробности смотри далее).

Перечислим эти регистры (используя там, где можно, старые привычные названия) с указанием ихразмера и режима доступа. Символические имена регистров определены производителем, объявлены в заголовочных файлах и используются при программировании на Си.

1.1.Буферный регистр передатчика COMTX один байт, доступ «только запись». Доступен при сброшенном в 0 бите COMCON0.7.

1.2.Буферный регистр приёмника COMRX один байт, доступ «только чтение» Доступен при сброшенном в 0 бите COMCON0.7.

1.3. Регистр-защёлка делителя (младший байт) COMDIV0 один байт, доступ «чтение-запись». Доступен при установленном в «1» бите COMCON0.7.

Три перечисленных регистра «видны» через один и тот же адрес 0xFFFF0700.

2.1.Регистр разрешения прерываний COMIEN0 один байт, доступ «чтение-запись». Доступен при сброшенном в 0 бите COMCON0.7.

2.2.Регистр-защёлка делителя (старший байт) COMDIV1 (). Доступен при установленном в 1 бите COMCON0.7.

Два последних регистра «видны» через один и тот же адрес 0xFFFF0704.

Для того, чтобы «открыть» доступ к регистру-защёлке делителя (с целью настройки частоты следования битовых интервалов BaudRate), следует предварительно установить в «1» бит COMCON0.7.

3.Регистр идентификации прерываний COMIID0 один байт, доступ «только чтение», адрес 0xFFFF0708.

4.Регистр управления линией COMCON0 один байт, доступ «чтение-запись», адрес 0xFFFF070C.

5.Регистр управления модемом COMCON1 один байт, доступ «чтение-запись»,адрес 0xFFFF0710.

6.Регистр состояния линии COMSTA0 один байт, «только чтение», адрес 0xFFFF0714.

7.Регистр состояния модема COMSTA1 один байт, доступ «только чтение», адрес 0xFFFF0718.

8.Регистр временного хранения COMSCR один байт, доступ «чтение-запись».

Последующие регистры являются расширением по сравнению со стандартным COM-портом, и специфичны для реализации ADuC702x.

9. Регистр дробного делителя COMDIV2 два байта, доступ «чтение-запись». Регистр позволяет получить широкий ряд значений битовых частот, вплоть до величины 1409000 Бод.

10. Регистр признака «адрес» в сетевом режиме COMSCR один байт, доступ «чтение-запись» адрес 0xFFFF071C.

11. Регистр разрешения сетевого режима COMIEN1 один байт, доступ «чтение-запись».

12. Регистр идентификации прерываний в сетевом режиме COMIID1 один байт, доступ «только чтение, адрес 0xFFFF0724

13. Регистр адреса в сетевом режиме COMADR один байт, доступ «чтение-запись», адрес 0xFFFF0728.

Последние четыре регистра используются в так называемом «сетевом» режиме работы UART, который позволяет организовать на базе сеть с адресацией и с возможностью Multi-Master.

Теперь опишем более подробно функции перечисленных регистров и отдельных битовых полей в них.После названия каждого регистра приведено символическое имя, определенное в заголовочных файлах, входящих в набор средств поддержки разработки. (Затем в скобках приведены англоязычные эквиваленты названий соответвтующихрегистров, используемые в описаниях регистровой модели стандартных COM-портов персонального компьютера).

БуферныйрегистрпередатчикаCOMTX (Transmit Holding Register ‑ THR) . Доступ «только запись». Доступен при сброшенном в 0 бите COMCON0.7. Запись в COMTX вызывает немедленное копирование содержимого буфера передатчика в сдвиговый регистр передатчика и начало последовательной передачи в линию, при этом буферный регистр передатчика освобождается, и в него немедленно может быть помещено следующее передаваемое слово. В зависимости от формата слова, передача занимает от 7 до 11 битовых интервалов. По окончании передачи, если новое слово было помещено в буферный регистр, оно также немедленно копируется в сдвиговый регистр и передача возобновляется. Такая структура с дополнительным буферным регистром носит название «двойной буферизации» (doublebuffering). Ее преимущество в том, что для обеспечения непрерывной передачи программа должна записать последующее слово не позже окончания передачи предыдущего слова (т.е. в течение 7...11 битовых интервалов). В случае, если программа не успевает этого сделать, недоиспользуется пропускная способность передатчика.

Подсистема передатчикаUART может находиться в трех состояниях: 1) буферный и сдвиговый регистры свободны, передача не происходит, программа может записывать в передатчик новое слово для передачи; 2) сдвиговый регистр занят и идет передача, буферный регистр свободен, программа может записать в него следующее слово; 3) сдвиговый и буферный регистры заняты, идет передача, программа должна дождаться окончания передачи слова и освобождения буферного регистра.

Поэтому для сигнализации о состоянии передатчика в UART используются два флага: TEMT (TransmitterEmpty)и THRE (TransmitterHoldingRegisterEmpty) ‑см. описание регистра COMSTA0.

БуферныйрегистрприёмникаCOMRX (ReceiveBufferRegister‑RBR). Доступ «только чтение». Доступен при сброшенном в 0 бите COMCON0.7. При поступлении последовательности битов на вход приемника UART, они последовательно сохраняются в сдвиговом регистре. По окончании приема информационных битов слова, т.е. при поступлении на сдвиговый регистр СТОП-бита, содержимое сдвигового регистра (принятое слово) копируется в буферный регистр приемника, в результате чего сдвиговый регистр приемника немедленно освобождается, и готов к приему стартового бита следующего слова. У программы имеется время, не превышающее времени приема последующего слова для того, чтобы прочитать ранее принятое слово из буферного регистра. Если же программа не успеет этого сделать, то в UARTмикроконтроллера ADuC70xxранее принятый пакет будет заменен принятым позднее.???проверить!(В других реализациях подсистемы UARTможет быть сделано наоборот, потеряется новый пакет.)

Таким образом, подсистема приемника UART может находиться в трех состояниях: 1) буферный регистр пуст, программе читать нечего, в это же время сдвиговый регистр может как находиться в покое, так и принимать очередное слово; 2) принято предыдущее слово и скопировано в буферный регистр приемника, сдвиговый регистр может как находиться в покое, так и принимать следующее слово, программа может читать содержимое буферного регистра, и должна успеть это сделать до того, как сдвиговый регистр закончит принимать следующее слово; 3) буферный регистр содержит принятое слово, которое программа не успела прочитать, а сдвиговый регистр закончил прием следующего слова и скопировал его в буферный регистр – ранее принятое слово будет потеряно. Это состояние называется «переполнением» (overrunили overflow).

Для выявления этих состояний в подсистеме UARTмикроконтроллера ADuC70xx используются два флага: DR (DataReady) и OE (OverrunError) – см. описание регистра COMSTA0.

Регистр-защёлка делителя, младший байт COMDIV0 (DivisorLatch LSB ‑ DLL). Доступ «чтение-запись». Доступен при установленном в 1 бите COMCON0.7. Описание использования этого регистра – ранее, в подразделе «Задание скорости следования битовых интервалов».

Регистр разрешения прерываний COMIEN0, (InterruptEnableRegister IER), доступ «чтение-запись. Доступен при сброшенном в «0» бите COMCON0.7.

Биты

Имя поля

Описание (функция)

7-4

---

Резервировано

3

EDSSI

«1» ‑ Разрешение прерывания при изменении статуса модема.

2

ELSI

«1» ‑ Разрешение прерывания при изменении статуса линии.

1

ETBEI

«1» ‑ Разрешение прерывания при опустошении буфера передатчика.

0

ERBFI

«1» ‑ Разрешение прерывания при заполнении буфера приёмника.

Запись в этот регистр позволяет программисту разрешить (или запретить) формирование запроса аппаратного прерывания при возникновении различных событий в подсистеме UART.

Регистр-защёлка делителя, старший байт COMDIV1 (DivisorLatch MSB ‑ DLH). Доступ «чтение-запись». Доступен при установленном в 1 бите COMCON0.7.Описание использования этого регистра было приведено ранее в подразделе «Задание скорости следования битовых интервалов».

Регистр идентификации прерываний COMIID0 (InterruptIdentificationRegister), доступ «только чтение». Анализ состояний битов этого регистра позволит определить причину запроса прерывания. ??? не соответствует описанию в PC

Биты

Имя поля

Описание (функция)

Операция очисткиCOMIID0, устанавливающая в нем значение 0x1

7-3

Резервированы

2-1

Статус

(Это поле может быть ненулевым только при NINT=1)

00 – прерывание по изменению состояния модема

01 – прерывание по опустошению буфера передатчика

10 – прерывание по заполнению буфера приёмника

11 – прерывание по изменению состояния линии

Чтение COMSTA1

Запись в COMTXили чтение COMIID0

Чтение COMRX

Чтение COMSTA0

0

NINT

«1» ‑ нет запросов прерывания,

«0» ‑ есть запросы прерывания.

Установится в 1, если п

Если программист разрешил формирование запроса прерывания изменению состояния подсистемы UART, код обработчика прерываний должен в первую очередь проанализировать состояние этого регистра, чтобы выяснить причину возникновения запроса прерывания.

Регистр управления линией COMCON0(LineControlRegister LCR), доступ «чтение-запись».Этот регистр позволяет настроить формат пакета (одновременно и одинаково для передатчика и для приемника). Старший бит регистра COMCON0, будучи установлен в 1, открывает доступ к регистрам делителя, позволяя задать частоту следования битовых интервалов. Бит 6 (BRK) используется только для тестовых целей. Если этот бит установлен в 1, выходной сигнал передатчика UART принудительно устанавливается в 0 до тех пор, пока программа не очистит бит 6 (BRK).

Биты

Имя поля

Описание (функция)

7

DLAB

DivisorLatchAccessBit «1» ‑ разрешён доступ к делителю,

«0» ‑ разрешён доступ к COMTX и COMRX.

6

BRK

«1» ‑ выход передатчика в состоянии 0 (Break), «0» ‑ обычный режим

5

SP

StickyParityПринудительная установка контрольного бита.

4

EPS

EvenParitySelect

При EPS=1 контрольный бит устанавливается по признаку «четность, при EPS=0 контрольный бит устанавливается по признаку «нечетность

3

PEN

ParityEnableРазрешение передачи-приема бита (признака) чётности.

2

STOP

«1» ‑ длина стопового бита 2 (или 1,5), «0» ‑ длина стопового бита 1

1-0

WLS

WordLengthSelect Длина слова: 00 – 5 бит; 01 – 6 бит; 10 – 7 бит; 11 – 8 бит.

Биты [1:0] WLS позволяют выбрать длину информационной части пакета. В подавляющем большинстве современных приложений используется пакет, содержащий 8 информационных битов.

Бит [2]STOPпозволяет задать длину стопового интервала. В подавляющем большинстве современных приложений используется стоповый интервал 1 бит. Длина стопового интервала 1.5 бита возможна (вместо 2 битов) только для пакета с 5-ю информационными битами. Следует заметить, что если приемник настроен на формат со стоповым интервалом 1 бит, то передатчик может работать как с 1- так и с 2-битовым стоповым интервалом,поскольку приемник анализирует лишь состояние первого стопового бита.

Бит 3 [PEN] будучи установлен в «1», разрешает наличие в пакете контрольного бита. В UART микроконтроллера ADuC70xx реализовано аппаратное формирование в передатчике и проверка в приемнике контрольного бита по правилу четности (нечетности) количества единичных битов в информационной части пакета.

Бит 4 [EPS] определяет правило аппаратного формирования контрольного бита. Если бит EPS равен 0, то контрольный бит устанавливается таким, чтобы суммарное количество «единиц» в информационной части пакета, включая и контрольный бит, было четным. Если EPS установить в 1, то контрольный бит будет устанавливаться так, чтобы количество единиц в информационной части пакета (включая контрольный бит) было нечетным.

Бит 5 [SP] будучи установлен в «1»,включает режим, позволяющий программно задать значение контрольного бита, независимо от значений информационных битов. При PEN=SP=1 контрольный бит всегда имеет значение, обратное значению бита EPS. Это позволяет программисту сформировать и передавать пакет, в котором до 9ти битов могут использоваться для передачи данных. Программа должна сначала установить бит EPS в нужное состояние а затем произвести (как обычно) запись информационной части пакета в буфер передатчика.

Бит 6 [BRK] будучи установлен в «1», переключает выходной сигнал передатчика в состояние логического «0», для тестовых целей. Чтобы вернуть нормальное состояние линии, следует сбросить бит [BRK].

Бит 7 [DLAB] будучи установлен в «1», открывает доступ к регистрам делителя, если бит [DLAB] сброшен, открыт доступ к буферным регистрам приемника и передатчика и к регистру.

Регистр управления модемом COMCON1(ModemControlRegister MCR), доступ «чтение-запись».

Позволяет программно задавать состояния выходных сигналов аппаратного управления потоком

7-5

4

2-3

1

0

---

LOOPBACK

---

RTS

DTR

Запись «1» вызывает установку сигнала DTR в «0»

Запись «1» вызывает установку сигнала RTS в «0»

Резервированы

Запись «1» вызывает внутреннее соединение RTS с CTS и DTR с DSR. Для тестовых целей.

Резервированы

Регистр состояния линии COMSTA0(LineStatusRegister LSR), доступ «только чтение».

Для лучшего понимания значений битов этого регистра необходимо помнитьо двойной буферизации регистров приемника и передатчика UART.

Биты

Имя поля

Описание (функция)

7

---

Reserved

6

TEMT

TransmitterEmpty‑Флаг опустошения сдвигового регистра передатчика. Устанавливается автоматически по концу передачи слова. Сбрасывается автоматически при копировании словаиз буфера передатчика, если последний не пуст.

5

THRE

TransmitterHoldingRegisterEmptyФлагустанавливаетсяприкопировании содержимого буфера передатчика в сдвиговый регистр и сигнализирует о том, что можно поместить в буфер следующее слово. Сбрасывается при записи слова в буфер.

4

BI

Флаг ошибки (обрыва) линии. Устанавливается аппаратно, если линия SINнаходится в состоянии Low дольше, чем время передачи байта. Сбрасывается автоматическипосле чтения регистра COMSTA0.(???).

3

FE

Флаг ошибки формата. Устанавливается аппаратно при неверном значении стоп-бита. Сбрасывается автоматически после чтения регистра COMSTA0.(???)

2

PE

Флаг ошибки чётности. Устанавливается по аппаратному обнаружению неверного бита чётности. Сбрасывается автоматически после чтения регистра COMSTA0.(???)

1

OE

OverrunError‑Флаг ошибки перезаписи. Устанавливается аппаратно, если очередной принятый байт затирает предыдущий до того, как тот был считан. Сбрасывается автоматически после чтения регистра COMSTA0.(???)

0

DR

DataReady‑Флаг готовности данных. Устанавливается аппаратно по концу приёма байта. Сбрасывается автоматически при считывании буфера приёмника.

Регистр состояния модема COMSTA1(ModemStatusRegister MSR), «только чтение».

Биты

Имя поля

Описание (функция)

7

DCD

DataCarrierDetectСостояние входного сигнала DCD

6

RI

RingIndicatorСостояние входного сигнала RI

5

DSR

DataSetReadyСостояние входного сигнала DSR

4

CTS

CleatToSendСостояние входного сигнала CTS

3

DDCD

DeltaDCDУстанавливается автоматически при изменении состояния сигнала DCD. Сбрасывается автоматически при чтении регистра COMSTA1.

2

TERI

TrailingEdgeRIУстанавливается автоматически по спаду сигнала RI. Сбрасывается автоматически при чтении регистра COMSTA1.

1

DDSR

DeltaDSTУстанавливается автоматически при изменении состояния сигнала DSR. Сбрасывается автоматически при чтении регистра COMSTA1

0

DCTS

DeltaCTSУстанавливается автоматически при изменении состояния сигнала CTS. Сбрасывается автоматически при чтении регистра COMSTA1

Опрос битов регистра COMSTA1 позволяет определить состояния управляющих линий интерфейса UART.

8. Регистр временного хранения COMSCR один байт, доступ «чтение-запись». В микросхемах INS8250,... NS16550A этот регистр не выполнял каких-либо аппаратно-поддерживаемых функций, а был введен в микросхему, чтобы полностью занять диапазон из 8-ми адресов. С целью обеспечения полной совместимости со стандартными микросхемами UART аналогичный регистр введен и в микроконтроллеры серии ADuC70xx.

Перечисленные регистры аналогичны соответствующим регистрам стандартного последовательного порта 16450. Последующие регистры являются расширением этого стандарта.

Регистр дробного делителя COMDIV2, два байта, доступ «чтение-запись». Регистр позволяет получить широкий ряд значений битовых частот, вплоть до величины 1305600 Бод.

Разряд

Название

Описание

15

FBEN

Бит разрешения работы генератора с дробным делителем. Устанавливается пользователем для разрешения работы генератора с дробным делителем. Сбрасывается пользователем, если необходима генерация стандартной частоты 450 UART

14–13

Зарезервированы

12–11

FBM[1:0]

Если (FBM ==00b), M = 4, иначе M=FBM

10–0

FBN[10:0]

N

Использование дробного делителя обсуждалось ранее.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]