Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Интерфейс USB в современных нестандандартных периферийных устройствах - Слизовский Е.В

..pdf
Скачиваний:
136
Добавлен:
24.05.2014
Размер:
1.07 Mб
Скачать

Интерфейс USB в современных нестандартных периферийных устройствах

Автор:

Слизовский Евгений Владимирович ГОУ Гимназия №1515, 11 класс

Научный руководитель:

Смирнов Константин Константинович ГОУ Гимназия №1515, преподаватель Информатики и ИТ,

Москва -2005

Содержание

Часть 1. Что такое USB

1.1 Общие сведения

 

1.1.1 История появления USB

6

1.1.2 Сравнение USB с другими внешними интерфейсами

7

1.1.3 Архитектура шины

8

1.1.4 Примеры ПУ с интерфейсом USB

10

1.1.5 Механизм передачи данных

13

1.1.6 Ограничения USB

14

1.2 Аппаратное обеспечение

 

1.2.1 Кабели и разъемы

15

1.2.2 Физический интерфейс

16

1.2.3 Питание

18

1.3

Внутренняя организация шины

 

 

1.3.1 Логические уровни обмена данными

19

 

1.3.2 Передача данных по уровням

20

 

1.3.3 Типы передач данных

21

1.4

Внутренняя организация периферийных устройств

22

Часть 2. Практика разработки USB-устройств. Подбор «Железа»

2.1 Применение модульного принципа при разработке USB-устройств

23

2.2 USB-периферия

 

2.2.1 Микросхемы Atmel

24

2.2.2 Микросхемы Intel

-

2.2.3 Микросхемы Microchip

-

2.2.4 Микросхемы Motorola

24

2.2.5 Микросхемы FTDI

25

2.2.6 Какую микросхему выбрать? Основные критерии отбора

27

2.3 Какой микроконтроллер выбрать?

 

2.3.1 КР1878ВЕ1 «ЗА» и «ПРОТИВ»

28

2.3.2 Общие сведения о МК КР1878ВЕ1

29

2.3.3 Особенности совместного использования КР1878ВЕ1 и FT245BM

33

2.4 Технологии и инструменты

 

2.4.1 Технологические требования, вытекающие из спецификации USB

34

2.4.2 Программы для разработки принципиальных схем

34

2.4.3 Программы для разработки чертежей печатных плат

34

2.4.4 Инструментарий для работы с МК: Компилятор ассемблера, Отладчик,

 

Программатор.

36

2.5 Собственно устройство: датчик ускорения с интерфейсом USB

 

2.5.1 ADXL202JE-основные сведения

38

2.5.2 Особенности сопряжения ADXL202JE и КР1878ВЕ1

39

Часть 3. Программирование USB-периферии

 

3.1 Теоретические сведения

 

3.1.1 Поддержка USB в Windows

40

3.1.2 Введение в Windows Driver Model

42

3.1.3 Спецификация Plug and Play для USB

43

2

3.2 Инструменты для программирования USB-периферии

44

3.3 Программирование м/с FT245BM, использование драйверов FTDI

 

3.3.1 Основные функции библиотеки FT2XX

45

3.3.2 Программа опроса датчика ускорения

-

3.4 Программирование МК КР1878ВЕ1

 

3.4.1 Система команд МК КР1878ВЕ1

46

3.4.2 Арифметические подпрограммы для КР1878ВЕ1

-

3.4.3 Программа обработки сигнала датчика ускорения

-

Приложения

 

Приложение 1. Модуль обращения к FT2XX

48

Приложение 2. Основной модуль программы опроса датчика ускорения

54

Приложение 3. Некоторые формы программы опроса датчика ускорения

63

Приложение 4. Библиотека арифметических подпрограмм для МК ЕР1878ВЕ1 64

Приложение 5. Исходный текст программы опроса датчика ускорения

70

Список использованной литературы

73

Заключение

74

3

Предисловие

В1996 году была опубликована первая версия спецификации интерфейса USB (Universal Serial Bus, Универсальная Последовательная Шина). Поначалу, до момента появления спецификации 1.1 осенью 1998-ого года, этот интерфейс практически не интересовал разработчиков ввиду его программной сложности и «нетрадиционности» по сравнению с тем же RS-232. В силу аппаратной простоты для пользователя (универсализации кабелей, разъемов, отсутствия необходимости использования аппаратного прерывания IRQ) интерфейс USB в настоящее время не только стал наиболее распространённым и универсальным внешним интерфейсом ПК, но и самым быстродействующим среди широко распространённых внешних интерфейсов (по версии 2.0, опубликованной в 2000-ом году) пропускная способность интерфейса составляет до 480 Мбит/сек, что выше быстродействия, например, интерфейса по спецификации IEEE-1284 (LPT-порт) в 30-600(!) раз). Не менее важной чертой USB явилась возможность подключения к одному ПК до 127-ми(!) устройств, применяя разветвители - хабы (от англ. hub), что позволяет подключить к компьютеру практически все мыслимые устройства одновременно.

