Регистры управления и состояния модуля USB

Регистры управления и состояния модуля USB размещены в банке 3 памяти данных микроконтроллера.

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

Регистр флагов прерываний модуля USB (UIR)

Регистр прерываний модуля USB (UIR) содержит флажки прерываний для источников прерывания модуля USB. Каждому из этих флажков соответствует бит разрешения прерывания в регистре управления прерываниями модуля USB (UIE). Если прерывания запрещены, то установка флажков прерываний может быть обнаружена в режиме программного опроса и затем обработана. Общий флажок прерывания модуля USB (USBIF) для прерывания микропроцессора расположен в регистре PIRl, состояние которого формируется логическим объединением по ИЛИ всех одиночных источников прерывания модуля USB. Установленный бит прерывания в регистре UIR после обработки должен быть сброшен программно записью «0» в соответствующий разряд.

U-0 U-0 R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0
- - STALL UIDLE TOK_DNE ACTIVITY UERR USB_RST
               

Регистр флажков прерываний модули USB: «UIR» (адрес 190h)

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

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

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

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

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

Разряд 5: STALL: Устанавливается, если передан ответ взаимодействия STALL.

Разряд 4: UIDLE: Устанавливается при переполнении таймера останова, если в течение 3 мс сигналы шины USB находятся в состоянии останова. Таймер останова сбрасывается, когда шина USB активна. Если UIDL = 1, то модуль USB может быть переведен в режим останова установкой бита SUSPND в регистре UCTRL.

Разряд 3: TOK_DNE: Устанавливается, если обработка текущего маркера завершена. Для выявления номера оконечной точки и направления, используемые для обработки этого маркера, считывается регистр USTAT. Сброс этого бита сбрасывает регистр USTAT или, если был обработан следующий маркер, загружает в USTAT сохраненное в STAT состояние.

Разряд 2: ACTIVITY: Устанавливается, если на шине обнаружено активное состояние. Этот бит в режиме останова обычно не маскируется. Перед установкой режима останова необходимо разрешить это прерывание установкой соответствующего бита в регистре UIE.

Разряд I: UERR: Устанавливается, если обнаружена какая-либо ошибка. Для идентификации ошибки необходимо считать регистр флажков ошибок (UE1R).

Разряд 0: USB_RST: Устанавливается, если в течение не менее 2.5 мс сигналы шины USB находятся в состоянии сброс. Бит устанавливается после того как условие сброса USB снимается. Программа обработки данного прерывания должна установить в регистре адреса 00h и подключить оконечную точку с номером 0.

Примечание. Биты могут изменяться, если только SUSPND = 0 (UCTRL).

Регистр разрешения прерываний модуля USB (UIE)

Регистр разрешения прерываний модуля USB (UIE) содержит биты разрешения для каждого из источников прерывания модуля USB, флажки которых находятся в регистре UIR. Установка любого из этих битов разрешает прерывание соответствующего источника. Значения битов в регистре UIE воздействуют только на разрешение прерывания модуля USB (бит USBIE в регистре PIE1). Если прерывания запрещены, то установка флажков прерываний может быть обнаружена в режиме программного опроса и затем обработана.

U-0 U-0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0
- - STALL UIDLE TOK_DNE ACTIVITY UERR USB_RST
               

Регистр разрешения прерываний модуля USB: «UIE» (адрес 191h)

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

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

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

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

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

Разряд 5: STALL: Разрешение прерывания STALL.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 4: UIDLE: Разрешение прерывания UIDLE.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 3: TOK_DNE: Разрешение прерывания TOK_DNE.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 2: ACTIVITY: Разрешение прерывания ACTIVITY.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 1: UERR: Разрешение прерывания UERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 0: USB_RST: Разрешение прерывания USB_RST.

1 = прерывание разрешено.

0 = прерывание запрещено.

Примечание. Прерывания могут быть разрешены, только если SUSPND = 1 (UCTRL).

Регистр флагов ошибок модуля USB (UEIR)

