о нас
Проекты
USBN960x Demo Board
Atmel AVR Prog
Cypress FX2 Demo Board
Cкачать
Примеры


С чего начать освоение USB

Если Вы разабатываете устройство, одной из особенностей которого является передача данных в компьютер, если у вас нет свободных последовательных (COM) или паралельных (LPT) портов, если Вы хотите использовать компьютерные +5 B, если Вы хотите подсоединять (отсоединять) устройство к компьютеру без отключения компьютера, то освоение USB интерфейса - Ваша главная задача.

Первое что Вам необходимо - это Спецификация (полное описание включающее в себя: - описание типов пердачи данных; - описание протокола передачи данных; - описание стандартных запросов от Хоста к устройству. )

USB Specification Rev 1.1

Т.к. Вы только начинаете осваивать USB интерфейс, то Ваше устройство будет выглядеть как устройство HID класса. Примерами HID (Human interface device) устройства могут быть: клавиатура, мышь, джойстик, сканер штрих кодов, считыватель магнитных карт, LED или LCD индикаторы, телефонные номеронабиратели, медицинские приборы и т.д. Чем же так хорош HID stack?

Во-первых Windows 98, 2000, XP имеют встроеный HID-class driver, поэтому разработчику уже не нужно писать драйвер, что сберегает и время и силы.

Во-вторых с точки зрения firmware, то для того чтобы Windows заметил ваше устройство как HID, то необходимо написать несколько структур данных, которые описывают HID интерфейс.

Кроме положительной стороны HID устройства есть и отрицательная - это ограничение по скорости передачи данных. Оно составляет 64 kBit/c, что значительно меньше полноскоростной шины 12 MBit/c.

Если вы разрабатываете full-speed HID устройство то скорость передачи данных 64000 байт в секунду (64 байта в один кадр 1 mс). Для low-speed устройств эта скорость составляет 800 байт в секунду (8 байт в каждые 10 mc).
Документация необходимая для того чтобы разобраться как написать HID устройство:

Вся информация о HID устройствах находится на сайте www.usb.org а именно:

Теперь у Вас есть полный набор документации для создания HID устройства.

На данный момент существует множество USB контроллеров. Они подразделяются на три типа:

USB контроллер с внешним последовательным интерфейсом SPI или паралельным (мультиплексная или раздельная шина адреса и данных). Например: PDIUSB12, PDIUSB11, USBN9603/4, SL11, NET2890;
USB контроллер совмещенный с микроконтроллером (чаще всего MCS51). Довольно привлекательное решение, тем более, что микроконтроллер имеет на борту аппаратную переферию (UART, SPI, I2S и т.д.). Например AN2131, TUSB3200, C540
Готовая USB функция - контроллер сканера, Ethernet, клавиатуры, RS232 или LPT. Например FT8U232, FT8U245, NET1031, USB97C196
С моей точки зрения самым лучшим решением будет разработка своего устройства на базе второго варианта (USB контроллер совмещенный с микроконтроллером). Например на Cyprees контроллере AN2131. Вся проблема заключается в сложности приобретения Demo-Kit и покупке микросхем.

Не самым простым решением является первый путь (USB контроллер с внешним интерфейсом), но как это не парадоксально выбор пал именно на этот вариант. А именно связку AVR 90S8515 + USBN9604. Потому что и то и другое можно спокойно купить у нас в Украине.

Документация на National Semiconductors USBN9603/4:
USBN9603/4 Datasheet

У NS есть Demo-Kit на эту микросхему: COP8 + USBN9603 + LCD + RF Transmiter. Архив с описанием и програмой на "С" Вы можете посмотреть на сайте NS.

National Semiconductors USBN9603/04 Demo

National Semiconductors USBN9602 Demo Kit.

Чем же так привлекательна USBN9604:

  • 3 разных интерфейса (8 bit parallel multiplexed, 8 bit parallel non-multiplexed, Microwire interface).
  • Поддержка DMA
  • Цена и доступность приобретения


К недостаткам можно отнести малый размер буфера - всего 64 байта на конечную точку (хотя можно использовать пинг-понг буфера для конечной точки), и высокая частота кварца - 24 MHz для работы USB SIE (во многих USB контроллерах используется кварц на 6 MHz),, а также довольно низкая скорость чтения/записи - 250нс.

Другие решения

Если по каким-либо соображениям (не устраивает скорость передачи данных, не нравится класс устройств ручного ввода) Вам не подходит HID устройство и у Вас нет времени на разработку своего собственного драйвера, то одним из решений может быть использование драйвера встроенного в ОС. В ОС Windows присутствуют драйвера для следующих классов устройств:

  • Audio Device Class(Устройство ввода аудио с поддержкой даже 24-бит)
  • Communication Device Class (CDC ACM - представляет собой драйвер Виртуального COM порта)
  • Imaging Class (Устройства ввода изображения: Цифровой фотоаппарат или Сканер)
  • Printer Class (В нем присутствует поддержка Bidirectional Data Transfer - IEE1284 с поддержкой запроса Device ID и c последующей энумерацией и инсталяцией нового устройства как в LPT_Enum)
  • Mass Storage (Если Вы хотите видеть устройство в системе как накопитель информации)

Все спецификации на перечисленные выше устройства Вы можете найти на странице описывающей возможные классы USB устройств Approved Class Specification Documents

 

 

Rambler's Top100