Сплошные передачи

в начало

Сплошные передачи (Bulk Data Transfer) характеризуются безошибочной передачей данных между хостом и устройством, достигаемую за счёт обнаружения ошибок и повторных передач. Сплошные транзакции имеют три фазы: маркерную, фазу данных и фазу подтверждения (рисунок 3.26)pic>frame@img/49.hlp. В некоторых ситуациях фаза данных может быть заменена фазой подтверждения, что приведет к двухфазной структуре транзакции без передачи данных.

Рис.3.26.

Когда хост-контроллер готов к приёму информации, он посылает маркерный пакет IN. В ответ конечная точка функции передаёт либо пакет данных, либо (если передача данных невозможна) пакет подтверждения NAK или STALL. Пакет NAK указывает на то, что функция временно не способна передавать данные, STALL информитует хост о том, что работа конечной точки приостановлена и требуется вмешательство системного ПО USB. Если хост получил данные без ошибки, то он отправляет пакет подтверждения ACK. Если же хост обнаружил ошибку в принятых данных, то он не отправляет функции никакого подтверждения.

В момент готовности хост-контроллера передавать информацию, им посылается маркер OUT , за которым следует пакет данных. Если функция приняла данные без ошибки, то она генерирует один из следующих пакетов подтверждений:

§ ACK сообщает о том, что пакет данных принят без ошибок и хост может отправлять следующий пакет.

§ NAK информирует хост о том, что данные получены без ошибки, хост-контроллеру необходимо повторить передачу данных, т.к. функция была не в состоянии принять данные (например, переполнение буфера).

§ Если конечная точка находится в состоянии останова, то пакет STALL указывает на то, что нет необходимости повторной передачи данных хостом, поскольку функция находится в состоянии ошибки.

Если же данные приняты с ошибкой, то никакого подтверждения не посылается.