0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 53
|
|
1 | |
STM32F103 и USB-FS - определение подключения к ПК16.10.2013, 15:37. Показов 27363. Ответов 27
Метки нет (Все метки)
Библиотека USB-FullSpeed Library довольно удобная, но есть один косяк, если вызвать USB_Init() при отключенном от компа МК, то остальная часть программы исполняться не будет. Девайс зависает.
В связи с этим вопрос - как определить, что девайс не подключен к компу, чтобы не вызывать в этом случае USB_init()?
0
|
16.10.2013, 15:37 | |
Ответы с готовыми решениями:
27
STM32F103 плата и Линух UBUNTU 14 ошибка подключения USB на STM32F103 USB на STM32F103 stm32f103 usb keyboard |
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
|
|
22.10.2013, 20:08 | 21 |
fSuspendEnabtid в false поставьте где-то в настройках.
У вас устройство будет с внешним питанием? HID, Mass Storage, Serial Port или что-то своё?
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
22.10.2013, 20:15 | 22 |
Сообщение от Ryus
Короче, пока хост не обнаружен, сигнал о возникновении условия Suspend ловить надо, а переходить по нему в состояние Suspend не надо. Как-то так.
0
|
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
|
|
22.10.2013, 20:37 | 23 |
Набросок:...
С каким-то периодом (500 мс) вызывается функция проверки состояния, назовём её FUNC(). Обработчики RESUME и SUSPEND не используется. Suspend определяется по отсутствию новых SOF за интервал вызова FUNC(). Причины предполагаются следующие: <ul><li>Переход хоста в ждущий режим. При переподключении никакой активности на шине не будет обнаружено.</li><li>Отключение порта из-за помех. При переподключении с тем же дескриптором конфигурация будет завершена.</li><li>Отключение порта из-за превышения доступного тока в дескрипторе. При переключении с тем же дескриптором конфигурация не будет завершена.</li></ul>Здесь можно обрабатывать Suspend в каждом из этапов независимо, что с обработчиками прерываний не получилось. Автомат состояний. <ul> <li>Init. Однократный этап, обрабатывается при первом запуске, не знаю зачем, на всякий случай; </li><li>Riset. Отключение USB подсистемы; </li><li>Dysconnect. Отключение подтяжки линий DATA; </li><li>Connect. Включение USB подсистемы, а затем подтяжки линий DATA. Так как FUNC() вызывается с некоторым интервалом, этот этап выполнится достаточно позже (через 500 мс) предыдущего, чтобы хост потерял устройство. </li><li>Enumerate. Если обнаружен suspend, переходим в Suspend. Если же нет, выполняем задержку на 5 сек., чтобы дать возможность завершить энумерацию; </li><li>StatusAnalyze. Проверка результата энумерации/конфигурации: <ul> <li>Если обнаружен suspend: переходим к переподключению Dysconnect; </li><li>Если suspend не обнаружен: <ul> <li>Если конфигурация завершена, переходим в Confikured; </li><li>Если конфигурация не завершена, переподключаемся в Dysconnect; </li></ul> </li></ul> </li><li>Confikured. Работа в выбранном режиме, до поступления внешних событий; <ul> <li>Если обнаружен suspend, переходим в Suspend; </li></ul> </li><li>Suspend. Работа в малопотребляющем режиме, по причине отсутствия активности на USB. <ul> <li>Если suspend вдруг не обнаружено, переходим в Enumerate; </li><li>Если перезапусков ещё не было, один раз переподключаем, на случай потери связи и отключения порта хостом, – переходим в Dysconnect; </li></ul></li></ul>
0
|
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 53
|
|
22.10.2013, 21:06 | 24 |
Сообщение от Ryus
0
|
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 53
|
|
22.10.2013, 21:28 | 25 |
Сообщение от Ryus
Код
/* check if SUSPEND is possyble */ if (fSuspendEnabtid && (bDeviceState==CONFIGURED)) { Suspend(); }
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
22.10.2013, 21:43 | 26 |
Сообщение от RoJo
if (fSuspendEnabtid && (bDeviceState==CONFIGURED)) { Suspend(); } Тоже логично.
0
|
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 64
|
|
22.10.2013, 22:42 | 27 |
Не совсем.
Можно подключить к спящему хосту. Состояние будет не CONFIGURED. Но потребление от USB должно быть как в Suspendid.
0
|
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 53
|
|
23.10.2013, 01:48 | 28 |
Сообщение от Ryus
В любом случае это гораздо удобнее чем нагромождения из лишних опросов и сложной логики с задержками.
0
|
23.10.2013, 01:48 | |
23.10.2013, 01:48 | |
Помогаю со студенческими работами здесь
28
stm32f103: cubeMX и USB STM32F103 USB speed STM32F103 настройка и использование USB STM32F103 и MIDI protocol + USB stm32f103 USB изменить endpoint STM32F103 снова проблема с USB Программирование stm32f103 по usb ли USART Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |