Устройство на 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 в рабочее состояние?
Сообщение отредактировал EugenyAM - Oct 3 2012, 03:58
|