§ 23. WoodmanUSB. Введение
|
Дмитрий Иванов, 09 Декабря 2013
|
Что это такое WoodmanUSB? WoodmanUSB предназначен для простого и дешевого решения задачи передачи данных между переферийным устройством и компьютером через шину USB. WoodmanUSB прпредставляет из себя двунаправленный мост USB-FIFO с простым и доступным интерфейсом управления. С его помощью можно достичь скорости передачи данных по шине USB до 220 Мбит/с!
Конструктивно WoodmanUSB представляет собой миниатюрную двухстороннюю плату, вставляемую в колодку DIP28 и имеющую встроенный разъем USB-B. WoodmanUSB полностью "самодостаточен" и не требует установки дополнительных элементов для своей работы.

Каким образом работает WoodmanUSB?
WoodmanUSB работает в качестве "моста" между шиной USB и некоторым переферийным устройством. Он преобразует USB интерфейс данных в 8-ми битный парралельный интерфейс и обратно. Т.е. с помощью WoodmanUSB можно подключить к шине USB практически любую вашу схему на основе микроконтроллера, процессора, ПЛИС или др. для скоростой передачи данных по шине USB. От переферийного устройства требуется наличие 8-ми разрядной шины данных и 6-ти свободных линий для контроля и управления работой модуля WoodmanUSB.

Модуль содержит два 8-ми битных порта. Один из них используется для скоростой передачи данных по парралельному интерфейсу (PORTB). Другой же порт (PORTA) работает в режиме прямого ввода-вывода и не требует ни каких линий управления, что позволяет напрямую взаимодействовать с нагрузкой подключенной к этому порту.

Познакомимся с выводами WoodmanUSB. Они показаны на рисунке и в таблице ниже. Понимаю, что наверное не все из них понятны на данный момент времени. По ходу следования статей мы детально познакомимся со всеми ними.

Номер вывода | Обозначение вывода | Направление | Описание |
1 | GND | | Земля (общий провод схемы). |
2 | +5V | Выход | Шина питания +5 В от порта USB. |
3 | +3.3V | Выход | Шина питания +3.3 В от преобразователя напряжения, расположенного на плате модуля. Максимальная нагрузочная способность: не более 0.5 А. |
4 | RESET | Вход | При подаче низкого уровня на этот вывод будет произведен сброс модуля. |
5 | PB_RD | Вход | Линия чтения данных порта PORTB. При изменении входного уровня с высокого на низкий происходит установка на линии данных порта PORTB текущего байта из входного FIFO буфера модуля (данные из компьютера - IN_FIFO). Теперь возможно чтение этого байта. При переключении обратно на высокий уровень, линии данных возвращаются в исходное состояние, а во входном буфере становится готовым для чтения следующий байт (при его наличии). |
6 | PB_WR | Вход | Линия записи данных порта PORTB. При изменении входного уровня с высокого на низкий происходит чтение модулем текущих состояний линий данных порта PORTB и запись полученного байта в выходной FIFO буфер модуля (OUT_FIFO). |
7 | PORTB0 | Вход/Выход | Бит 0 двунаправленного порта ввода/вывода PORTB |
8 | PORTB1 | Вход/Выход | Бит 1 двунаправленного порта ввода/вывода PORTB |
9 | PORTB2 | Вход/Выход | Бит 2 двунаправленного порта ввода/вывода PORTB |
10 | PORTB3 | Вход/Выход | Бит 3 двунаправленного порта ввода/вывода PORTB |
11 | PORTB4 | Вход/Выход | Бит 4 двунаправленного порта ввода/вывода PORTB |
12 | PORTB5 | Вход/Выход | Бит 5 двунаправленного порта ввода/вывода PORTB |
13 | PORTB6 | Вход/Выход | Бит 6 двунаправленного порта ввода/вывода PORTB |
14 | PORTB7 | Вход/Выход | Бит 7 двунаправленного порта ввода/вывода PORTB |
15 | PORTA0 | Вход/Выход | Бит 0 двунаправленного порта ввода/вывода PORTA |
16 | PORTA1 | Вход/Выход | Бит 1 двунаправленного порта ввода/вывода PORTA |
17 | PORTA2 | Вход/Выход | Бит 2 двунаправленного порта ввода/вывода PORTA |
18 | PORTA3 | Вход/Выход | Бит 3 двунаправленного порта ввода/вывода PORTA |
19 | PORTA4 | Вход/Выход | Бит 4 двунаправленного порта ввода/вывода PORTA |
20 | PORTA5 | Вход/Выход | Бит 5 двунаправленного порта ввода/вывода PORTA |
21 | PORTA6 | Вход/Выход | Бит 6 двунаправленного порта ввода/вывода PORTA |
22 | PORTA7 | Вход/Выход | Бит 7 двунаправленного порта ввода/вывода PORTA |
23 | PORTB_FF | Выход | (FIFO FULL) Если уровень на этом выводе становится низким, это означает что драйвер не успевает транспортировать данные из модуля при их передаче от внешнего устройства в компьютер через PORTB. Необходимо приостановить передачу данных, пока уровень не вернется в свое исходное состояние - высокий. |
24 | PORTB_FNE | Выход | (FIFO not EMPTY) Если уровень на этом выводе становится высоким, это означает что компьютер начинает передачу данных и в буфере модуля есть доступные данные для чтения через порт PORTB. Уровень сохраняется высоким, пока IN_FIFO буфер не будет прочтен полностью. При отсутсвии данных уровень низкий. |
25 | PKTEND | Вход | Флаг завершения записи данных в порт PORTB. При подаче низкого уровня на этот вывод, драйвер модуля завершает операцию чтения данных не дожидаясь окончания чтения заказанного колличества байт данных. |
26 | CLK | Вход/Выход | Линия тактового сигнала, используемая в синхронном режиме работы порта PORTB. В зависимости от того какой вид тактового сигнала используется (внешний или внутренний) линия является входной или выходной. |
27 | +5V | Выход | Шина питания +5 В от порта USB. |
28 | GND | | Земля (общий провод схемы). |
Изготовление простого USB устройства на основе модуля WoodmanUSB (Часть 1)
Для начала сделаем самое простенькое USB устройство на основе модуля WoodmanUSB. Оно будет призвано решать следующую задачу:
"Хочу подключить к разъему USB компьютера устройство, у которго есть 8 светодиодов. Из моей программы на Си хочу управлять этими светодиодами - гисить или зажигать их по моему выбору."
Давайте приступим к реализации этой идеи. Но прежде, чем мы начнем собирать схему и писать программу надо сделать весьма важную операцию: установить драйвера, поставляемые KERNELCHIP для модуля WoodmanUSB. Для этого скачайте архив с драйвером на сранице модуля (пока доступны драйвера только для Windows XP).
Распакуйте архив. Там Вы найдете папку WUSB_Drivers, в которой находятся драйвер и библиотека для разработки собственных приложений. Теперь соедините WoodmanUSB с любым USB портом Вашего компьютера с помощью USB удлинителя. Если быть точным, такой удлинитель называется USB-AB.

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