До появления интерфейса USB нестандартные устройства обычно подключались к ПК через LPT-порт или ISA-шину (реже использовался COM-порт). Но эти интерфейсы после появления USB обречены на вымирание. За подключение нестандартных ПУ к USB есть несколько аргументов. Во-первых, в ОС Windows версий NT и выше отсутствует прямой доступ к портам, а драйверы для USB-устройств быстро создаются такими средствами, как

Windows XP Driver Developer Kit, NuMega Driver Studio и т.д. Во-вторых, значительно шире возможности поддержки технологии Plug and Play. Против использования USB в нестандартных ПУ выступает аппаратная сложность USB. Если многие нестандартные ПУ с интерфейсом по IEEE-1284 строились на нескольких микросхемах малой или средней степени интеграции, то при подключении нестандартного ПУ к USB обойтись без использования микроконтроллеров вряд - ли получится.

Вданной исследовательской работе автор попытался решить проблему подключения нестандартных ПУ к ПК с использованием интерфейса USB, используя модульный принцип. Таким образом, опыт, полученный при выполнении этой работы, может быть использован при решении проблемы подключения многих нестандартных периферийных устройств к ПК.

4

Введение

В связи со спецификой исследования автор разделил работу на три части.

Первая часть - теоретическая. В ней описывается история появления, спецификации, общие сведения и особенности интерфейса USB.

Во второй части приводятся краткие сведения о некоторых микросхемах поддерживающих интерфейс USB, критерии выбора автором комплекта микросхем КР1878ВЕ1+FT245BM и основные сведения об этих ИМС, приводятся примеры устройств с интерфейсом USB.

Втретьей части рассматривается программное обеспечение, как для периферийного устройства, так и для хост-устройства; принципы Windows Driver Model, *inf-файлов при помощи Windows XP DDK, а также примеры программ на языке Object Pascal 13.0 в среде разработки приложений Borland Delphi 7.

Вконце работы даётся заключение, в котором сделаны выводы о перспективах развития шины USB, оправданности применения USB в тех или иных устройствах, соответствии цели исследования его результатам.

5

Часть 1

1.1 Что такое USB

От Unusable Serial Bus к Universal Serial Bus.

1.1.1 История появления USB

Уже в середине 90х годов прошлого века стала очевидной проблема нехватки свободных портов стандартных внешних интерфейсов (здесь и далее в качестве стандартных внешних интерфейсов подразумеваются интерфейсы RS-232, PS/2, IEE-1284). Компьютеры тех времён имели лишь один (очень редко два) порта LPT, два порта COM, клавиатурный и иногда MIDIпорт. Невооружённым глазом видно, что, во-первых, такого количества портов хватит на сравнительно небольшое количество периферийных устройств: клавиатура, мышь, принтер (сканер, копир), модем и джойстик. Во-вторых, бросается в глаза строгая предопределённость использования тех или иных портов: LPT предназначен для принтера (ну, ещё сканера, копира, плоттера), СОМ для модема и мыши, MIDI-для джойстика и MIDIклавиатуры. В-третьих, для каждого порта было необходимо выделять прерывания IRQ, которые также становились дефицитом при увеличении числа подключенных ПУ (а точнее, подключенных портов). В-четвёртых, ни один из широко распространённых на тот момент интерфейсов официально не поддерживал «горячего» подключения устройств. Недостатки стандартных интерфейсов можно перечислять долго, но вывод напрашивается один: необходим был интерфейс максимально простой аппаратно, не занимающий IRQ, с поддержкой «горячего» подключения-отключения устройств, с возможностью питания относительно слаботочных устройств непосредственно от интерфейсного кабеля, и возможностью подключения большого количества различных устройств одновременно.

