Здравствуйте.
Разбираюсь с USB. Конкретнее с CDC (виртуальный COM порт), реализую на микроконтроллере STM32(L). Библиотека от ST это просто кошмар, поэтому решил написать свою на основе библиотеки от keil. У keil есть реализация HID устройства, а CDC нет. Читая Агурова и статьи в интернете, уже кое-чего добился проходит инициализация – читаются дескрипторы, на ПК подключается драйвер и даже можно найти новый COM порт и открыть его в терминале. А вот с передачей и приемом у меня проблемы – я никак не пойму с какого момента заканчивается общение с нулевой конечной точкой и начинается общение с другими конечными точками. При отладке последовательность запросов у меня такая: 1. GET_DESCRIPTOR_DEVICE (дескриптор устройства) 2. SET_ADRESS 3. GET_DESCRIPTOR_DEVICE (дескриптор конфигурации) 4. SET_CONFIGURATION 5. SET_LINE_CODING 6. GET_LINE_CODING 7. SET_CONTROL_LINE_STATE 8. При открытии виртуального порта в терминале опять SET_LINE_CODING
А далее ничего не происходит, даже когда я передаю данные через терминал. Хотя USB не отваливается и продолжает работать дальше. У меня такие вопросы. 1. Что должно происходить дальше? Какие запросы обрабатываться? 2. Что нужно сделать при запросе SET_CONFIGURATION? Я при этом запросе только включаю/настраиваю остальные(не конфигурационные) конечные точки и то не уверен, что правильно? 3. Как и когда правильно настраивать не конфигурационные конечные точки – по дескрипторам конечных точек или нужно учитывать какую-то информацию при запросе с ПК? Вроде пока больше вопросов не вспомню. Заранее благодарю за любую помощь.
P.S. Может у кого есть пример для cdc usb, хотя-бы даже для другого микроконтроллера.
Сообщение отредактировал Нортон - Apr 9 2014, 08:07
|