|
С чего начать освоение 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
|