Главная » Ассемблер, Железо » Структура пакетов USB

0

Вся информация передается по шине USB в виде пакетов. Каждый пакет начинается с поля синхронизации (SYNC), за которым следует идентификатор пакета (PID). Идентификатор пакета состоит из четырехразрядного кода типа пакета и четырехразрядного контрольного поля, каждый разряд которого является инверсией соответствующего разряда кода типа пакета (код пакета и контрольное поле комплементарны). Принятые по стандарту USB 1.1 коды PID перечислены в табл. 8.1. Как видно из таблицы, имеется четыре группы идентификаторов, причем принадлежность к определенной группе задается в двух младших разрядах PID:

•           ООЬ — специальный пакет (Special),

•           01b — маркер (Token),

•           10b — подтверждение (Handshake),

•           lib — пакет данных (Data).

Таблица 8.1. Список кодов РЮ

Тип PID

Обозначение

Код типа

Описание пакета

Маркер

OUT

0001b

Адрес и номер конечной точки при передаче от хоста к функции

 

IN

1001b

Адрес и номер конечной точки при передаче от функции к хосту

 

SOF

0101b

Маркер начала кадра и номер кадра

 

SETUP

1101b

Адрес и номер конечной точки при передаче команды от хоста к функции

Данные

DATAO

0011b

Четный пакет данных

 

DATA1

1011b

Нечетный пакет данных

Подтверждение

АСК

0010b

Подтверждение приема пакета

 

NAK

1010b

Ответ на запрос не готов

 

STALL

1110b

Произошел сбой в конечной точке или запрос не поддерживается

Специальный

PRE

1100b

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

Структура пакета зависит от группы, к которой он относится.

•       Маркер начала кадра содержит 8-разрядное поле PID, 11-разрядный номер кадра и 5-разрядный циклический контрольный код. Маркер начала кадра, как следует из его названия, отмечает начало каждого нового кадра на шине USB.

•       Маркер транзакции содержит 8-разрядное поле PID, 7-разрядное поле адреса функции, 4-разрядное поле адреса конечной точки и 5-разрядный циклический контрольный код. Маркер транзакции отмечает начало очередной транзакции на шине USB.

•       Пакет данных начинается с 8-разрядного поля PID, за которым следует от 0 до 1023 байт данных и 16-разрядный циклический контрольный код.

•       Подтверждение содержит только 8-разрядное поле PID. Подтверждение завершает каждую транзакцию.

Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.

По теме:

  • Комментарии