21.8. Оконечные каскады USB-контроллера в режиме SUSPEND
Следующий рисунок иллюстрирует функционирование оконечных каскадов USB-контроллера, связанных непосредственно с выводами МК:
- В режиме IDLE оконечные каскады USB-контроллера переходят в режим пониженного электропотребления.
- В режиме ACTIVE оконечные каскады находятся в рабочем состоянии.
Рисунок 21.15. Работа оконечных каскадов USB-контролера
Об обнаружении состоянии SUSPEND шины USB сигнализирует флаг SUSPI. Данный флаг автоматически переводит оконечные каскады USB-контроллера в режим IDLE. При обнаружении события, отличного от IDLE, устанавливается флаг WAKEUPI, что возобновляет активность оконечных каскадов.
Переход оконечных каскадов в режим IDLE также возможен при установке бита DETACH. Сброс этого бита возобновляет режим ACTIVE.
21.9. Настройка таймеров OTG
Предусмотрена возможность изменить настройки некоторых OTG таймеров. Ее предоставляет регистр OTGTCON, который содержит биты PAGE для выбора таймера, а также биты VALUE для изменения настройки выбранного таймера. Прежде чем пользоваться данными возможностями необходимо обратиться к последним выпускам спецификаций OTG для уточнения актуальных временных характеристик.
- PAGE=00b: выдержка времени AWaitVrise. [OTG]. В режиме Host, сразу после установки бита VBUSREQ равным "1", выполняется установка флага ошибки VBERRI, если по истечении выдержки времени AWaitVrise не было обнаружено напряжение VBUS.
- VALUE=00b выдержка времени 20 мс
- VALUE=01b выдержка времени 50 мс
- VALUE=10b выдержка времени 70 мс
- VALUE=11b выдержка времени 100 мс
- PAGE=01b: выдержка времени VbBusPulsing. [OTG]. В режиме Device данная выдержка соответствует длительности импульса на Vbus в ходе SRP (протокол запроса сессии).
- VALUE=00b выдержка времени 15 мс
- VALUE=01b выдержка времени 23 мс
- VALUE=10b выдержка времени 31 мс
- VALUE=11b выдержка времени 40 мс
- PAGE=10b: выдержка времени PdTmOutCnt. [OTG]. В режиме Device, когда программой был выполнен запрос на отправку SRP, начинается аппаратный отсчет данной выдержки с момента снижения VBUS ниже порогового уровня "session_valid", а по завершении отсчета - генерируется первый импульс. Данной выдержкой учитывается время, необходимое для разряда емкости линий USB с учетом действия подтягивающих к минусу питания резисторов. Задержка осуществляется до момента пересечения напряжением VBUS порогового уровня "b_session_end", что определено в спецификациях OTG.
- VALUE=00b выдержка времени 93 мс
- VALUE=01b выдержка времени 105 мс
- VALUE=10b выдержка времени 118 мс
- VALUE=11b выдержка времени 131 мс
- PAGE=11b: выдержка времени SRPDetTmOut. [OTG]. В режиме Host данная выдержка времени задает длительность импульса, необходимого для обнаружения и получения действительного SRP из Device-контроллера.
- VALUE=00b выдержка времени 10 мкс
- VALUE=01b выдержка времени 100 мкс
- VALUE=10b выдержка времени 1 мс
- VALUE=11b выдержка времени 11 мс
21.10. Обнаружение подключения
Подключение к USB-порту оценивается по напряжению на выводе VBUS. Для этого реализована следующая архитектура.
Рисунок 21.16. Структурная схема входа обнаружения подключения
Логика управления вывода VBUS формирует сигналы в зависимости от уровня напряжения на VBUS:
- Сигнал "Session_valid" имеет активный высокий уровень, когда напряжение на VBUS больше или равно 1.4В. Если меньше 1.4В, сигнал неактивен.
- Сигнал "Vbus_valid" имеет активный высокий уровень, когда напряжение на VBUS больше или равно 4.4В. Если меньше 4.4В, сигнал неактивен.
- Бит статуса VBUS равен 1, когда VBUS больше чем "Vbus_valid". Бит статуса VBUS становится равным 0, когда VBUS снижается ниже "Session_valid" (вносится гистерезис).
- Флаг VBUSTI устанавливается всякий раз, когда изменяется состояние бита VBUS.
21.10.1. Режим Device
USB-контроллер в режиме Device нельзя подключать к шине, пока на станет равным 1 бит VBUS.
21.10.2. Режим Host
Host-интерфейс должен использовать вывод UVCON для управления внешним силовым ключом или стабилизатором, который питает линию Vbus. Установление уровней на выводе UVCON осуществляется автоматически. Он аппаратно переводится в высокое состояние после программной установки бит UVCONE и VBUSREQ.
Если обнаруживается подключение device-интерфейса (подтяжка к плюсу питания на линии DP или DM) в течение 300 мс после подачи Vbus, флаг DCONNI перейдет в высокое состояние. Если же после установки бита VBUSREQ в течение 300 мс не будет обнаружен device-интерфейс, будет выполнена установка флага (и сгенерировано прерывание) BCERRI и приостановлена подача Vbus (UVCON равен 0).
Если данное поведение предоставляет некоторое ограничение для Host-системы, необходимо придерживаться следующей последовательности:
- UVCONE и VBUSREQ необходимо сбросить.
- VBUSHWC должен быть установлен (для отключения аппаратного управления выводом UVCON)
- 7-ая линия порта E (альтернативная функция вывода UVCON) должна быть установлена программно.
- Подключение Device-системы обнаруживается по состоянию флага SRPI (который обычно можно использовать для обнаружения импульса на DP/DM, сгенерированного на стороне OTG B, которая запрашивает новую сессию).
21.11. Контроль вывода ID
Для обнаружения изменений состояния вывода ID применена следующая архитектура:
Рисунок 21.17. Структурная схема логики контроля вывода ID
Вывод ID можно использовать для обнаружения режима USB (Device или Host). В случае программного выбора режима вывод UID можно использовать как линию ввода-вывода общего назначения, причем даже когда разрешена работа USB-интерфейса.
Когда вывод UID выбран, по умолчанию, (т.е. когда не подключена вилка типа A или B), контроллер работает в режиме Device (внутренняя подтяжку к плюсу). Прерывание IDTI инициируется, когда вилка типа A (Host) вставляется или извлекается. Прерывание не инициируется, когда вставляется или извлекается вилка типа B (Device).
Контроль вывода ID не зависит от общего разрешения работы интерфейса USB.
|