Устройство на STM32F107 с собственным источником питания.
Для диагностики используется USB интерфейс в режиме Peripherial Device only (виртуальный COM)
Подключение к хосту непостоянное: пришли - подключились - выполнили действия - отключились.
Контроллер USB OTG использует VBUS для определения момента подключения к хосту.
Если просто соединить +5V с USB и ногу VBUS - при отключенном БП можно получить фантом.
Каким образом правильно завести VBUS с USB?
Может кто знает про аппноту по этому вопросу?
Обмен сделан на базе примера Virtual COM Port от ST, нижний уровень работы с USB не трогался.
Бывает, что устройство при длительном подключении самопроизвольно уходит в SUSPEND.
(ранее замечал подобное за STM32F103, там вопрос решился примением кабеля с ферритовым фильтром).
Сейчас программно отслеживается ситуация:
(Кабель_подключен && bDeviceState==SUSPENDED) и выполняется USB_Cable_Config(DISABLE), затем USB_Cable_Config(ENABLE).
В принципе помогает, но процедура коннекта активно вызывает прерывания и на это время отваливается прием данных по UART
(нарушаются таймауты приема очередного байта).
Как корректно перевести USB в рабочее состояние?