В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Интерфейсы > USB > Популярно о USB

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве

текст еще



Канал управления

Ранее упоминались запросы (requests) , которые выполняют роль команд для USB устройств. Сейчас рассмотрим механизм управляющих передач на канале управления, с помощью которого передаются эти запросы.

Вспомним транзакции на шине USB, все транзакции состоят из трех фаз: фаза маркера, фаза данных и фаза квитирования. На каждой из фаз в ту или иную сторону отправляется соответственный пакет. Управляющие передачи на канале управления – это как бы транзакции внутри транзакций. Каждая передача управления состоит из двух или трех фаз, а каждая фаза представляет транзакцию, которая сама состоит из трех фаз.

Вспомним, что управляющий запрос к USB устройству может содержать параметры, стандартный запрос SET_ADDRESS, в качестве параметра переда.т USB устройству его адрес. Стандартный запрос GET_DESCRIPTOR, должен получить дескриптор от USB устройства, а стандартный запрос SET_DESCRIPTOR, должен передать дескриптор USB устройства. Стадии управляющей передачи:

  • стадия установки (Setup Stage) , предназначается для передачи кода запроса от хоста к функции;
  • стадия данных (Data Stage) , служит для передачи дополнительной управляющей информации от хоста (Write Control) или к хосту (Read Control). Если передача параметров не предусмотрена в запросе, то эта стадия может отсутствовать. В стандартном запросе SET_FEATURE, нет параметров запроса, поэтому стадия данных отсутствует. В запросе GET_DESCRIPTOR, присутствует стадия данных, дескриптор переда.тся от USB устройства к хосту, в стадии данных;
  • стадия передачи состояния (Status Stage) , служит для уведомления хоста об успешности или не успешности выполнения предыдущих фаз. Это аналог фазы квитирования в транзакции.


Рисунок 10

На рисунке 10, показана управляющая передача из 2-х стадий, из стадии установки и стадии передачи состояния. Такие управляющие передачи применяются для простейших запросов. Первым передается маркерный пакет SETUP, затем пакет данных типа DATA0, всегда размером в 8 байт, иногда этот пакет называют конфигурационным. Хост должен ответить пакетом ACK. Если пакет поврежд.н, то USB устройство делает тайм-аут, сигнализируя о необходимости повторной передачи пакета. Конфигурационный пакет несет содержательную информацию.

После обязательной стадии установки, стадия передачи состояния. В этой стадии хост намеревается получить ответ о результате обработки запроса, принятого на предыдущей стадии установки. Первым хост посылает маркерный пакет IN. Если запрос еще не обработан, в ответ посылается пакет NAK. Если запрос обработан, но запрос не корректен, возвращается STALL. Конечная точка управления не может быть заблокированной. Под ошибкой понимается логичность запроса для текущего состояния USB устройства, а не поврежденность пакета IN. Если запрос правильно обработан, возвращается пакет данных типа DATA1 нулевой длины (Zero Length Packet, ZLP), на что хост отвечает пакетом ACK. На этом управляющий запрос из 2-х стадий завершается.

Конфигурационный пакет имеет строго регламентированную структуру. В таблице приведены поля, на которые разделены 8 байт конфигурационного пакета.

Смещение Поле Размер Описание
0 bmRequestType BYTE тип запроса
1 bRequest BYTE код запроса
2 wValue WORD параметр запроса
4 wIndex WORD индекс или смещение
6 wLength WORD число байт для передачи

Биты поля bmRequestType:

  • бит 7 - если сброшен, то данные запроса будут передаваться в USB устройство, если установлен, то в обратном направлении. Когда управляющая передача не имеет стадии данных, то этот бит равен 0;
  • биты 6..5 – задают тип запроса, 0 – стандартный, 1 – для класса, 2 – специальный, 3 – зарезервировано;
  • биты 4..0 – получатель, 0 – устройство, 1 – интерфейс, 2 – точка, 3 – другой;
  • биты 4..31 – зарезервированы.

Поле bRequest, задает код запроса. Интерпретация значения этого поля зависит от типа запроса заданного в поле bmRequestType. Если запрос стандартный, то здесь задается номер одного из 11 стандартных запросов. Если запрос специальный изготовителя, то значение задает и интерпретирует изготовитель. Запросы классов мы не рассматриваем.

Поле wValue, задает параметр, который может быть передан USB устройству вместе с запросом. Например, для стандартного запроса установки адреса (SET_ADDRESS 05h), здесь передается адрес USB устройству, число от 0-127. Адрес, назначаемый USB устройству в процессе энумерации. Если разработчик использует не стандартный запрос, то в этом поле можно задать свою информацию.

Поле wIndex, значение зависит от типа запроса.

Поле wLength, задает количество байт данных передаваемых в стадии данных, если такая предусмотрена запросом.

На рисунке 11 представлена управляющая передача чтения, имеющая стадию данных. Такие передачи используются и для при.ма дескрипторов от USB устройства. Транзакций стадии данных может быть несколько, если требуется передать значительный объем информации. После стадии установки (Setup Stage) , хост начинает стадию передачи данных (Data Stage). Маркерный пакет IN от хоста, затем пакет полезных данных типа DATA1 от USB устройства и пакет квитирования от USB устройства. После стадии данных, наступает черед стадии передачи состояния.

Хост посылает маркерный пакет OUT. Если USB устройство одобряет действия хоста, то возвращает пакет данных типа DATA1 нулевой длины (ZLP). Если USB устройство занято и не может сию минуту обработать запрос, возвращает NAK. Если запрос противоречит текущему состоянию устройства, возвращает STALL. При принятии поврежд.нного пакета, стандартная реакция, показано как ERROR .

На рисунке 12 представлена управляющая передача записи, имеющая стадию данных. Передача используется для посылки значительного количества данных в запросе к USB устройству. Из рисунка очевидна логика работы.



Рисунок 11


Рисунок 12
<-- Предыдущая страница Оглавление Следующая страница -->
.




 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники