Jump to content

    
Sign in to follow this  
Alex_Golubev

STM32f4 виртуальный COM порт подключение/отключение USB

Recommended Posts

Подскажите, установка конфигурации 0 - это закрытие виртуального порта, или отсоединение устройства?
SET CONFIGURATION = 0, это значит устройство не сконфигурировано - доступ к нему не разрешен операционной системой - читай - ошибка где то.

 

Какой смысл что-то слать...
Вопрос был о том, чтобы программно определить отключение шнурка устройства от порта.

 

Share this post


Link to post
Share on other sites
Параметр 3 - это при наличии DTR со стороны хоста.

И если большинство "обычных" софтин поднимают его, то нежно любимый мной Bray Terminal оставляет его на усмотрение пользователя. И по умолчанию он там выключен...

Другого способа я не нашел.

Подскажите, установка конфигурации 0 - это закрытие виртуального порта, или отсоединение устройства? Если первое, то флажок "connected" можно ставить по любому SET_CONTROL_LINE_STATE.
Мысль интересная. Писал давно. При закрытии порта точно вызывается SET_CONTROL_LINE_STATE с параметром 0. А вот set_configuration вроде бы вызывается только при подключении устройства.

Share this post


Link to post
Share on other sites
После прихода в CDC запроса setup request с типа SET_CONTROL_LINE_STATE с параметром 3 порт открыт, можно слать привествие. После прихота этого же запроса с другим значением параметра или после установки конфигурации 0 - порт закрыт.

Автору вроде нужно не открытие/закрытие COM-порта в винде, а отрывание USB-шнурка. Шнурок могут выдернуть и не закрывая COM.

А также по стандартным запросам от host-а никак не определить факт отрывания шнурка.

Только VBUS или SOF.

SOF кстати - более универсальный способ чем VBUS.

Share this post


Link to post
Share on other sites
Но узаете о том, что не подключены только через VBUS.

Не обязательно. Я уже писал. VBUS элементарно может быть не подключен, при этом USB вполне себе нормально будет работать. В этом случае нужно использовать SOF.

 

мой вариант прекрасно работает :)

Ваш - находится у вас, а у автора может быть другая схема.

Share this post


Link to post
Share on other sites
Ваш - находится у вас, а у автора может быть другая схема.

 

у меня тоже через куб, как и у автора. Это штатная переменная в кубе

Edited by 0men

Share this post


Link to post
Share on other sites
Не обязательно. Я уже писал. VBUS элементарно может быть не подключен, при этом USB вполне себе нормально будет работать. В этом случае нужно использовать SOF.

да, конечно, через SOF - это отличная идея. Но требует определенных программных затрат. Нужны таймауты. Если у ТС устройство в разработке, я бы рекомендовал выделить линию порта МК под мониторинг VBUS. Я делаю именно так.

Share this post


Link to post
Share on other sites
да, конечно, через SOF - это отличная идея. Но требует определенных программных затрат. Нужны таймауты. Если у ТС устройство в разработке, я бы рекомендовал выделить линию порта МК под мониторинг VBUS. Я делаю именно так.

У меня в практике был случай, когда в устройстве (с USB-device) использовалась ADUM4160 и схемотехник VBUS нормально завёл на неё, а вот как МК, находящемуся за барьером, дать знать об отключении хоста - не подумал. И линия VBUS которую он завёл в МК, всегда сидела в "1".

Вот тогда только SOF и спасал.

Share this post


Link to post
Share on other sites
if (hUsbDevice_0 == 0) то шнурок отключен

Никогда не использовал КУБ - пользуюсь самописным софтом. Вот мне интересно, как Вы думаете, или может быть точно знаете - каким образом данная библиотека отслеживает выдергивание шнурка. Как говорил раньше - у STM32 c OTG есть средства - есть регистры и биты, по которым можно отследить состояние VBUS (если линия подключена). У МК с USB-device вообще таких средств мониторинга нет. Как там КУБ определит? Возможно, что как предложил jcxz по SOF, но я сомневаюсь, что в КУБ-е это реализовано.

 

 

Вот тогда только SOF и спасал.
Повторюсь - идея отличная. Обязательно напишу код для своей библиотеки.

 

Share this post


Link to post
Share on other sites
Куб уже научился и провода подпаивать? :biggrin:

 

у него все уже подпаяно, если внимательно почитать.

 

куб определяет при вхождении в прерывание OTG_FS_IRQHandler через флаг USB_OTG_GOTGINT_SEDET

Edited by 0men

Share this post


Link to post
Share on other sites
у него все уже подпаяно, если внимательно почитать.

 

куб определяет при вхождении в прерывание OTG_FS_IRQHandler через флаг USB_OTG_GOTGINT_SEDET

Да. Но VBUS должен быть подключен, иначе Вы постоянно будете висеть в этом прерывании.

И как решить вопрос с МК, у которых нет OTG? Например STM32F103? ...Хотя ТС озвучил F4xx серию, тем не менее, пускай вопрос будет риторический.

Share this post


Link to post
Share on other sites
Да. Но VBUS должен быть подключен, иначе Вы постоянно будете висеть в этом прерывании.

И как решить вопрос с МК, у которых нет OTG? Например STM32F103? ...Хотя ТС озвучил F4xx серию, тем не менее, пускай вопрос будет риторический.

 

там, видимо, как то иначе, не работал с первой серией

Share this post


Link to post
Share on other sites
там, видимо, как то иначе, не работал с первой серией
В первой серии даже встроенного pull-up нет. Но, тем не менее, повторюсь не в первый раз - для точного и быстрого определения отключения шнурка - VBUS.

 

Share this post


Link to post
Share on other sites
В первой серии даже встроенного pull-up нет. Но, тем не менее, повторюсь не в первый раз - для точного и быстрого определения отключения шнурка - VBUS.

 

USB_OTG_GOTGINT_SEDET как раз и работает с VBUS

 

Bit 2 SEDET: Session end detected

The core sets this bit to indicate that the level of the voltage on VBUS is no longer valid for a

B-Peripheral session when VBUS < 0.8 V

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this