Регистр флагов ошибок модуля USB (UEIR) содержит флажки ошибок, возникающих при приеме или передаче данных в модуле USB. Прерывания по каждому из этих битов разрешаются установкой соответствующих разрядов в регистре разрешения прерываний по ошибкам модуля USB (UEIE). Состояние всех флажков ошибок объединяются по логике «ИЛИ», результатом объединения является флажок ошибки модуля USB бит UERR в регистре UIR. Установленный флажок в регистре UEIR после обработки должен быть сброшен программно записью «О» в соответствующий разряд. Каждый флажок устанавливается, как только обнаружено условие ошибки, поэтому прерывания по ошибкам обычно не совпадают с концом обработки маркера.

R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0 R/C - 0
BTS_ERR OWN_ERR WRT_ERR BTO_ERR DFN8 CRC16 CRC5 PID_ERR
               

Регистр флажков ошибок модуля USB:«UEIR» (адрес 192h)

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

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

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

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

Разряд 7: BTS_ERR: Устанавливается, если обнаружена ошибка вставки разрядов.

Разряд 6: OWN_ERR: Устанавливается, если при обращении к буферу со стороны шины оказывается, что им владеет микропроцессор. При приеме это вызывает переполнение данных, при передаче — антипереполнение.

Разряд 5: WRT_ERR: Ошибка записи. Устанавливается при попытке записи микропроцессора в буфер, в который идет запись от шины.

Разряд 4: BTO_ERR: Устанавливается, если на шине произошла ошибка взаимодействия по времени ожидания. При этом используется таймер шины USB для отсчета времени между фазами маркера и данных в транзакциях установки и вывода или фазами данных и взаимодействия в транзакциях ввода. Если прошло более 17 тактов от предыдущего ЕОР до прихода транзакции останова, то фиксируется ошибка взаимодействия по времени ожидания.

Разряд 3: DFN8: Устанавливается, если полученное поле данных не соответствует целому числу байт и в поле данных обнаружено слово длинной не 8 бит.

Разряд 2: CRC16: Устанавливается, если поле контрольной суммы CRC16 не соответствует.

Разряд 1: CRC5: Устанавливается, если поле контрольной суммы CRC5 не соответствует в пакетах переданных главной ЭВМ. Если бит, установлен, то пакет отвергается.

Разряд 0: PID_ERR: Устанавливается, если в поле проверки PID обнаружена ошибка.

Примечание. Биты могут изменяться, если только SUSPND = 0 (UCTRL).

Регистр разрешения прерывания по ошибкам модуля USB (UEIE)

Регистр разрешения прерывания по ошибкам модуля USB (UEIE) содержит биты разрешения прерывания по ошибкам модуля USB. Установка любого из этих битов разрешает соответствующей ошибке устанавливать флажок прерывания в регистре UEIR

R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0
BTS_ERR OWN_ERR WRT_ERR BTO_ERR DFN8 CRC16 CRC5 PID_ERR
               

Регистр разрешения прерывания ошибок модуля USB: «UEIE» (адрес 193h)

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

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

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

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

Разряд 7: BTS_ERR: Разрешение прерывания по ошибке BTS_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 6: OWN_ERR: Разрешение прерывания по ошибке OWN_ERR

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 5: WRT_ERR: Разрешение прерывания по ошибке WRT_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 4: BTO_ERR. Разрешение прерывания по ошибке BTO_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 3: DFN8: Разрешение прерывания по ошибке DFN8.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 2: CRC16: Разрешение прерывания по ошибке CRC16.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд I: CRC5: Разрешение прерывания по ошибке CRC5.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 0: PID_ERR: Разрешение прерывания по ошибке PID_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Регистр состояния модуля USB (USTAT)

Регистр состояния модуля USB (USTAT) показывает состояние предыдущей транзакции USB. При прерывании по завершению обработки текущего маркера TOK_DNE должен читаться регистр USTAT, для того чтобы определить номер оконечной точки и направление обмена, используемые для обработки этого маркера. Данные состояния в регистре USTAT действительны, только если установлен флажок прерывания TOK_DNE.

