Драйвер USB устройства URC220 для OS QNX (953917), страница 3
Текст из файла (страница 3)
Устройство шины USB5.1 Общие сведенияUSB (Universal Serial Bus) – это спецификация, разрабатывавшаяся компаниямиCompaq, Intel, Microsoft и NEC, а затем и Hewlett-Packard, Lucent и Philips. Стандартбыл разработан для упрощения подключения устройств к компьютеру, дляреализации технологии PnP (Plug & Play), а также не требует использованиепрерываний или DMA (Direct Memory Access), что позволяет упростить разработкудрайверов для новых устройств, подключаемых к компьютеру через USB.5.2 Версии спецификаций и скорость передачи данныхНаиболее распространённым стандартом был USB 1.1.
Впоследствии его заменилUSB 2.0 с сохранением совместимости с устройствами, поддерживающимистандарт версии 1.1.В таблице 5.1 приведены значения максимальной скорости передачи данных дляUSB 1.1 и USB 2.0.Таблица 5.1USB 1.0 и 1.1НазваниеLow SpeedFull SpeedСкорость1.5 МБит/с12 МБит/сUSB 2.0НазваниеLow SpeedFull SpeedHigh SpeedСкорость1.5 МБит/с12 МБит/с480 МБит/сТаким образом, “USB 2.0” не означает High Speed, т.е. мышь, подключаемая ккомпьютеру через USB, может поддерживать стандарт версии 2.0, но работать наскорости 1.5 Мбит/с.
Процессор в устройстве URC220 – AT91SAM7S64 поддерживает USB 2.0 Full Speed.5.3 АрхитектураUSB основан на топологии типа “звезда”, гдеприсутствует только один ведущий концентратор(Root Hub) и может быть до 127 подключаемыхустройств (см. рис. 5.1). При этом в качествеустройствмогутвыступатьидругиеконцентраторы, то есть нельзя подключать более127 устройств, включая концентраторы.Рис.5.1 Топология шины USBЧисло 127 возникает из-за того, что каждомуустройству присваивается его адрес (номер), накоторый в USB отводится 7 бит (всего различныхадресов 27=128, нулевой адрес присваиваетсявновь подключаемым устройствам, которые ещёне были инициализированы).
Такого количества16адресов вполне хватает, так как, во-первых, в реальности к компьютеру столькоустройств не подключается, а во-вторых, пропускной способности шиныперестанет хватать задолго до подключения всех 127-ми устройств.Устройство может быть подключено к концентратору, который также подключён кконцентратору и так далее, но максимальное число подключённых друг к другуконцентраторов не должно быть больше шести. Длина провода междуконцентратором и устройством не должна превышать пяти метров.
Таким образом,USB представляет собой шину для устройств, находящихся в непосредственнойблизостиоткомпьютера.Длябольших дистанций используютсядругиестандарты,такиекакEthernet.Любаяпередачаданныхинициируется хостом. Это означает,например, что нельзя реализоватьобмен данными напрямую междудвумя устройствами. Устройство неможет начать передачу данныхсамостоятельно, а должно ожидатьзапроса от хоста.Рис.5.2 Топология шины USB: физическая(сверху) и логическая (снизу)В любой момент времени передаватьданные может только хост илитолько одно устройство. Данные от хоста получают сразу все устройства, ноактуальными они являются только для одного адресуемого устройства.Физическая и логическая топологии шины показаны на рисунке 5.2.
Символом “@”здесь показаны адреса устройств.5.4 Физическая средаВ качестве среды передачи данныхиспользуютсяспециальныечетырёхжильные провода (см. рис. 5.3).Сигналы D+ и D- образуют витую парувнутри кабеля и используются дляРис.5.3 Вид USB кабеляпередачи данных, а также дляиндикациисостоянийустройства.Электрические уровни на них берутся относительно земли – GND. Четвёртыйпровод – Vbus – используется для питания подключаемого устройства (5 вольт).Чтобы избежать неправильного соединения (например, два хоста друг с другом)используются разные разъёмы для хоста и устройства. Разъёмы типа Aустанавливаются на концентраторы, а B – на устройства (см.
рис. 5.4). Кабель собоих концов имеет соответствующие ответные части.Ниже приведена таблица соответствия между номерами выводов и сигналами:17Таблица 5.2Вывод1234СигналVbusDD+GNDИспользуемый цвет проводакрасныйбелыйзелёныйчёрныйТак как многие устройства имеют небольшой размер, тона них используется альтернативный разъём – mini-B,которыйотличаетсяотобычногоBразъёмаконструкцией и меньшими размерами.Рис.5.4 Разъёмы дляподключения кабеляТаким образом, кабель может быть:1.
High/Full Speed кабелем с разъёмами A и B на концах;2. High/Full Speed кабелем с разъёмом A для подключения к концентратору,второй конец кабеля либо впаян непосредственно в устройстве (мышь),либо имеет специфический разъём (большинство сотовых телефонов сUSB);3. Low Speed версия пункта 2 (более тонкий, без экранирования).Перед тем, как вновь подключенное устройство будет сконфигурированодрайвером компьютера, ему, как говорилось выше, присваивается нулевой адрес,а максимальный потребляемый ток не должен превышать 100 мА.
Посленастройки, устройство может потреблять до 500 мА. Если устройству требуетсябольший ток (например, внешний жёсткий диск с интерфейсом USB или USBконцентратор), то такое устройство (self-powered) должно иметь свой источникпитания (например, отдельный блок питания).В процессе работы, в зависимости от потребляемого устройством тока, а также изза подключения других устройств, напряжение в шине Vbus может снижаться до4.35 вольт.5.5 Передача данныхПередача данных осуществляется через сигналы D+ и D-.
С их помощью можнореализовать различные состояния линии.5.5.1 Состояние шины USB- Устройство отключено (Detached)Когда устройство не подключено, оба сигнала D+ и D- устанавливаются на 0 pulldown резисторами (один из выводов резистора замкнут на землю) на 15 кОм,установленными на плате хоста.- Устройство подключено (Attached)Когда устройство подключается к компьютеру, оно замыкает D+ или D- на шинуVbus через pull-up резистор на 1.5 кОм. В этот момент хост определяет, чтоустройство подключено. Когда устройство устанавливает таким образом18логическую 1 на линии D+, оно указывает на то, что работает в режиме Full (High)Speed. Если 1 устанавливается на D-, значит в режиме Low Speed.- Простой (Idle)Это состояние, когда на линии (D+ или D-), замкнутой резистором на Vbus,установлена 1, а на другой – 0.
Это состояние установлено на линии передачиперед и после передачи пакета данных. Это состояние аналогично состояниюAttached.- J и K состоянияНужны для передачи данных. Введены для удобства, так как уровни при Full (High)Speed и Low Speed режимах инвертированы друг относительно друга. В Jсостоянии D+ при Full (High) Speed или D- при Low Speed установлен на 1, авторой сигнал – на 0. Состояние K – обратное к состоянию J.- Single Ended Zero (SE0)Устанавливается, когда оба сигнала D+ и D- установлены на 0.- Single Ended One (SE1)Устанавливается, когда оба сигнала D+ и D- установлены на 1.
Это запрещённоесостояние линии. В нормально функционирующей линии оно не появляется.- Сброс (Reset)Используется для сброса контролера USB в устройстве. Сброс происходит, еслиустановить состояние SE0 (Single Ended Zero) как минимум на 10 мс, а затемустройству даётся 2.5 мс для распознавание сброса.- Конец пакета (End of Packet – EOP)Для указания конца пакета устанавливается состояние SE0 на время передачидвух бит, а затем J на время передачи одного бита.Также, если передача данных не идёт в течение 3 мс, то устройство должноперейти в режим сна, т.е потреблять по шине VBus неболее 500 мкА.
Чтобы пробудить устройство, хостинвертирует сигналы на D+ и D- минимум на 20 мс.Таким образом, передача данных идёт пакетами спомощью чередования J и K состояний (соответствуютРис.5.5 Пример NRZI 1 и 0 в бинарном коде) и выставления состояния Idleкодирования данныхмежду пакетами. При этом используется NRZI (NonReturn to Zero Inverted) кодирование данных (см. рис.
5.5). Здесь для передачилогической 1 происходит инверсия сигнала, отсутствие инверсии означаетлогический 0. Разработчику программного обеспечения нет необходимостиотслеживать состояния линии, так как этой функцией занимается SIE (SerialInterface Engine) на аппаратном уровне.5.5.2 ТранзакцииEndpoint (конечная точка). Каждое USB устройство имеет несколько конечныхточек, которые являются источниками данных. Всего может быть до 16 IN и OUT19конечных точек.
“OUT” всегда означает “от хоста к устройству”, а “IN” – “отустройства к хосту”.Pipe (поток, связь). Это логическое соединение между хостом и данной конечнойточкой.Начало пакета определяется определённым чередованием бит (маской) – SYNC,далее идут байты данных, а затем EOP (см. рис. 5.6).IdleSYNCРис.5.6 Передача пакетаДанныеEOPIdleПервый байт данных – это всегда поле PID (1 байт), которое определяет типпакета и его назначение. В зависимости от значения PID, последующие байты вполе “данные” могут иметь разное значение (данные могут иметь разную длину иделиться на другие поля, может использоваться контроль целостности данныхCRC5 или CRC16 в зависимости от размера данных и т.д.)Транзакция – это один успешныйобмен данными между устройством ихостом.