Всем привет,
Делаю первые шаги в программировании микроконтроллеров. Начинаю с малого - пытаюсь пощупать плату STM32F407VG через порт USB. Я так понимаю, что чтобы мне сделать своё устройство, мне надо написать код, позволяющей микроконтроллеру притворяться устройством с определённым VID (1234) и PID (0001).
Я пользуюсь "MicroC PRO for ARM version 6.2.0", в котором есть встроенная утилита "HID Terminal". Вторая его кладка называется "Descriptor" и позволяет сгенерировать описательный код ("USBdsc_STM32F407VG.c"), включающий в себя как минимум: "Device Descriptor", "Configuration Descriptor", "Report descriptor", а также вышеупомянутые VID и PID. Если я сделаю include "USBdsc_STM32F407VG.c" в начале основного файла с кодом и оставлю функцию "main()" как бесконечный цикл, затем прошью микроконтроллер, то... При подключении платы к ПК с Windows 10 я ожидаю увидеть неизвестное устройство в "Диспетчере устройств", сообщающее, что VID это 1234, а PID=0001. Вместо этого я получаю "Ошибка получения дескриптора устройства USB" на несколько секунд, приводящее к отключению устройства и код ошибки 45 ("Сейчас это устройство не подключено к компьютеру" -> оно исчезает из Диспетчера устройств).
Я попробовал и готовый пример для платы STM32F407VG расположенный здесь: "...\mikroC PRO for ARM\Examples\ST\Other\USB HID Bootloader\Projects\STM32F407VG\". Успешно скомпилировано и прошито, но результат тот же (код 45).
Вопросы:
1) А на какой стадии надо устанавливать драйвер? Правильно ли, что прежде всего я должен увидеть устройство в Диспетчере устройств Windows с заданными мной кодами VID и PID?
2) USB 2.0 это 5V, а плата микроконтроллера 3V. Это имеет какое-нибудь значение? Есть ли разница при подключении к порту USB 2.0 или к порту USB 3.0?
3) Может это быть аппаратные проблемы microUSB порта на плате?
4) Что-нибудь упустил?
Огромное спасибо за помощь.