Спецификация USB.Rev1.0

       

Пакеты Квитирования


Пакеты квитирования, как показано на Рисунок 8-8, состоят только из PID. Пакеты квитирования используются, для сообщения состояния транзакции данных, и могут возвращать значения, означающие успешный прием данных, управление потоком данных, и условие останова. Возвращать квитирование может только такой тип транзакций, который поддерживает управление потоком данных. Квитирования всегда возвращаются в фазе транзакции квитирования и могут быть возвращены, вместо данных, в фазе данных. Пакеты квитирования заканчиваются EOP после однобайтного поля пакета.( Handshake packets are delimited by an EOP after one byte of packet field.) Если пакет декодируется как допустимое квитирование, но не завершается после одного байта EOP, он должен рассматриваться как недопустимый и игнорироваться приемником.

Рисунок 8-8.  Пакет Квитирования

Имеются три типа пакетов квитирования:

  • ACK указывает на то, что пакет данных был получен без ошибок вставки бит или CRC в поле данных и что данные PID были получены правильно. ACK может выдаваться или когда подходит последовательность бит и приемник может принимать данные или когда не подходит последовательность бит и передатчик и приемник должны повторно  синхронизироваться друг с другом (обратитесь к Разделу 8.6 для более детального ознакомления). Квитирование ACK применимо только в транзакциях, в которых данные были отправлены и где ожидается квитирование. ACK может быть возвращено хостом для входной(IN) транзакции и функцией для выходной(OUT) транзакции.
  • NAK указывает на то, что функция не смогла принять данные от хоста (OUT) или что у функции нет данных, чтобы передать на хост (IN). NAK может возвращаться функциями только в фазе данных входной(IN) транзакции или в фазы квитирования выходной(OUT) транзакции.  Хост никогда не может выдавать NAK. NAK используется в целях управления потоком данных для указания того, что функция временно неспособна передавать или получать данные, но в конечном счете сможет сделать это без вмешательства хоста. NAK также используется конечными точками прерывания, чтобы указать, что нет отложенных прерываний.
  • STALL возвращается функцией в ответ на маркер IN или после фазы данных OUT (см. Рисунок 8-9 и Рисунок 8-13). STALL указывает, что функция неспособна передавать или получить данные, и что требуется вмешательство хоста для удаления останова. Как только конечная точка функции остановлена, функция должна продолжить возвращать STALL, пока условие, вызывающее останов не будет удалено с помощью вмешательства хоста. Хосту не разрешается возвращать STALL не при каком условии.


  • Содержание раздела