Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ТСИ.doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
1.97 Mб
Скачать

Регистр состояния программного обеспечения usb

Этот регистр используется библиотечными подпрограммами обслуживания модуля USB для хранения состояния.

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

7

6

5

4

3

2

1

0

7

0

Регистр состояния программного обеспечения: «USWSTAT» (адрес 197h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса.

Разряды 7-2: Функциональные идентификаторы.

Разряды 1-0: Состояние конфигурации.

Регистры управления оконечными точками (uepn)

Три регистра управления оконечными точками содержат биты управления для 6 оконечных точек в соответствии с адресом в регистре USTAT, где оконечная точка - симплексное соединение номера оконечной точки и направления. Оконечная точка 0 (ЕР0) связана с конвейером управления, который требуется USB для всех функций (ввода, вывода и установки). Следовательно, после того, как получено прерывание USB_RST, микропроцессор должен записать в UEP0 код 06h. Неиспользуемые оконечные точки и направления должны быть отключены.

U-0

U-0

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

-

-

EP_CTL_DIS

EP_OUT_EN

EP_IN_EN

EP_STALL

7

0

Регистры управления оконечными точками: 'UEPn' (адрес 198h-19Ah)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса:

Разряды 7-4: Зарезервированы, читаются как «0».

Разряды 3-1: EP_CTL_DIS, EP_OUT_EN, EP_IN_EN: Определяют состояние и направление оконечной точки:

EP_CTL_DIS

EP_OUT_EN

EP_IN_EN

Состояние и направление оконечной точки

X

0

0

Отключена

X

0

1

Включена только для маркеров ввода

X

1

0

Включена только для маркеров вывода

1

1

1

Включена для маркеров ввода и вывода

0

1

1

Включена для маркеров ввода, вывода и установки

Разряды 0: EP_STALL: Указывает, что оконечная точка остановлена. Этот бит имеет приоритет над всеми другими битами регистра и устанавливается только если EP_IN_EN = 1 или EP_OUT_EN = 1. Обращение к данной оконечной точке по шине будет возвращать взаимодействие ОСТАНОВА. Бит EP_STALL может устанавливается и сбрасывается модулем.

Таблица дескрипторов буферов (BDT)

Дескрипторы буферов и буферы размещены в банке 3 памяти данных микроконтроллера. РIС16С745/765 поддерживает дескрипторы буферов (BD) для следующих оконечных точек:

-EP0 OUT USTAT<00h> UEP0

-EP0 INU STAT<01h> UEP0

-EP1 OUT USTAT<02h> UEP1

-EP1 IN USTAT<03h> UEP1

-EP2 OUT USTAT<04h> UEP2

-EP2 IN USTAT<05h> UEP2

Для эффективного управления связью с оконечной точкой модуль USB имеет в пространстве регистров таблицу дескрипторов буферов (BDT). Дескриптор буфера (BD) для каждой оконечной точки указывает на буфер данных в двухпортовой памяти и состоит из 4 регистров:

- регистр состояния буфера доступный ядру процессора только для записи (BDndST),

- регистр состояния буфера доступный ядру процессора только для чтения (BDndST),

- счетчик байтов буфера (BDndBC),

- начальный адрес буфера (BDndAL).

Где n — симплексное соединение номера оконечной точки и направления в регистре USTAT.

Поскольку буферы доступны и ядру процессора и модулю USB, то для того чтобы различить, кто может модифицировать BD и буфер в памяти системы, используется простой механизм семафора бит UOWN в регистре BDndST.

Если бит UOWN = «0», то доступ к BD и буферу в памяти имеет ядро процессора. Если бит UOWN = «1», то доступ к BD и буферу в памяти принадлежит модулю USB, при этом ядро процессора не должно изменять BD или соответствующий буфер данных.

Дескриптор буфера содержит информацию управления буфером оконечной точки для модуля USB и ядра процессора. Дескриптор буфера, в зависимости от состояния бита UOWN, содержит различные значения.

W - X

W - X

U-X

U-X

W - X

W - X

U-X

U-X

UOWN

DATA 0/1

-

-

DTS

BSTALL

-

-

7

0

Дескриптор буфера, регистр состояния, для записи MCU: «BDndST» (адреса 1A0h, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд,

- n = значение после сброса,

X - не определено

Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен устанавливать этот бит последним.

1 = монопольный доступ к BD модуля USB.

0 = монопольный доступ к BD MCU.

Разряд 6: DATA 0/1: Этот бит переключатель пакетов переданных или полученных данных.

1 = пакет данных 1

0 = пакет данных 0

Разряды 5-4: Зарезервированы, читаются как «X».

Разряд 3: DTS: Установка этого бита разрешает модулю USB выполнить синхронизацию переключателя данных. Если пакет получен с неправильным переключателем, то он будет игнорироваться и буфер останется неизмененным.

1 = выполнять синхронизацию переключателя данных

0 = синхронизации переключателя данных не делать

Разряд 2: BSTALL: Останов буфера. Установка этого бита вызовет передачу взаимодействия ОСТАНОВ. Если установлен бит BSTALL, то USB не использует BD и соответствующий буфер.

Разряды 1-0: Зарезервированы, читаются как «X».

Примечание. Для модификации разрядов не рекомендуется использовать команды BSF, BCF, так как регистр доступен только по записи.

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

U-X

U-X

UOWN

DATA 0/1

PID3

PID2

PID1

PID0

-

-

7

0

Дескриптор буфера, регистр состояния, для чтения MCU: «BDndST» (адреса 1AOh, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд

- n = значение после сброса:

X - не определено

Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен модифицировать этот бит последним.

1 = монопольный доступ к BD модуля USB.

0 = монопольный доступ к BD MCU.

Разряд 6: DATA 0/1:Этот бит переключатель пакетов переданных или полученных данных.

1 = пакет данных 1

0 = пакет данных 0

Разряды 5-2: PID <3:0>: Идентификатор пакета. Значение полученное в маркере PID.

Разряды 1-0: Зарезервированы, читаются как «X».

U-X

U-X

U-X

U-X

R/W - X

R/W - X

R/W - X

R/W - X

-

-

-

-

BC3

BC2

BC1

BC0

7

0

Дескриптор буфера счетчик байтов: «BDndBC» (адреса 1A1h, 1A5h, 1A9h, 1ADh, 1B1h, 1B51,)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд,

- n = значение после сброса,

X - не определено

Разряды 7-4: Зарезервированы, читаются как «X».

Разряды 3-0: ВС <3:0>: Счетчик байтов, которые будут переданы по маркеру ввод или получены по маркеру вывод. Диапазон счета от 0 до 8. После завершения обработки маркера вывод или маркера установки модуль USB заполняет это поле фактическим числом полученных байт данных.

Модуль USB использует данные в BD, когда UOWN = 1, которые содержат:

- значение PID Data0 или Datal,

- разрешение синхронизации переключателя данных,

- число байт для передачи или приема,

- начальный адрес буфера.

Ядро процессора использует данные в BD, когда UOWN = 0, которые содержат:

- значение PID Data0 или Data 1,

- полученный маркер PID,

- число переданных или принятых байт.

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

BA7

BA6

BA5

BA4

BA3

BA2

BA1

BA0

7

0

Дескриптор буфера, начальный адрес буфера: (адреса 1A2h, 1A6h, 1AAh, 1AEh, 1B2h, 1B6h)

R - читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд

- n = значение после сброса: X - не определено

Разряды 7-0: ВА <7:0>: Начальный адрес буфера для данной оконечной точки. Старший разряд 9-разрядного адреса (ВА8) всегда равен 1, что указывает на банк 3, где расположена двухпортовая память модуля USB (1B8h- 1DFh).

Примечание. Этот регистр должен всегда содержать значение в диапазоне B8h-DFh.