Если транзакция USB завершается раньше чем обслужено предыдущее прерывание TOK_DNE, то модуль USB сохранит состояние следующей транзакции в буфере FIFO STAT. Таким образом, регистр USTAT — фактически окно чтения четырехбайтного блока FIFO STAT, которое позволяет ядру процессора обрабатывать одну транзакцию, в то время как выполняется следующая. Очистка бита TOK_DNE в регистре UIR модифицирует регистр USTAT сдвигом FIFO. При этом если в STAT имеются данные, то снова вызывается прерывание TOK_DNE.

U-0 U-0 U-0 R - X R - X R - X U-0 U-0
- - - ENDP1 ENDP0 IN - -
               

Регистр состояния USB: «USTAT» (адрес 194h)

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

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

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

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

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

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

Разряды 4-3: ENDP <1:0>: Эти разряды указывают адрес оконечной точки, с которой выполнялась транзакция USB, что позволяет определять какой BDT модифицирован.

Разряд 2: IN: Этот бит указывает направление передачи.

1 = транзакция ввода.

0 = транзакция вывода или установки.

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

Регистр управления модулем USB (UCTRL)

Регистр управления модулем USB обеспечивает управление модулем и содержит информацию о его конфигурации.

U-0 U-0 R - X R/C - X R/W - X R/W - X R/W - X U-0
- - SE0 PKT_DIS DEV_ATT RESUME SUSPND -
               

Регистр управления USB: «UCTRL» (адрес 195h)

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

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

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

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

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

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

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

Разряд 5: SE0: Метод синхронизации с несимметричным нулем. Этот бит состояния указывает, что на обоих линиях D + и D- установлен низкий уровень.

1 = получен несимметричный нуль

0 = несимметричный нуль не получен

Разряд 4: PKT_DIS: Устанавливается, если получен маркер установки, и сообщает, что передача или прием пакета отключены и позволяет программному обеспечению убрать из очереди отложенные пакеты перед продолжением обработки маркера. Очистка этого бита позволяет продолжать обработку маркера. Этот бит не установлен по каждому маркеру установки и может изменяться, только если SUSPND = 0 (UCTRL).

Разряд 3: DEV_ATT: Управление выходом VUSB.

1 = выход VUSB включен (напряжение 3,3 В).

0 = выход VUSB отключен

(выводы D+ и D- в состоянии высокого сопротивления).

Разряд 2: RESUME: Передача сигнала RESUME позволяет выполнять удаленное пробуждение ведущего USB. Для запуска удаленного пробуждения программное обеспечение должно установить RESUME в «1» на 10 мс, а затем сбросить его в 0.

1 = выполнить передачу сигнала

0 = нормальная работа.

Разряд 1: SUSPND: Приостанавливает операции USB и переводит модуль в режим малого потребления. Этот бит устанавливается в ответ на прерывание UIDLE и сбрасывается после прерывания ACTIVITY. Уровень на VUSB будет отличным по сравнению с нормальной работой.

Выход VUSB будет открыт, но выводы приемопередатчика заблокированы.

1 = модуль USB в режиме малого потребления.

0 = модуль USB включен.

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

Регистр адреса USB (UADDR)

Регистр адреса (UADDR) содержит 7-разрядный уникальный адрес устройства на шине USB.

Регистр сбрасывается в 0 после сброса микроконтроллера или после приема сигналов сброса на шине USB. Это обеспечивается для соответствия со спецификацией USB, не сконфигурированные устройства должны отвечать на обращение с адресом 0. Адрес USB записывается главной ЭВМ во время фазы u1091 установки USB.

U-0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0 R/W - 0
- ADDR6 ADDR5 ADDR4 ADDR3 ADDR2 ADDR1 ADDR0
               

Регистр адреса USB: «UADDR» (адрес 196h)

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

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

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

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

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

Разряды 6-0: ADDR<6:0>: 7-разрядный адрес USB.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: