Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
||||||||||||
23. Работа USB-контроллера в режиме HostДанный режим поддерживается только у микроконтроллеров AT90USB647/1287. 23.1. Описание канала (Pipe)Взамен термина конечная точка, употребляемый в описании Device-контроллера, применительно к Host-контроллеру используется другой термин - канал (pipe). Соответствие канала Host-контроллера конечной точке Device-контроллера установлено стандартом USB.
Для настройки канала согласованно с параметрами конечной точки Device-стороны, Host-контроллер должен использовать дескрипторы настроек Device-стороны (Device Configuration Descriptors). 23.2. Отсоединение (Detach)После сброса бит управления отсоединением (DETACH) равен 1. Таким образом, перед переходом в режим Host (установка бита HOST) необходимо программно сбросить бит отсоединения. 23.3. Подача питания и сбросСледующий рисунок иллюстрирует основные состояния Host-контроллера после подачи питания.
После аппаратного сброса Host-контроллер находится в состоянии RESET. Разрешение работы USB-контроллера и активизация его режима Host-контроллера приводят к переводу в состояние IDLE. В таком состоянии Host-контроллер ожидает подключение Device-стороны, по минимуму потребляя ток. Оконечные каскады USB-контроллера должны находиться в режиме IDLE. Для перехода в состояние HOST READY не обязательно активизировать блок PLL. Если Host-контроллер не генерирует пакеты START OF FRAME (SOF), шина USB и сам контроллер переходят в состояние SUSPEND. В этом состояние потребляемый USB-контроллером ток минимален. Host-контроллер выходит из состояния SUSPEND с началом генерации пакета SOF по линии USB. 23.4. Обнаружение Device-стороныКонтроллер обнаруживает подключение Device-стороны, когда уровень на одном из выводов, D+ или D-, отличается от нуля. Иными словами, Host-контроллер следит за появлением подтяжки к плюсу питания на линии D+ или D-. Однако, перед началом такого слежения необходимо обеспечить подачу напряжения VBUS на Device-сторону. Отключение Device-стороны Host-контроллер определяет по состоянию IDLE шины, которому соответствуют низкие уровни на линиях D+ и D-. 23.5. Выбор каналаПеред выполнением каких-либо действий ЦПУ должен выбрать канал, с которым он желает работать. Для этого предусмотрены биты PNUM2:0 (регистр UPNUM). Значение, записанное в данные биты, определяет номер канала, которым будет управлять ЦПУ. После выбора канала, ЦПУ может осуществлять доступ к его регистрам и данным. 23.6. Настройка каналаДля активизации канала необходимо придерживаться следующего алгоритма.
Сразу после активизации канала (EPEN = 1) все готово для отправки запросов Device-стороне. По завершении конфигурации (CFGOK = 1), можно модифицировать только TOKEN канала (PTOKEN) и интервал опроса канала типа INTERRUPT. Канал типа CONTROL поддерживает только 1 банк. Попытка установки любого другого значения приведет к ошибке конфигурации (CFGOK = 0). Обнуление бита PEN приводит к сбросу настроек канала. В таком случае, все соответствующие регистры канала принимают их значения по умолчанию. Подробности см. в разделе, посвященному управлению памятью. Прим.: программа должна выполнить настройку канала по умолчанию (CONTROL) со следующими параметрами:
Для получения 8 байт Device-дескриптора программа должна отправить запрос GET_DESCRIPTOR. В этих байтах содержится параметр MaxPacketSize (максимальный размер пакета) конечной точки типа CONTROL Device-стороны, которая используется по умолчанию. С помощью данного параметра необходимо повторно настроить размер канала по умолчанию. 23.7. USB-сбросПосле установки бита сброса (RESET) USB-контроллер отправляет запрос USB RESET. После отправки этого запроса автоматически устанавливается бит RSTI. Если RSTE=1, это приводит к запуску прерывания. После отправки запроса USB RESET сбрасываются все настройки канала и назначение памяти. Состояние общего регистра разрешения прерываний Host-контроллера остается неизменным. Если перед этим шина находилась в режиме SUSPEND (SOFEN = 0), USB-контроллер автоматически перейдет в режим RESUME (HWUPI=1), а в целях генерации пакета SOF, сразу после USB RESET, будет аппаратно установлен бит SOFEN. 23.8. Настройка адресаКак только Device-сторона ответит на первый запрос Host-контроллера с адресом по умолчанию (0), Host-контроллер назначит новый адрес Device-стороне. Для этого Host должен отправить USB RESET, а затем выполнить запрос SET ADDRESS (тип CONTROL) с новым адресом, который будет использоваться Device-стороной. По окончании этого запроса программа должна сохранить новое значение адреса в регистре UHADDR. Все последующие запросы, выполненные через любой канал, будут выполняться с использованием нового адреса. Когда Host-контроллер отправляет USB RESET, значение регистра UHADDR сбрасывается и все последующие запросы будут выполняться с использованием адреса по умолчанию (0). 23.9. Обнаружение запроса удаленного возобновления (REMOTE WAKE-UP)Host-контроллер вводит режим SUSPEND обнулением бита SOFEN. В дальнейшем пакеты START OF FRAME по шине USB не передаются, что приводит к переводу Device-стороны в режим SUSPEND по истечении 3 мс. Device-сторона активизирует Host-контроллер отправкой запроса UPSTREAM RESUME (функция REMOTE WAKE-UP; удаленное возобновление). Host-контроллер обнаруживает отличное от IDLE состояние на шине USB и устанавливает бит HWUPI. Если таким, отличным от IDLE, состоянием оказывается UPSTREAM RESUME (K-состояние), произойдет аппаратная установка бита RXRSMI. Не позднее 1 мс программа должна установить бит RESUME для генерации DOWNSTREAM RESUME, при этом, длительность такой генерации должна быть не менее 20мс. Сразу после генерации DOWNSTREAM RESUME автоматически устанавливается бит SOFEN, что приводит к незамедлительной генерации SOF. 23.10. Сброс каналаПрограмма имеет возможность сброса канала. Для этого предусмотрен регистр сброса канала. Настройка канала и переключатель данных остаются неизменными. Сбросу подвергаются только настройки банка и биты статуса, которые принимают свои значения по умолчанию. Для полного сброса канала программа должна отключить, а затем включить канал. 23.11. Доступ к данным каналаЧтобы прочитать или записать данные в буфер FIFO канала, ЦПУ должен выбрать номер канала с помощью регистра UPNUM и выполнить операцию чтения или записи регистра UPDATX. 23.12. Управление каналом CONTROLТранзакция CONTROL разделяется на три этапа:
На каждом из этапов программа должна управлять изменением TOKEN. Исходное значение переключателя данных устанавливается с учетом типа пакета (действительно только для канала CONTROL):
23.13.Управление каналом OUTДля начала нужно убедиться, что канал настроен и не остановлен. Прим.: если программа принимает решение переключиться в режим SUSPEND (обнуление SOFEN), когда банк готов к отправке, USB-контроллер автоматически выйдет из режима SUSPEND и отправит банк. После освобождения текущего банка выполняется аппаратная установка бита TXOUT. Если бит TXOUTE установлен, это вызовет генерацию прерывания. Одновременно с этим устанавливается бит FIFOCON. ЦПУ записывает данные в FIFO, а затем сбрасывает бит FIFOCON для разрешения USB-контроллеру передавать данные. Если канал OUT состоит из нескольких банков, сброс FIFOCON также приведет к смене банка на следующий. Обновление бит TXOUT и FIFOCON осуществляется автоматически в зависимости от состояния следующего банка. 23.14. Управление каналом INВначале нужно сконфигурировать канал. Когда канал должен получить данные от Device-стороны, программа вводит режим IN. Это делается с помощью бита INMODE.
Генерация запроса IN начинается после программного обнуления бита PFREEZE. После каждого заполнения текущего банка выполняется установка бит RXIN и FIFOCON. Если установлен бит RXINE, это приводит к запуску прерывания. Программа может подтвердить USB-прерывание путем обнуления бита RXIN. Для освобождения текущего банка программа считывает данные и обнуляет бит FIFOCON. Если канал IN состоит из нескольких банков, обнуление бита FIFOCON инициирует переключение к следующему банку. Обновление бит RXIN и FIFOCON выполняется аппаратно в соответствии со статусом нового банка. 23.14.1. Ошибка CRC (только для передачи типа ISOCHRONOUS) Ошибка CRC может возникнуть на этапе IN, если USB-контроллер обнаружит повреждение в принятом пакете. В такой ситуации запускается прерывание STALLEDI/CRCERRI, но оно не исключает запуска прерывания RXINI. 23.15. Система прерываний
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|