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

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


Гуру
******

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



Цитата(0men @ Dec 11 2017, 21:42) *
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
Alex_Golubev
сообщение Dec 12 2017, 01:13
Сообщение #32


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

Группа: Участник
Сообщений: 198
Регистрация: 18-03-17
Пользователь №: 95 877



Vbus я опрашиваю.
Цитата
if (hUsbDevice_0 == 0) то шнурок отключен

Чем эта не нравится:
if( (hUsbDeviceHS.dev_state==USBD_STATE_CONFIGURED) ){

}
?
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Jan 24 2018, 08:25
Сообщение #33


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

Группа: Участник
Сообщений: 198
Регистрация: 18-03-17
Пользователь №: 95 877



Столкнулся с еще одной проблемой USB.
Когда подключен шнурок USB и есть напряжение Vbus и выполняется условие hUsbDeviceHS.dev_state==USBD_STATE_CONFIGURED. И при этих условиях передавать данные на пк без открытого терминала COM порта (просто шлем данные). То через некоторое время микроконтроллер зависает. Функция передачи while(CDC_Transmit_HS(p ,strlen (text)) != USBD_OK); выдает USBD_BUSY. Но если в терминале нажать conect то все нормально.
Go to the top of the page
 
+Quote Post
golf2109
сообщение Jan 25 2018, 02:19
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 15-04-10
Из: Kiev
Пользователь №: 56 654



Цитата(Alex_Golubev @ Jan 24 2018, 10:25) *
Но если в терминале нажать conect то все нормально.

а что посылает терминал при нажатии connec?
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Jan 25 2018, 05:59
Сообщение #35


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

Группа: Участник
Сообщений: 198
Регистрация: 18-03-17
Пользователь №: 95 877



Цитата
а что посылает терминал при нажатии connec?
данные вываливает (терминал). И программа (зашитая в микроконтроллер), дальше продолжает работать, все нормально. Я так думаю какие-то массивы данных переполняются.
Хочу еще узнать, что за:
/* Device Status */
#define USBD_STATE_DEFAULT 1
#define USBD_STATE_ADDRESSED 2
#define USBD_STATE_CONFIGURED 3 // эта знаю для чего
#define USBD_STATE_SUSPENDED 4
ни где не смог найти для чего они нужны. Может в них разгадка.
Go to the top of the page
 
+Quote Post
SanvaldYV
сообщение Jan 29 2018, 09:30
Сообщение #36


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



#define USBD_STATE_DEFAULT 1 - это исходное состояние USB-device, устанавливается при инициализации и остаётся таковым до подключения к хосту
#define USBD_STATE_ADDRESSED 2 - промежуточное состояние при подключении, хост уже установил адрес, но ещё не передал конфигурацию
#define USBD_STATE_SUSPENDED 4 - по названию понятно, что перевод в некое остановленное состояние, но не знаю в каких случаях хост выполняет перевод подключенного девайса в состояние suspend и выводит из этого состояния (resume), у меня при работе с CDC такое состояние не возникало
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 29 2018, 15:10
Сообщение #37


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата(Alex_Golubev @ Jan 25 2018, 08:59) *
Я так думаю какие-то массивы данных переполняются.

Мне кажется, вы не совсем понимаете парадигму работы USB. Устройство не передаёт данные хосту! Оно кладёт данные у себя в "заветную нычку" (конечную точку) и ждёт пока хост их сам заберёт. Если забрал, то можно ещё положить. Если не забирает, то накапливайте данные вне "нычки" или выкидывайте, тут уж вам решать сколько данные "не протухают".

Цитата(Alex_Golubev @ Jan 25 2018, 08:59) *
Хочу еще узнать, что за:
/* Device Status */
#define USBD_STATE_SUSPENDED 4

Это когда хост не проявляет никакой активности на шине. Например, устройство отключили в диспетчере устройств. Можно переводить процессор в режим энергосбережения. Если не стоит задача микроамперы ловить, то можно забить. Хост сам даст RESET когда захочет с вами поработать.

Цитата(SanvaldYV @ Jan 29 2018, 12:30) *
#define USBD_STATE_SUSPENDED 4 - по названию понятно, что перевод в некое остановленное состояние, но не знаю в каких случаях хост выполняет перевод подключенного девайса в состояние suspend и выводит из этого состояния (resume), у меня при работе с CDC такое состояние не возникало

Это состояние более низкого уровня. Выход из SUSPEND происходит через RESUME, RESET и Enumeration. Пока "жив CDC" не может быть суспенда.
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 Текстовая версия Сейчас: 24th May 2018 - 13:38
Рейтинг@Mail.ru


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