Естественно, что крупные производители компьютерного «железа» (такие как Compaq, DEC, IBM, Intel, Microsoft, NEC, Northern Telecom) стали задумываться о создании единого универсального интерфейса. В результате в начале 1996 года была опубликована версия 1.0 нового интерфейса, названного USB (Universal Serial Bus, универсальная последовательная шина), а осенью 1998 –версия 1.1, исправляющая проблемы, обнаруженные в первой редакции. А уже весной 2000 года была опубликована версия 2.0, предусматривающая 40кратное (!) повышение пропускной способности шины. Так по спецификации 1.0 и 1.1 возможна работа на двух фиксированных скоростях 1,5 Мбод и 12 Мбод, а в спецификации 2.0 появилась и скорость 480 Мбод.

6

1.1.2Сравнение USB с другими внешними интерфейсами.

Разработчики USB ориентировались на создание интерфейса, обладающего следующими свойствами:

дешёвое решение с высокой пропускной способностью

гибкость протокола смешанной передачи изохронных данных и асинхронных сообщений (для поддержки большого числа различных ПУ)

максимальная универсализация аппаратного и программного обеспечения.

простота использования для конечного пользователя

широкие возможности работы

равномерная пропускная способность

гибкость

надёжность

низкая себестоимость

Втаблице 1.1 приведено сравнение интерфейса USB с другими интерфейсами ПК. Видно, что конкурентов у USB фактически нет (кроме лишь шины FireWire, которая реализует несколько другую схему соединения и к тому же дороже).

 

Число

Число проводников

Макс.

 

 

Интерфейс

одновременно

/макс. длина

скорость

Использование

 

подключенных

соединительного

передачи

 

 

 

устройств

кабеля

данных

 

 

 

 

Последовательные

интерфейсы

Любые устройства с

USB 2.0

127

3(4)/10

1,5 Мбод

 

 

 

12 Мбод

USB 1.x/2.0

 

 

 

 

480 Мбод

Модем, мышь

 

RS-232

1

6/50-100

115 Кбод

 

 

 

 

 

Промышленная

 

RS-485

32

2/400

10 Мбод

 

 

 

 

 

автоматика

 

FireWire

64

3/15

400 Мбод

Потоковое

видео,

(IEEE-1394)

 

 

 

дисковые накопители

Ethernet

1024

3/1600

10 Мбод

Адаптер ЛВС. (Сетевая

 

 

 

100 Мбод

карта)

 

 

 

 

1 Гбод

 

 

 

 

 

 

 

 

 

 

Параллельные интерфейсы

 

 

 

 

 

 

Принтеры, сканеры,

LPT

1

18/10

До

(IEE-1284)

 

 

16 Мбод

реже - дисковые

 

 

 

 

 

накопители

 

 

 

Токовая петля

 

Музыкальные

 

MIDI

1

3/50

31,25

 

 

 

 

Кбод

устройства

 

7

1.1.3 Архитектура шины

Обычная архитектура USB подразумевает подключение одного или нескольких устройств к компьютеру (рис 1.1). При такой конфигурации компьютер является главным управляющим устройством шины и называется хостом (англ. host). Подключение устройств к хосту производится при помощи кабелей. Для ветвления шины используются хабы (англ. hub). Компьютер имеет встроенный хаб, т.н. корневой хаб (англ. root hub).

рис. 1.1

Физическая архитектура шины определяется следующими правилами (рис. 1.2):

устройства подключаются к хосту

физическое соединение устройств между собой осуществляется по древовидной топологии, причём «корнем» ветвления является корневой хаб

основанием каждой «ветки» является хаб

каждый кабельный сегмент соединяет между собой две точки: хост с хабом или с функцией, хаб функцией или с другим хабом

к каждому порту хаба может подключаться функция или другой хаб, при этом уровень ветвления (вложенности хабов) не должен превышать 5

Рис. 1.2. Физическая организация USB

В отличие от стандартных интерфейсов, детали физической архитектуры USB скрыты от прикладных программ в системном ПО, поэтому логическая архитектура USB выглядит как звезда, центром которой является прикладное ПО, а вершинами - набор конечных точек (Рис. 1.3). Прикладная программа может обмениваться информацией с каждой конечной точкой.

8

рис. 1.3. Логическая организация USB

Шина USB состоит из следующих элементов:

Хост-контроллер (Host Controller), далее хост – главное устройство шины, входящее в состав системного блока компьютера (обычно интегрирован в материнскую плату, реже - в виде карты расширения) и управляет работой всех устройств на шине USB (некоторые USB устройства могут работать и без хоста, в режиме OTG, который будет рассмотрен ниже). Спецификацией шины допустимо использование только одного хоста. Системный блок компьютера может содержать один или несколько хостов, каждый из которых управляет отдельной шиной. Хост имеет следующие обязанности:

обнаружение подключения и отключения устройств к шине.

управление потоками данных