Тут же появится окно мастера установки новго оборудования, который будет заниматься установкой драйверов. Он предложит поискать драйвера в интернете, но Вы ему такой возможности не давайте, смело выбирайте пункт "Нет, не в этот раз". Нажимайте кнопку "Далее".

Далее необходимо выбрать пункт "Установка из указанного места" и нажать на кнопку "Далее".

Появится окно выбора способа поиска драйверов. Установите радиокнопки и чекбоксы как на рисунке ниже.

Нажмите на кнопку "Обзор". Укажите путь к папке с драйверами для WoodmanUSB. Нажмите на кнопку "Ok".

Нажмите на кнопку "Далее".

Начнется процесс проверки драйверов операционной системой. Вдруг неожиданно появится такое вот сообщение. Обращаться ни к какому поставщику не нужно, смело нажимайте на кнопку "Все равно продолжить".

Теперь пойдет процесс копирования драйверов и регистрации их в системе.


Тут, я думаю, все понятно.

По окончании установки появится нижеследующее сообщение весьма приятного содержания.

Теперь отсоедините USB кабель от компьютера, подождите немного (5-10 сек.) и включите его снова. Вы должны услышать короткий звуковой сигнал и больше ни чего происходить не должно. Все. Драйвера установлены, устройство готово к работе. Драйвера надо было поставить один раз. При следующих подключениях устройства для него уже есть свой драйвер, который и подгружается операционной системой. (Следует сделать замечание, что если Вы затем подключите модуль к другому USB порту, то потребуется еще раз установить драйвер именно для этого порта.)
В удачности установки можно убедиться отдельно. Откройте диспетчер устройств через
Пуск -> Настройка -> Панель управления -> Система -> Оборудование -> Диспетчер устройств. В ветке "Контроллеры универсальной последовательной шины USB" должна появится запись о новом устройстве - WoodmanUSB.

На этом все подготовительные операции мы закончили. Переходим к следующей статье, в которой мы соберем схему простого USB устройства для управления светодиодами и напишем программу для управления этим устройством.
© Дмитрий Иванов
09 Декабря 2013 года
http://www.kernelchip.ru