ПредишенСледващото

В последната статия, аз говорих за това как проектът трябва да се търси Кайл-прибиране на устройства с USB, даде линк към моя проект и обясни как да я конфигурирате при почти всяка дъска с STM32.

Интерфейсът на проект с две групово endpoyntami (вътре и отвън) е била извършена, с моя "по поръчка" протокол, с който можете да активира, деактивира и да svetoiody мига в желаното време на изгаряне / без изгаряне.

Ами аз изложени малка програма за всичко това:

STM32 и USB

В тази статия, аз ще прекарат малко преглед на средствата, които могат да се използват за много опрости живота си.

Така че ние имаме в дневния ред следните опции:

1) Напишете самия водач. Задачата е трудна, неблагодарна, дълго. Тук веднага може да бъде изпратен, например към фондацията на драйвер за Windows. Има тон на примери, които можете да вземете отворен и да се адаптира според вашите нужди.
Очевидното предимство на този вариант - решението да се получи хубав и компактен. Но си струва времето ...
За съжаление, ако разочаровани тези, които мислех, че ще опиша тази опция :)

3) Използване на готови средства. Тук, на този "вариант за начинаещи и не само", ние ще спре.

Но първо, на кратко отклонение.

Как Windows разпознава нашия USB-устройство?
В повечето случаи това е "твърда връзка" в VID на устройство (ID на продавач) и PID (идентификационен номер на продукта). Има изключения, като например HID и Mass Storage, където Windows ще разпознае устройството и клас водача вече фишове варени.

Ако се включите към нашата компютърна система ще го разпознае, но, разбира се, ще се закълне, че липсата на драйвер, и ви подканва да изберете .inf- файл.
Тя е в този файл и предписано, наред с други неща, ни VID и PID, както и по пътя на водача.

Така че ние се срещнат: Libusb-win32 и Jungo WinDriver.

Jungo WinDriver

Много удобно нещо.
Стартирайте съветника, изберете VID-PID на нашето устройство:

STM32 и USB

Генерира INF-файл, спаси, да инсталирате драйвера, веднага, и готово. Тук са нашите две групово endpoynta + мениджър, нула endpoynt:

STM32 и USB

Но нашето устройство е определен в диспечера на устройствата:

STM32 и USB

Но това не е всичко. Кликнете върху бутона магия Генериране на код:

STM32 и USB

И ние получаваме едно наистина широка гама от опции за всеки вкус:

STM32 и USB

Аз Генериране на проект за C # (.NET) и той ми даде solyushen с два проекта: действителната самата програма и Лииб да работи с USB устройство. В последната има всичко необходимо, до свързване-разединяване devaysa събития. По принцип, ако не се притеснява, всичко може да бъде намалено до нормалната четене-запис в endpoynty.
Следваща се справят? ;-)

Е, сега нека да говорим за недостатъците.
1) Jungo WinDriver - парче много заплащане. Кой иска да се разстрои - цените са тук.
2) Някои USB-устройства е няколко конфигурации. Това се случва рядко, но се случва.
WinDriver такава работа не може, в зависимост от промяната на конфигурацията е маркиран, като още не действа.

Libusb-win32

Екстракт от кофата за боклук и татко е с програми INF-wizard.exe. Също магьосник за генериране на INF файла, заедно с всички други файлове, необходими, за да инсталирате драйвера.
Бягай, ние избираме телефона, поддържайте INF и т.н. в отделна папка:

STM32 и USB

За да инсталирате кладенеца веднага.

STM32 и USB

Сега, за да създадете свой проект, трябва да се съберат всички необходими файлове от LibUSB в ИЪ директория, включват, шпионин за това как да работят с устройството в папка exampes. А работа - прост (виж bulk.c)


Но това ми се струваше малко. Както веднъж издигнато на твърди наркотици, по-нататък C # .NET +, аз започнах да търся решения, които са толкова прости, колкото Jungo WinDriver.
И намерих следното:

LibUsbDotNet

Именно чрез тази Liby Написах една програма от предишната статия. Работа с endpoyntami толкова лесно.


Е, след внедряването на една малка протокол, срещу запис четат и да се насладят на endpoynty светодиод мига :)
Само не забравяйте една тънкост: целият обмен с USB-devaysom възниква по инициатива на домакина. Поради това данните не попада в приемащата, докато стопанинът не исках да ги чета.
Това е всичко.

Тук, в общи линии, всичко, което трябва да се създаде един примитивен STM32 USB-устройство. Цялата комуникация се свежда до четене и писане в endpoynty и анализ на това, което е там все пак това е и какво да направя за него.
Лично аз мисля, че този вариант е по-лесно, отколкото прилагането на устройство, включено като стандарт клас.

Както винаги, файловете на проекта са тук.

Е, следващия път ще достигне ръцете си, ние ще се повиши USB Mass Storage и над интерфейс прави за светодиоди, т.е. Композитен USB-устройство :)

LibUSB хубаво нещо, но стандартните класове също не е лош. Така например, в класа CDC се вижда в системата като виртуален COM порт, който не може да не се радвам, но разбрах, много просто. И все пак, да работи на всяка система, без да се налага да инсталирате техните водачи много си струва.

Е, да :) Само CDC класа все още изискват INF-файл, както и неговото VID-PID. Е, Linux не се брои.

Като цяло, проблемът е следният: да организира USB-обмен най-бързо и просто, четене и писане в endpoynty. И реализацията на дори най-CDC е вече най-малко някои, но задълбочаването :)

За статия, благодаря, интересни и информативни. Сега постепенно, също мога да взема USB. Малко по малко - защото аз не виждам голям смисъл в USB-бъдете креативни резолюция на устройството, защото там FT232. VCP - нашият всички. )

FT232 разходи за същите като stm32f103. Той има смисъл. )

Подкрепете проекта - споделете линка, благодаря!