обеспечение питания и управления питанием подключённых ПУ

Системное ПО контролера управляет взаимодействием между устройствами и их ПО, функционирующими на компьютере и обеспечивает согласование:

изохронных передач данных

синхронных передач данных

управления питанием ПУ

нумерации и конфигурирования устройств

конфигурации ПУ и шины

Устройство (Device) может представлять собой хаб, функцию или их комбинацию в пределах одного устройства.

Функция (Function)- это периферийное устройство (ПУ) или его отдельная часть, способная передавать и получать данные по шине USB. Каждая функция предоставляет по запросу хоста конфигурационную информацию, описывающую возможности ПУ и требования ПУ к ресурсам. Перед использованием функция конфигурируется хостом: ей выделяется своя отдельная в канале и выбираются параметры конфигурации.

Логическое устройство (Logical Device) представляет из себя набор конечных точек в пределах отдельного блока или всего устройства.

Порт (Port) – точка подключения

Хаб (Hub или концентратор)- устройство, обеспечивающее ветвление шины USB. Хаб преобразует один восходящий порт (Upstream port) в несколько нисходящих портов

(Downstream ports). Архитектура шины допускает последовательное соединение хабов (не более 5). Хаб распознаёт изменения конфигурации подключённых к нему устройств и может управлять подачей питания на порты.

Корневой хаб (Root hub) – хаб, входящий в состав хоста.

Спецификацией USB определён набор свойств, которые обязательно должно поддерживать устройство, соответствующее спецификации USB:

возможность адресации- устройство должно отзываться только на назначенный ему локальный адрес.

9

возможность конфигурации - при сбросе (подключении) устройство должно предоставлять нулевой адрес для возможности конфигурации его свойств.

передача данных – устройство имеет набор конечных точек для обмена данными с хостом. Для конечных точек поддерживающих разные направления передачи после конфигурирования доступен только один из них.

возможность управление питанием – при подключении устройство может потреблять ток не более 100 мА. При конфигурировании устройство заявляет свои потребности тока, в любом случае не более 500 мА. Если же хаб, к которому подключено данное устройство, не может обеспечить устройству заявленный ток, использование устройства будет невозможно.

поддержка режима останова (USB Suspend Mode) – режима, при котором устройство может потреблять от шины ток не более 500 мкА (включая ток, протекающий через подтягивающие резисторы на линиях USBDP(D+) и USBDM(D-) ≈200 мкА).

возможность удалённого пробуждения (Remote Wakeup)- позволяет приостановленному устройству посылать запросы пробуждения хосту, находящемуся в состоянии останова. Возможность удалённого пробуждения описывается в конфигурации устройства и при конфигурировании использование удалённого побуждения может быть запрещено хостом.

1.1.3Примеры ПУ c интерфейсом USB

Не смотря на то, что для USB разработано огромное количество ПУ, можно выделить несколько характерных групп USB-устройств: хабы, клавиатура и мышь, принтеры, сканеры, модемы, адаптеры ЛВС, мониторы, накопители на ЭСППЗУ (Flash), переходники LPT-USB и COM-USB.

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

Хаб выполняет коммутацию сигналов, выдачу питающего напряжения и отслеживает состояние подключенных к нему устройств. Хаб состоит из двух частей – контроллера (Hub Controller) и повторителя (Hub Repeater). Контроллер содержит регистры для взаимодействия с хостом, доступ к которым осуществляется при помощи специальных команд обращения к хабу. Эти команды позволяют конфигурировать хаб, управлять и опрашивать состояние нисходящих портов хаба. Повторитель представляет собой мультиплексор/демультиплексор, переключающий входной (восходящий порт) между несколькими выходными (нисходящими). Он имеет средства сброса и приостановки сигналов.

Нисходящие порты хабов могут находиться в следующих состояниях:

Питание отключено (Power off) – питание на порт не подаётся (возможно только для хабов, коммутирующих питание). Выходные буферы переводятся в высокоимпедансное состояние (Z-состояние), входные сигналы игнорируются.

Отсоединён (Disconnected) – порт не передаёт сигналы ни в одном из направлений, но может обнаруживать подключение новых устройств к нисходящим портам.

Запрещён (Disabled) – порт передаёт только сигнал сброса (по команде контроллера), сигналы от порта (кроме обнаружения отключения) не обрабатываются.

Разрешен (Enabled) – порт передаёт данные в обоих направлениях. По команде контроллера или при обнаружении ошибки кадра порт переходит в состояние «Запрещён», а при обнаружении отключения – в состояние «Отсоединён»

10