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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> STM32f4 виртуальный COM порт подключение/отключение USB
prottoss
сообщение Dec 11 2017, 13:13
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(esaulenka @ Dec 11 2017, 14:01) *
Подскажите, установка конфигурации 0 - это закрытие виртуального порта, или отсоединение устройства?
SET CONFIGURATION = 0, это значит устройство не сконфигурировано - доступ к нему не разрешен операционной системой - читай - ошибка где то.

Цитата(Сергей Борщ @ Dec 9 2017, 23:29) *
Какой смысл что-то слать...
Вопрос был о том, чтобы программно определить отключение шнурка устройства от порта.


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 11 2017, 13:22
Сообщение #17


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (esaulenka @ Dec 11 2017, 10:01) *
Параметр 3 - это при наличии DTR со стороны хоста.
И если большинство "обычных" софтин поднимают его, то нежно любимый мной Bray Terminal оставляет его на усмотрение пользователя. И по умолчанию он там выключен...
Другого способа я не нашел.
QUOTE (esaulenka @ Dec 11 2017, 10:01) *
Подскажите, установка конфигурации 0 - это закрытие виртуального порта, или отсоединение устройства? Если первое, то флажок "connected" можно ставить по любому SET_CONTROL_LINE_STATE.
Мысль интересная. Писал давно. При закрытии порта точно вызывается SET_CONTROL_LINE_STATE с параметром 0. А вот set_configuration вроде бы вызывается только при подключении устройства.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 11 2017, 13:22
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ Dec 9 2017, 19:29) *
После прихода в CDC запроса setup request с типа SET_CONTROL_LINE_STATE с параметром 3 порт открыт, можно слать привествие. После прихота этого же запроса с другим значением параметра или после установки конфигурации 0 - порт закрыт.

Автору вроде нужно не открытие/закрытие COM-порта в винде, а отрывание USB-шнурка. Шнурок могут выдернуть и не закрывая COM.
А также по стандартным запросам от host-а никак не определить факт отрывания шнурка.
Только VBUS или SOF.
SOF кстати - более универсальный способ чем VBUS.
Go to the top of the page
 
+Quote Post
0men
сообщение Dec 11 2017, 13:31
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Цитата(prottoss @ Dec 11 2017, 16:13) *
Вопрос был о том, чтобы программно определить отключение шнурка устройства от порта.


мой вариант прекрасно работает sm.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 11 2017, 13:40
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(prottoss @ Dec 10 2017, 09:41) *
Но узаете о том, что не подключены только через VBUS.

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

Цитата(0men @ Dec 11 2017, 15:31) *
мой вариант прекрасно работает sm.gif

Ваш - находится у вас, а у автора может быть другая схема.
Go to the top of the page
 
+Quote Post
0men
сообщение Dec 11 2017, 13:44
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Цитата(jcxz @ Dec 11 2017, 16:40) *
Ваш - находится у вас, а у автора может быть другая схема.


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

Сообщение отредактировал 0men - Dec 11 2017, 13:44
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 11 2017, 13:47
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(0men @ Dec 11 2017, 15:44) *
у меня тоже через куб, как и у автора. Это штатная переменная в кубе

Куб уже научился и провода подпаивать? biggrin.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 11 2017, 13:47
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(jcxz @ Dec 11 2017, 19:40) *
Не обязательно. Я уже писал. VBUS элементарно может быть не подключен, при этом USB вполне себе нормально будет работать. В этом случае нужно использовать SOF.

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


--------------------
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 11 2017, 13:51
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(prottoss @ Dec 11 2017, 15:47) *
да, конечно, через SOF - это отличная идея. Но требует определенных программных затрат. Нужны таймауты. Если у ТС устройство в разработке, я бы рекомендовал выделить линию порта МК под мониторинг VBUS. Я делаю именно так.

У меня в практике был случай, когда в устройстве (с USB-device) использовалась ADUM4160 и схемотехник VBUS нормально завёл на неё, а вот как МК, находящемуся за барьером, дать знать об отключении хоста - не подумал. И линия VBUS которую он завёл в МК, всегда сидела в "1".
Вот тогда только SOF и спасал.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 11 2017, 13:56
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(0men @ Dec 11 2017, 17:08) *
if (hUsbDevice_0 == 0) то шнурок отключен

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


Цитата(jcxz @ Dec 11 2017, 19:51) *
Вот тогда только SOF и спасал.
Повторюсь - идея отличная. Обязательно напишу код для своей библиотеки.


--------------------
Go to the top of the page
 
+Quote Post
0men
сообщение Dec 11 2017, 14:43
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Цитата(jcxz @ Dec 11 2017, 16:47) *
Куб уже научился и провода подпаивать? biggrin.gif


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

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

Сообщение отредактировал 0men - Dec 11 2017, 14:48
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 11 2017, 15:15
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(0men @ Dec 11 2017, 20:43) *
у него все уже подпаяно, если внимательно почитать.

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

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


--------------------
Go to the top of the page
 
+Quote Post
0men
сообщение Dec 11 2017, 15:23
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Цитата(prottoss @ Dec 11 2017, 18:15) *
Да. Но VBUS должен быть подключен, иначе Вы постоянно будете висеть в этом прерывании.
И как решить вопрос с МК, у которых нет OTG? Например STM32F103? ...Хотя ТС озвучил F4xx серию, тем не менее, пускай вопрос будет риторический.


там, видимо, как то иначе, не работал с первой серией
Go to the top of the page
 
+Quote Post
prottoss
сообщение Dec 11 2017, 15:28
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(0men @ Dec 11 2017, 21:23) *
там, видимо, как то иначе, не работал с первой серией
В первой серии даже встроенного pull-up нет. Но, тем не менее, повторюсь не в первый раз - для точного и быстрого определения отключения шнурка - VBUS.


--------------------
Go to the top of the page
 
+Quote Post
0men
сообщение Dec 11 2017, 15:42
Сообщение #30


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Цитата(prottoss @ Dec 11 2017, 18:28) *
В первой серии даже встроенного 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
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 07:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01518 секунд с 7
ELECTRONIX ©2004-2016