- •Глава 27. Интерфейс usb 2.0
- •27.1. Общая характеристика и структура интерфейса usb
- •27.2. Физический интерфейс
- •27.3. Модель передачи данных
- •27.4. Типы передачи данных
- •27.5. Протокол Фазы транзакций. Признаки и идентификаторы пакетов
- •Передача данных
- •Передача данных от хост-контроллера к устройству
- •Обработка ошибочных ситуаций
- •27.6. Системное конфигурирование
- •Передача данных от пу хост-контроллеру
- •Устройства интерфейса usb - функции и концентраторы
- •Хост-контроллер
- •27.7. Интерфейс usb otg
- •27.8. Интерфейс usb Wireless
- •27.9. Контрольные вопросы
Передача данных
Последовательность действий при выполнении очередного обмена по интерфейсу следующая.
Хост-контроллер посылает по шине пакет-маркер.
Все периферийные устройства на интерфейсе принимают пакет-маркер и сравнивают адрес в пакете со своим адресом. В дальнейших действиях при выполнении обмена на шине принимает только то периферийное устройство, которое опознало свой адрес.
Адресованное маркером устройство готовится к обмену.
Передача данных от хост-контроллера к устройству
При выполнении операции (транзакции) «вывод данных в периферийное устройство» хост-контроллер через некоторое время после выдачи пакета-маркера с признаком OUT выдает на интерфейс пакет данных с признаком DATA.
После успешного приема пакета данных периферийное устройство-приемник данных посылает пакет подтверждения (Handshake Packet) с признаком ACK.
Рисунок 27.3 иллюстрирует последовательность пакетов с различными типами идентификаторов при передаче данных по интерфейсу USB от хост-контроллера к устройству.
-
Пакет 1-
пакет маркер
Пакет 2 –
пакет данных
Пакет 3 - подтверждениее
O
U
T
A
D
D
R
E
N
D
P
C
R
C
5
D
A
T
A
1
Данные
C
R
C
1
6
A
C
K
-
Пакет 4-
пакет маркер
Пакет 5 –
пакет данных
Пакет 6 - подтверждение
O
U
T
A
D
D
R
E
N
D
P
C
R
C
5
D
A
T
A
0
Данные
C
R
C
1
6
A
C
K
Рис. 27.3. Последовательность пакетов с различными типами идентификаторов
Пакет 1 - признак передачи, тип пакета - OUT. Признак отображает, что данные от хост- -контроллера будут переданы по интерфейсу в следующей фазе.
Пакет 2 содержит данные, о чем говорит идентификатор PID - DATA1.
Пакет 3 – подтверждение обмена (handshake), отправляется периферийным устройством с использованием идентификатора ACK для подтверждения хост-контроллеру, что периферийное устройство получило данные без ошибок. Вторая передача начинается с еще одного пакета с идентификатором OUT 4, далее следуют данные 5, на этот раз предваряемые идентификатором DATA0. В конце передачи периферийное устройство опять подтверждает успешную передачу, передавая пакет с идентификатором ACK.
Наличие DATA1 и DATA0 обусловлено коррекцией ошибок. Как описано выше, ACK - это сигнал хост-контроллеру, что внешнее устройство получило данные без ошибки (поля CRC в пакетах используются для определения ошибок). Но что произойдет, если пакет повредится во время передачи? Для определения этого, каждая сторона устанавливает специальный разряд (data toggle bit), переключаемый между передачами пакетов данных. Состояние этого разряда (флажка) сравнивается с PID, приходящим с данными, с каждым DATA0 или DATA1. При передаче данных хост-контроллер или периферийное устройство посылают перемежающиеся DATA0-DATA1 идентификаторы пакетов. Путем сравнения идентификатора DATA с состоянием внутреннего переключаемого флажка, хост-контроллер или периферийное устройство могут определить поврежденный пакет согласования (handshake packet).
