В Интернете обычно USB обозначается как неизвестная последовательная шина. Разобраться в деталях с USB, протеканием процессов при протоколе USB-передачи, дескрипторами, кодированием и декодированием данных, синхронизацией, скоростями передачи данных, необходимыми (а также и необязательными) драйверами на уровне операционной системы, со спецификациями ОНО, UHCI, EHCI или идентификатором производителя — не очевидно для электронщика-любителя.
В противоположность приложениям для последовательного или параллельного интерфейса, USB-приложения не могут просто писать данные на различные адреса ввода и вывода или читать с них. Для того чтобы приняться за USB-устройство, приложения должны сообщаться с драйвером (класса или устройства), который, в свою очередь, на более низком уровне сообщается с USB-драйверами управления сообщениями по линиям передачи данных USB. В устройстве должны быть реализованы протоколы, с помощью которых компьютер может распознать и идентифицировать устройство, а также сообщаться с ним.
К счастью, многие производители USB-контроллеров уже сталкивались с этой проблемой. Поэтому в этой книге FTDI-контроллер можно увидеть далее с разводкой контактов последовательных сигнальных линий, как на рис. 2.3, или параллельным выводом данных (Bit Bang Mode), как на рис. 2.4.
Чтобы программировать управление USB, необходимо вставить штекер, установить FTDI-драйвер и запустить программы, например, в Visual Basic или Pascal (для профессионалов подойдет и С).
Интересно, что сами сигналы последовательного интерфейса FTDI-контрол-лера можно использовать также и для 8-битовой параллельной передачи данных. Для этого должны быть смоделированы другие последовательные интерфейсы, такие как SPI или I2C.
Используемый в иллюстрациях USB-контроллер FTDI микросхемы FT232R рассчитан на USB 2.0.
Передача данных по USB происходит в пределах кадров размером в 1мс. Это легко представить как периодическое временное окно. Миллисекундный временной такт генерируется USB-хост-контроллером.
Внутри временного окна сообщения передаются пакетами данных.
Передача данных внутри миллисекундных кадров различна. При Low Speed скорость передачи данных составляет 1,5 Мбит/с, при Full Speed— до 12 Мбит/с, при High Speed (только USB 2.0)— до 480 Мбит/с. При High Speed для достижения высокой скорости передачи данных USB каждый кадр подразделяется на 8 кадров размером 125 мкс.
Типы передачи USB
USB-устройства могут по-разному сообщаться с USB-хост-контроллером. Для пересылки сообщений имеется четыре типа передачи.
Управляющая передача (Control-Transfer)
Управляющие передачи отсылаются обычно в оба направления, так что и отправитель и получатель всегда могут быть уверены, что данные прибыли. Каждое USB-устройство должно поддерживать тип передачи Control-Transfer.
Управляющие передачи очень важны для обмена первыми сообщениями. Они служат для конфигурации USB-устройства и, помимо прочего, для того, чтобы осведомиться (проинформироваться) о совместимости USB-устройства.
Передача с прерыванием (Interrupt-Transfer)
Передачи типа Interrupt-Transfer работают с проверкой ошибок и задуманы для маленьких наборов данных. Не гарантируется точно установленная скорость передачи данных. Происходит периодический опрос (считывание данных) подключенного USB-устройства. Такт опроса при Low Speed лежит в границах между 10 и 255 мс, при Full Speed— между 1 и 255 мс, а при High Speed — при 125 мкс.
При Low Speed за один опрос (считывание данных) передается до 8 байтов, при Full Speed— до 64 байтов, а при High Speed— до 1024 байтов. Отсюда следует максимальная скорость передачи данных при Low Speed — 800 байт/с, при Full Speed — 64 Кбайт/с и при High Speed — до 24 Мбайт/с. Несмотря на схожесть в названии, Interrupt-Transfer (передача с прерыванием) не имеет ничего общего с Prozessor-Interrupts (Прерывания процессора).
Массовая передача (Bulk-Transfer)
Передачи типа Bulk-Transfer задуманы для больших по размеру наборов данных, которые нуждаются в проверке ошибок, но не являются злободневными. Эти передачи обладают меньшим приоритетом. Они проводятся контроллером, когда другие изохронные передачи и передачи с прерываниями отключены. Используемый FTDI-чип микросхемы FT232R поддерживает этот тип передачи.
Изохронная передача (Isochron Transfer)
Изохронные передачи являются важными для USB-устройств, которые обрабатывают большие наборы данных (файлы). Они имеют гарантированную скорость передачи данных. При Isochron Transfer не происходит корректирование ошибок. Изохронная передача не имеется в распоряжении при Low Speed.
USB-драйвер
Вообще, драйвер — это связующее звено между аппаратным и программным обеспечением. Для того чтобы добраться до USB-устройства, программа должна сообщаться с драйвером, который в свою очередь на более низком уровне сообщается с USB-драйверами, которые управляют сообщениями по линиям передачи данных USB. Принципиально было бы также возможно обратиться к более низкому уровню непосредственно при помощи собственной программы, но в этом случае пришлось бы более детально разбираться со свойствами USB-устройства, специфичными для того или иного изготовителя. У новых операционных систем Windows драйверы на сегодняшний день имеют лишь необходимые права доступа, для того чтобы можно было обратиться к аппаратному обеспечению компьютера.
Компания FTDI выпускает для двух, используемых USB-контроллеров микросхемы FT232R для Windows два различных драйвера. Первый драйвер — это так называемый VCP-драйвер (Virtueller Com Port — виртуальный Corn-порт). Этот драйвер заботится о том, чтобы операционная система интегрировала последовательный СОМ-порт, когда FTDI-USB-контроллер связывается с компьютером через USB. Благодаря этому обычно эмулируется последовательный интерфейс, прикидываясь перед операционной системой другим СОМ-портом. Так удается как можно быстрее дооборудовать более новые компьютеры виртуальным последовательным интерфейсом и добиться высокой совместимости с существующими прикладными программами.
Второй драйвер— D2XX. Здесь речь идет о драйвере FTDI2XX.SYS для WIN32 Driver Model (WDM — тип драйвера Win32). Собственное прикладное программное обеспечение сообщается по этому USB-драйверу Windows со стеком (стековой памятью), который, в свою очередь, пытается добраться до USB-устройства.
Для двух драйверов FTDI в Интернете на сайте www.ftdichip.com имеется соответствующая программная документация.
Сначала при установке драйвера все еще нужно было выбирать один из двух драйверов. Если кто-то хотел использовать второй драйвер, то первый драйвер обязательно нужно было деинсталлировать. С выходом версии драйвера 2.0 с 2007 г. деинсталляция больше не требуется: драйвер для двух вариантов (D2XX и VCP) избавляет от надоедливых установок и удалений, так что можно продолжать экспериментировать.
Компания FTDI поддерживает не только драйверы для всех распространенных вариантов Windows, но также и для операционных систем Linux, Mac OS и др.
Идентификация оферента USB
Чтобы USB-устройство могло быть выставлено на рынок, ему нужен так называемый VID (Vendor-ID, ID продавца) и PID, код продукта. ID вендора FTDI-контроллера FTDI предоставляется бесплатно. Если FTDI-контроллер используется для других целей, то от FTDI может быть получен другой номер кода продукта PID (рис. 2.5).
Номера VID и PID сохраняются внутри FTDI-контроллера в EEPROM (электронно стираемом программируемом ПЗУ). Они даже могут быть изменены, но в этом случае должны быть согласованы и программы установки драйвера. После внесения изменений обычно требуется новая установка.
В книге были использованы ID вендора FTDI-VID и код продукта FTDI-PID, в то время как сам новый драйвер в любое время может быть получен с сайта www.ftdichip.com.
Литература:
USB в электронике: Пер. с нем. — СПб.: БХВ-Петербург, 2009. — 224 с: ил. + CD-ROM — (Электроника)
0 коммент.:
Отправить комментарий