21.4. Основные режимы работы
21.4.1. Введение
После аппаратного сброса USB-контроллер находится в отключенном состоянии. После разрешения работы USB-контроллер работает в режиме Device или Host, что зависит от состояния вывода ID.
- Если вывод ID не подключен к общей цепи, значение бита ID устанавливается аппаратно (внутренним подтягивающим к плюсу питания резистором на выводе UID), что приводит к выбору режима Device.
- Бит ID сбрасывается аппаратно при обнаружении низкого уровня на выводе ID. В результате, отключается режим Device и активизируется режим Host.
В любом случае, при необходимости доступа к мультиплексированным регистрам Device- или Host-контроллера, можно выполнить программный выбор режима. Например, если USB-контроллер обнаружил режим Device (высокое состояние на выводе ID), в программе также необходимо выбрать режим device (бит HOST = 0), в противном случае, доступ будет выполняться к host-регистрам. Сказанное справедливо и для режима Host.
Прим.: USB-контроллер, интегрированный в AT90USB646/1286, не поддерживает режима Host, поэтому, вывод ID является незадействованным и его можно конфигурировать и использовать как линию ввода-вывода общего назначения.
21.4.2. Состояния USB-контроллера после подачи питания и сброса
На следующем рисунке демонстрируются основные состояния USB-контроллера после подачи питания:
Рисунок 21.9. Состояния USB-контроллера после сброса
После аппаратного сброса USB-контроллер находится в состоянии RESET. В этом состоянии:
- Бит USBE не установлен;
- Синхронизация USB-контроллера остановлена для минимизации потребляемого тока (FRZCLK=1);
- USB-контроллер отключен;
- Выводы USB находятся в режиме SUSPEND;
- Внутренними состояниями Host и Device USB-контроллеров являются RESET.
После установки USBE USB-контроллер переходит в режим Host или Device (в зависимости от состояния вывода USB ID). Выбранный контроллер находится в состоянии IDLE.
USB-контроллер может быть в любой момент остановлен сбросом бита USBE. Фактически, обнуление бита USBE действует как аппаратный сброс.
21.4.3. Прерывания
Для USB-контроллера назначено для вектора прерываний.
Рисунок 21.10. Система прерываний USB
Более детальная информация по прерываниям в режимах Host и Device приведена в разделах 22.17 и 23.15.
Рисунок 21.11. Источники вектора общего USB прерывания
Рисунок 21.12. Источники прерывания конечной точки/канала USB
Рисунок 21.13. Система OTG и общего USB прерывания
Имеется два вида прерываний: операционные (т.е. их генерация является частью нормального процесса функционирования) и нештатные (ошибки).
Операционные прерывания генерируются при возникновении следующих событий:
- Обнаруживается изменение уровня на линии USB ID (при подключении, отсоединении) (IDTI)
- Обнаружение появления/исчезновения напряжения VBUS (VBUSTI)
- Обнаружение SRP (SRPI)
- Смена роли (ROLEEXI)
Нештатные прерывания генерируются в следующих случаях:
- Обнаружено падение напряжения VBus (VBERRI)
- Обнаружена ошибка подключения стороны B (BCERRI)
- Ошибка HNP (HNPERRI)
- Истекло время в режиме SUSPEND (STOII)
|