Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
|||||||||||||
22.11. Передача пакета STALLДля каждой конечной точки управление функцией STALL осуществляется с использование следующих бит:
Чтобы следующим запросом был отправлен пакет подтверждения STALL, необходимо установить бит STALLRQ. Все последующие запросы будут подтверждаться с помощью STALL до тех пор, пока установлен бит STALLRQC. Установка STALLRQC приводит к автоматическому обнулению бита STALLRQ. Бит STALLRQC моментально обнуляется аппаратными средствами сразу после его программной установки. Таким образом, при опросе данного бита никогда не возвращается единичное значение. При каждой отправке подтверждения типа STALL USB-контроллер устанавливает флаг STALLEDI, при этом, генерируется прерывание EPINTx (если оно было разрешено). Входящие пакеты будут отклонены (RXOUTI и RWAL не будут установлены). После этого, Host-сторона отправит команду для сброса функции STALL: все, что должна сделать программа в этом случае - это установить бит STALLRQC и сбросить конечную точку. 22.11.1. Особенности работы конечных точек типа CONTROL Запрос SETUP всегда подтверждается пакетом ACK. Если для конечной точки типа CONTROL задана передача пакета STALL и, при этом, появляется запрос SETUP, этот запрос подтверждается пакетом ACK, а флаги запроса (STALLRQ) и отправки (STALLEDI) автоматически сбрасываются (RXSETUPI=1, TXIN=0, STALLED=0, TXINI=0...). Такой механизм упрощает управление процессом перечисления. Если команда не поддерживается или содержит ошибку, программа устанавливает флаг запроса STALL и возвращается к основной задаче, ожидая следующего запроса SETUP. Данная функция совместима с тестом из раздела 8, в котором отправляется дополнительный статус для GET_DESCRIPTOR. Программа устанавливает запрос STALL только после приема статуса. Все дополнительные статусы будут автоматически подтверждаться пакетом STALL вплоть до следующего запроса SETUP. 22.11.2. Подтверждение типа STALL и механизм подтверждения Механизм повтора (RETRY) имеет более высокий приоритет, чем подтверждение типа STALL. Подтверждение типа STALL отправляется, если установлен бит запроса STALLRQ и если нет необходимости в повторе. 22.12. Управление конечной точкой типа CONTROLЗапрос SETUP всегда подтверждается пактом ACK. После получения нового пакета SETUP запускается прерывание RXSTPI (если прерывание было разрешено). Прерывание RXOUTI не запускается. Поля FIFOCON и RWAL не имеют отношения к конечным точкам CONTROL. В связи с этим, программа при работе с такими конечными точками не должна обращаться к этим полям. При их опросе всегда возвращаются нулевые значения. Конечные точки типа CONTROL управляются следующими битами:
22.12.1. Запись в конечную точку CONTROL На следующем рисунке демонстрируется транзакция записи конечной точки CONTROL. На этапе передачи статуса, контроллеру нет необходимости отправлять NAK при передаче первого пакета TOKEN в направлении IN:
22.12.2. Чтение конечной точки CONTROL Следующий рисунок демонстрирует транзакцию чтения конечной точки CONTROL. USB-контроллер должен управлять одновременными запросами записи из ЦПУ и Host-стороны. Подтверждение NAK всегда генерируется в привязке к первой команде этапа СТАТУС. Когда контроллер обнаруживает этап СТАТУС, стираются все данные записанные ЦПУ, а сброс TXINI не оказывает никакого влияния. Программа проверяет завершение приема или передачи. Повтор OUT всегда подтверждается ACK. Данный прием:
Алгоритм программы:
После приема OUT на этапе СТАТУС USB-контроллер ожидает запроса SETUP. Запрос SETUP имеет приоритет над любым другим запросом и должен быть подтвержден ACK. Это означает, что после приема SETUP любой другой флаг должен быть обнулен, а FIFO сброшен. ПРЕДУПРЕЖДЕНИЕ: счетчик байт сбрасывается, когда принят пакет OUT нулевой длины (ZLP). Программа должна учитывать этот нюанс. 22.13. Управление конечной точкой OUTПакеты OUT отправляются Host-ом. Все данные могут быть считаны ЦПУ, который подтверждает или нет банк после его освобождения. 22.13.1. Обзор Первой должна быть сконфигурирована конечная точка. После каждого заполнения текущего банка устанавливаются биты RXOUTI и FIFOCON. Если установлен бит RXOUTE, это приводит к запуску прерывания. Программа может подтвердить USB-прерывание путем сброса бита RXOUTI. Для освобождения текущего банка программа выполняет чтение данных и сброс бита FIFOCON. Если конечная точка OUT состоит из нескольких банков, то вместе со сбросом бита FIFOCON произойдет смена банка. Обновление бит RXOUTI и FIFOCON осуществляется аппаратными средствами в соответствии со статусом нового банка. Сброс RXOUTI всегда должен предшествовать сбросу FIFOCON. Бит RWAL всегда отражает состояние текущего банка. Данный бит устанавливается, когда программа может выполнить чтение данных из банка, и сбрасывается, когда банк пуст. 22.13.2. Подробное описание 22.13.2.1 ЦПУ считывает данные в соответствии со следующей последовательностью:
Если конечная точка использует 2 банка, то во время чтения ЦПУ одного банка Host-сторона может заполнять другой банк. Затем, когда ЦПУ сбрасывает FIFOCON, следующий банк может быть уже готов и RXOUTI устанавливается незамедлительно.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|