Как Я Сделал Usb-Устройство

Я где-то читал, что создатели первой спецификации USB намеревались сделать этот стандарт простым для аппаратной реализации за счет усложнения программного обеспечения.

Таким образом, целью было максимально удешевить производство и сделать USB-устройства очень доступными.

Сейчас можно сказать, что производителям чипов это удалось, но действительно ли этот стандарт так легко реализовать на железе? Боюсь, ответ не очевиден.



Как я сделал USB-устройство

Допустим, мне нужно сделать свое собственное простое USB-устройство.

Какие у меня есть варианты? Есть несколько вариантов: 1. Использование внешних специальных микросхем, например преобразователей USB-to-Serial. Каждый может использовать последовательный порт. Компания FTDI производит такие микросхемы.

Это FT232R USB-UART и FT245R USB-FIFO. Использование этих микросхем существенно упрощает разработку устройства, но несколько увеличивает его стоимость.

2. Использование микроконтроллеров со встроенным USB-интерфейсом.

Такие микросхемы производит, например, компания Atmel (например, микросхема AT90USB82).

Хорошее решение требует знания системы команд AVR и микропроцессора AVR в целом.

3. Использование микроконтроллеров AVR с программной эмуляцией интерфейса USB. Это знаменитая библиотека V-USB. Следует отметить, что выбирая любой из этих трех путей, мы существенно упрощаем себе жизнь и фактически остаемся в неведении: «Трудно ли реализовать USB аппаратноЭ» Здесь под реализацией «аппаратно» я имею в виду низший уровень проектирования — схемотехнику.

Захотелось проверить саму возможность реализации USB дома.

Это оказалось очень сложно, но получилось!

Как я сделал USB-устройство

Для реализации USB я взял Доска марсохода с ПЛИС Altera EPM240T100C5 (240 логических элементов).

Ее схема Здесь .

Среда разработки Altera Quartus II v9. Написаны на языке Verilog: модуль получатель И передатчик Ядро USB — это модуль, который решает, когда и что отправлять.

Все пакеты и дескрипторы располагались во встроенной флэш-памяти чипа CPLD. Для своего устройства я взял idVendor=0x9FB от Altera (надеюсь меня простят?) и idProduct=0x60A5 (на ровном месте).

Драйвер для Windows я не писал — я взял пример драйвера BULKUSB.SYS из Microsoft Windows Driver Developer Kit и просто скомпилировал его.

А вот INF-файл пришлось изменить - укажите свой идентификатор производителя и идентификатор продукта.

Конечно, мне пришлось написать программу для работы с устройством.



Как я сделал USB-устройство

Он может прочитать один байт с устройства и записать один байт на устройство.

На плате марсохода 8 светодиодов — теперь я могу их зажигать программно.

Еще на плате есть 4 кнопки — теперь я могу программно считать их состояние с устройства.

Немного, да? А ведь эта штука реально может заменить, например, параллельный или последовательный порт — можно подключить какую-нибудь самодельную «лампу настроения» или что-то еще.

Доступны все исходные коды программ, драйверов и проектов для CPLD. возьми здесь .

В общей сложности мое простое устройство заняло CPLD в чипе 215 логические элементы.

Конечно, я не слишком следовал стандарту USB — не делал контрольную сумму полученных пакетов и не переключал проверку четности.

Тем не менее, тесты показали вполне стабильную работу устройства в течение длительного времени.

Более подробную информацию можно получить по адресу Сайт борта марсохода .

Теги: #Марсоход #плата с открытым исходным кодом #CPLD #altera #altera #plis #PLIS #plis #Я занимаюсь пиаром

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.