Всем привет!), сегодня речь пойдет об USB HID (основа Keil\ARM\Boards\…\…\HID). USB HID (human interface device) class — класс устройств USB для взаимодействия с человеком. Этот класс включает в себя такие устройства как клавиатура, мышь, игровой контроллер. Класс USB HID определен в нескольких документах, предоставляемых USB Implementers Forum, в частности, рабочей группой по работе с устройствами. Иногда всё-таки приходит время перехода с виртуальных com портов (сюда же CDC), на чистый usb протокол, и над протокол HID (пользовательский протокол). USB HID характеризуется типом передачи, существует 4 типа передачи:

1. Передача по управлению (USB_ENDPOINT_TYPE_CONTROL 0x00).
2. Передача по прерыванию (USB_ENDPOINT_TYPE_INTERRUPT 0x03).
3. Передачи массивами (USB_ENDPOINT_TYPE_BULK 0x02).
4. Изохронная передача данных (USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01).

И конечными точками (USB_ENDPOINT_IN, USB_ENDPOINT_OUT). Конечная точка это канал для работы с пользовательским интерфейсом. Например у SAM3U4C у него аж 6 штук. Причем каждая конечная точка отличается размером буфера и количеством банков.
Самое главное это правильное описание дескриптора пакета передачи данных, для начала укажем сколько байт мы хотим передать, принять или тоже самое для особенных пакетов данных.
usbdesc.c

Далее необходима описать сам USB дескриптор.

Или можно еще так, делал для себя, когда hid-овские полтергейсты не довали мне с ним нормально обмениваться данными.

Далее делаем USB конфигурацию.

Чтобы не запутаться в IN и OUT, есть аналогия с ПК, IN – входные данные в ПК, OUT – выходные данные из ПК. Сейчас необходимо описать работу конечных точек. Конечную точку номер 1, я буду использовать для записи данных в ПК, конечную точку 2 будем использовать для чтения данных из ПК.
usbuser.c

Наша программа будет принимать данные с ПК и отправлять через USB HID их назад. Далее скачиваем кросс платформенную либу для USB  HID (https://github.com/signal11/hidapi) , и меняем исходник.

Я делаю трижды read и write, только для примера.
Итого:

Всем пока!) продолжим следующий раз.

Отправить ответ

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Уведомлять о