Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Коммуникационные микроконтроллеры и системы на их основе

Подключение USB-устройств в сеть. Все устройства USB присоединяются к USB-шине через порт специализированного устройства - USB-концентратора. Концентрато­ры анализируют состояние порта и определяют, присоединено или удалено устройство. Если обнаружено новое подключенное устройство, то концентратор уведомляет об этом хост. Далее хост посылает запрос концентратору, чтобы определить причину уведомле­ния. Концентратор отвечает, указывая номер используемого порта, к которому присоеди­нено USB-устройство. Хост через порт создает канал связи с USB-устройством, исполь­зуя заданный по умолчанию адрес (Default Address = 0), который действовал при первом соединении или после сброса, и конечную точку с номером «О». Хост посылает запрос Get_Descriptor/Device на адрес «О» контрольной точки «О».

Устройство обязательно отвечает на запрос, посылая байты идентификатора обрат­но хосту, говорящие, какое устройство подключено.

Хост определяет, является ли недавно присоединенное устройство USB концентра­тором или функцией, и посылает устройству запрос Set_Address, передавая в этом паке­те новый назначенный уникальный адрес устройства, позволяющий отличить это устрой­ство от других подключенных к шине. Если присоединенное устройство - концентратор и есть USB-устройства, подключенные к его портам, то вышеупомянутая процедура сопро­вождается для каждого из присоединенных USB-устройств. Если присоединенное уст­ройство - функция, то уведомление о подключении будет послано в программное обес­печение хоста.

Затем хост посылает еще запросы, запрашивая остальную информацию об устрой­стве. Из этих ответов хост узнает, как много каналов устройство имеет, его требования по питанию, необходимую пропускную способность канала и какой драйвер следует загрузить.

Отключение USB-устройств. Когда USB-устройство отключается от порта, концент­ратор автоматически отключает порт и сообщает на хост об удалении устройства. Если удаленное USB-устройство-функция, уведомления об удалении посылаются программ­ному обеспечению хоста. Затем хост удаляет информацию относительно данного USB-устройства из всех своих структур данных. Если же удаленное USB-устройство - концен­тратор, процесс удаления должен быть выполнен для всех USB-устройств, которые были предварительно присоединены к концентратору.

Прием пакетов. После того как USB-контроллер получит маркер OUT token, он дол­жен начать прием данных. Контроллер проверяет в таблице дескрипторов, которые свя­заны с данной конечной точкой, следующий буферный дескриптор и, если он свободен, начинает прием в буфер данных, адрес которого указан в дескрипторе. После заполне­ния текущего буфера контроллер закрывает буфер, сбрасывает бит незанятости Е := О (Empty) в слове состояния его дескриптора и, если в слове состояния дескриптора уста­новлен бит прерывания I = 1 (Interrupt), формирует запрос на прерывание.

Если длина принимаемого кадра данных превышает размер буфера, выделенного в памяти, то контроллер продолжает запись принимаемых данных в буфер, адрес кото­рого указан в следующем дескрипторе, но только если у этого дескриптора установлен бит незанятости Е = 1. Если же следующий дескриптор окажется занятым, то будет заре­гистрирована ошибка. После завершения приема всех данных из пакета в слове состоя­ния буферного дескриптора последнего занятого буфера памяти устанавливается бит L = 1 (Last) и буфер закрывается.

Если принимаемый пакет содержит поле «идентификатор пакета» (DATAO/DATA1 packet ID (PID)), то в буфер будет записано только содержимое пакета, а содержимое поля PID будет занесено в соответствующие поля PID слова состояния дескриптора.

Протокол USB-шины предусматривает принцип «запрос-ответ» при реализации обме­на по сети. Если при приеме пакета обнаружена ошибка, то пакет с подтверждениями не

538