Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > ARM |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
35.5. Функциональное описание35.5.1 Общие сведения о стандарте полноскоростной USB-связи версии 2.0 Полноскоростная USB-связь версии 2.0 позволяет установить соединение между хостом и присоединенным USB-устройством. Каждое устройство предлагает совокупность коммуникационных потоков (конвейеров), связанных с каждой конечной точкой. Программное обеспечение хоста связывается с USB-устройством через набор коммуникационных потоков.
35.5.1.1 Тип полноскоростной USB-связи версии 2.0 Коммуникационный поток переносится с помощью одного из четырех типов передач, определяемых USB-устройством. Таблица 35.2. Коммуникационный поток USB 35.5.1.2 Транзакции шины USB
Результатом каждой передачи является одна или более транзакций на шине USB. Существует 5 разновидностей транзакций, передаваемых по шине в пакетах:
35.5.1.3 Определения событий USB-передачи Как будет показано ниже, передачи - последовательность событий, происходящие на шине USB. Таблица 35.3. События USB-передачи
Прим.:
35.5.2 Управление транзакциями периферийного модуля USB-устройства версии 2.0 35.5.2.1 Транзакция "Установка" Установка - специальный тип транзакции в направлении хост-устройство, используемый в ходе передач "Управление". Передачи "Управление" должны выполняться с помощью конечных точек, которые не используют переключающихся банков памяти. Обработка транзакции "Установка" выполняется программно, как можно быстрее. Она используется для передачи запросов от хосту к устройству. После передачи, запросы обрабатываются USB-устройством и могут потребовать большего числа аргументов. Аргументы передаются в устройство с помощью транзакции "Вывод данных", которая следует за транзакцией "Установка". Данные запросы могут также возвращать данные. Данные передаются хосту транзакцией "Ввод данных", которая следует за транзакцией "Установка". Транзакция "Статус" завершает передачу управления. После приема конечной точкой передачи "Установка":
Таким образом, программа должна следить за состоянием бита RXSETUP путем опроса регистра UDP_ CSRx или ожидать прерывание, а затем считать пакет "Установка" из буфера FIFO и сбросить бит RXSETUP. RXSETUP не возможно сбросить до тех пор, пока пакет "Установка" не будет считан из буфера FIFO. В противном случае, USB-устройство должно принять следующую передачу "Вывод данных" и перезаписать его в буфер FIFO поверх пакета "Установка".
35.5.2.2 Транзакция "Ввод данных" Транзакции "Ввод данных" используются в передачах "Управление", "Изохронная", "Поток" и "Прерывание" и выполняют передачу данных в направлении от устройства к хосту. В изохронных передачах транзакции "Ввод данных" должны выполняться с помощью конечных точек, которые поддерживают переключающиеся банки памяти. 35.5.2.3 Использование конечных точек без переключающихся банков памяти Для выполнения транзакции "Ввод данных" с использованием конечной точки без переключающихся банков памяти необходимо выполнить следующую последовательность:
TXCOMP устанавливается USB-устройством после приема сигнала подтверждения пакета ввода данных "ACK PID". Прерывание будет генерироваться до тех пор, пока будет установлен бит TXCOMP. Прим: более детальную информацию по протокольному слою "Ввод данных" см. в разделе 8 "Universal Serial Bus Specification, Rev 2.0".
35.5.2.4 Использование конечных точек с переключающимися банками памяти Использование конечной точки с переключающимися банками памяти необходимо в ходе изохронной передачи. Для гарантирования постоянства пропускной способности шины микроконтроллер должен подготовить следующие данные во время передачи текущих данных USB-устройством. Таким образом, необходимо использовать два банка памяти. Когда один из банков памяти назначен микроконтроллеру, другой используется USB-устройством.
При выполнении транзакций "Ввод данных" при использовании конечной точки с переключающимися банками памяти необходимо придерживаться следующей последовательности действий:
Предупреждение: существует одна программная критическая ситуация, вызывная тем фактом, что сразу после заполнения второго банка памяти драйвер должен ожидать TX_COMP для установки TX_PKTRDY. Если задержка между установлением TX_COMP и установлением TX_PKTRDY будет достаточно долгой, то некоторые пакеты "Ввод данных" могут оказаться без подтверждения, что снизит пропускную способность шины. 35.5.2.5 Транзакция "Вывод данных" Транзакции "Вывод данных" используются в передачах "Управление", "Изохронная", "Поток" и "Прерывание" и выполняют передачу данных в направлении хост-устройство. Транзакции "Вывод данных" в изохронных передачах должны выполняться с помощью конечных точек, поддерживающих переключение банков памяти. 35.5.2.6 Транзакция "Вывод данных" без переключающихся банков памяти Для выполнения транзакции "Вывод данных", использующей конечную точку без переключающихся банков, необходимо придерживаться следующей последовательности:
рерывание генерируется до тех пор, пока установлен бит RX_DATA_BK0. После сброса RX_DATA_BK0 нельзя выполнять обмен содержимым памяти между USB-устройством, FIFO и памятью микроконтроллера. В противном случае, USB-устройство вынуждено будет принимать очередную передачу "Вывод данных" и перезаписывать текущий пакет "Вывод данных" в FIFO. 35.5.2.7 Использование конечных точек с переключающимися банками памяти В ходе изохронной передачи использование конечной точки с переключающимися банками памяти является обязательным. Для гарантирования постоянства пропускной способности шины необходимо, чтобы во время приема USB-устройством текущих данных микроконтроллер мог считывать ранее переданные хостом данные. Для этого необходимо использование двух банков памяти. Когда один банк назначен микроконтроллеру, другой может использоваться USB-устройством.
Для выполнения транзакции "Вывод данных" при использовании конечной точки с переключающимися банками памяти необходимо придерживаться следующей процедуры:
Прим.: прерывание генерируется до тех пор, пока установлен флаг RX_DATA_BK0 или RX_DATA_BK1. Предупреждение: в случае, если окажутся установленными оба бита RX_DATA_BK0 и RX_DATA_BK1, то определить, какой из них был установлен первым, будет невозможно. Такая ситуация может возникнуть в случае, если во время выполнения микроконтроллером других задач USB-хост заполнил оба банка памяти USB-устройства. После возврата программы микроконтроллера к драйверу USB-связи оба флага будут установлены. 35.5.2.8 Транзакция "Статус"Транзакция "Статус" - специальный тип транзакции между хостом и устройством, используемый только в передаче "Управление". Передача "Управление" должна выполняться только с помощью конечных точек с переключающимися банками памяти. В соответствии с последовательностью "Управление" (чтение или запись) USB-устройство отправляет или принимает транзакцию "Статус".
Прим.:
35.5.2.9 Передача "Ввод статуса" Сразу после обработки запроса "Управление" устройство возвращает статус хосту с помощью транзакции "Ввод данных" нулевой длины.
35.5.2.10 Передача "Вывод статуса" Сразу после обработки запроса "Управление" и возврата запрашиваемых данных хост передает подтверждение путем передачи пакета нулевой длины, который представляет собой транзакцию "Вывод данных" нулевой длины.
35.5.2.11 Квитирование останова Квитирование останова может использоваться в одной из двух различных ситуаций (более детальная информация по квитированию останова см. в разделе 8 "Universal Serial Bus Specification, Rev 2.0").
Если после квитирования останова принимается транзакция "Установка", то во избежание генерации прерываний по причине установленности флага STALLSENT его необходимо сбросить.
35.5.3 Управление состояниями устройства USB-устройство поддерживает несколько состояний. См. раздел 9 "Universal Serial Bus Speci-fication, Rev 2.0".
Переход от одного состояния к другому зависит от состояния шины USB или стандартных запросов, отправленных посредством транзакций управления через конечную точку по умолчанию (конечная точка 0). По окончании периода неактивности шины USB-устройство вводит режим приостановки. Получение запросов приостановки/возобновления от USB-хоста является обязательным. В режиме приостановки предъявляется жесткое требование для приложений с питанием от шины: потребление не более 500 мкА. Находясь в режиме приостановки, хост может активизировать работу устройства путем отправки ему сигнала возобновления (активность шины). Возможно и обратное направление возобновления работы, когда USB-устройство отправляет запрос на возобновление хосту. Это, например, необходимо для возобновления работы ПК при перемещении USB-мыши. Функция активизации должна поддерживаться хостом и не является обязательной для всех устройств. 35.5.3.1 Переход из запитанного состояния в исходное состояние После подключения к USB-хосту USB-устройство ожидает сброс шины. USB-хост прекращает состояние сброса сразу после определения подтягивающего резистора на линии DP. После этого устанавливается немаскируемый флаг ENDBURSES в регистре UDP_ISR и запускается прерывание. Программа, управляющая UDP, разрешает конечную точку по умолчанию, устанавливая флаг EPEDS в регистре UDP_CSR[0] и, при необходимости, разрешает прерывание для конечной точки 0 путем записи 1 в регистр UDP_IER. После этого перечисление начнется с передачи "Управление". 35.5.3.2 Переход из состояния по умолчанию в адресное состояние После поступления стандартного запроса установки адреса устройства USB-хост вводит адресное состояние. Перед этим он достигает транзакции "Ввод статуса" передачи "Управление", т.о. UDP-устройство устанавливает новый адрес сразу после приема и сброса флага TXCOMP в регистре UDP_CSR[0]. Для перехода в адресное состояние программа USB-драйвера устанавливает флаг FADDEN в регистре UDP_GLB_STATE, устанавливает новый адрес и устанавливает бит FEN в регистре UDP_FADDR. 35.5.3.3 Переход из адресного состояния в сконфигурированное состояние Сразу после приема и подтверждения стандартного запроса установки конфигурации устройство разрешает конечные точки, соответствующие текущей конфигурации. Это выполняется путем установки полей EPEDS и EPTYPE в регистрах UDP_CSRx и, при необходимости, разрешаются соответствующие прерывания в регистре UDP_IER. 35.5.3.4 Разрешение приостановки После выявления приостановки (отсутствие активности на шине USB) устанавливается сигнал RXSUSP в регистре UDP_ISR. Это приведет к генерации прерывания при условии, что установлен соответствующий бит в регистре UDP_IMR. Данный флаг сбрасывается путем записи в регистр UDP_ICR. После этого устройство вводит режим приостановки. В этом режиме микроконтроллер может, например, переключиться на низкочастотную синхронизацию, отключить ФАПЧ и основной генератор, а затем перейти в режим "Idle". Он также может выключить другие устройства на плате. Синхронизация USB-устройства также может быть отключена, а вот трансивер и периферийный модуль USB отключать нельзя, т.к. в противном случае невозможно будет выявить возобновление. 35.5.3.5 Прием возобновления от хоста В режиме приостановки, USB-трансивер и модуль USB должны быть запитаны для детекции возобновления (RESUME). Однако модуль USB-устройства не может синхронизироваться, т.к. сигнал WAKEUP является асинхронным. Сразу после выявления на шине возобновления устанавливается сигнал WAKEUP в UDP_ISR. Он может генерировать прерывание, если установлен соответствующий бит в регистре UDP_IMR. Данное прерывание может использоваться для возобновления работы ядра, разрешения работы ФАПЧ и основного генератора, а также для конфигурации синхронизации. Бит WAKEUP должен быть сброшен при первой возможности путем установки WAKEUP в регистре UDP_ICR. 35.5.3.6 Отправка внешнего возобновления Внешнее возобновление используется совместно с хостом и разрешается путем установки бита ESR в регистре UDP_ GLB_STATE. Асинхронное событие на входе ext_resume_pin периферийного устройства генерирует прерывание WAKEUP. В более ранних реализациях модуля UDP в этом случае незамедлительно генерируется К-состояние на линии USB. Это означает, что USB-устройство должно быть способным очень быстро ответить хосту. В последних версиях, сразу после готовности связи с хостом необходимо программно установить бит RMWUPE в регистре UDP_GLB_STATE, а затем уже генерируется К-состояние. Бит WAKEUP должен быть сброшен при первой возможности путем установки WAKEUP в регистре UDP_ICR.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|