|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||||||
STM32F205 Работа с USB09.08.2019, 17:02. Показов 4448. Ответов 20
Товарищи возникла проблема с работой по USB и STM32F205.
Создал я, значит, дескриптор на три устройства: MSC, CDC #1 & RNDIS (CDC #2) Кликните здесь для просмотра всего текста
Запускаешь устройство, подключаешь устройство по USB и ВУАЛЯ!!! Три устройства определяются и работают (кроме одного - RNDIS, так как неправильно сконфигурирован, а точнее вообще не сконфигурирован). И всё работает прекрасно. Флешка определяется - файлы вижу. Виртуальный ком-порт работает - данные шлются. НО! После перезагрузки устройства не вынимая кабеля устройство становиться неопознанным. Далее после переподключения кабеля появиться моя флешка, но ком-порт уже отвалился и подключится я к нему не могу. Кто подскажет куда копать? Как правильно перезагрузить устройство, чтобы оно нормально определялось по USB.
0
|
||||||
| 09.08.2019, 17:02 | |
|
Ответы с готовыми решениями:
20
STM32f205 && USB MSC HOST STM32F205 USB HOST подключение клавиатуры (проблемы)(решено) STM32f205 КЗ по питанию |
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
||
| 09.08.2019, 23:04 | ||
|
Могу предположить, что подтяжка линии D+ осуществляется внешним резистором, который жёстко припаян. При перезагрузке STM забыл, что он подключен, а компьютер этого не заметил и продолжает пытаться с ним работать. Могу предположить, что когда после этого передёрнули устройство, то ОС компьютера не успела удалить старый COM-порт и новый создался с другим номером.
1
|
||
|
4078 / 2676 / 432
Регистрация: 09.09.2017
Сообщений: 11,887
|
|
| 09.08.2019, 23:38 | |
|
В vusb это делается удерживанием состояния SE0 (D+ = D- = лог.0). Причем это работает лучше, чем управление подтяжкой!
1
|
|
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||
| 10.08.2019, 11:53 [ТС] | ||
|
Благодарю, буду копать, если возникнут вопросы напишу, да и если получиться с подтяжкой решить вопрос, тоже напишу сюда
0
|
||
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
|
| 10.08.2019, 12:47 | |
|
Действительно, я почему-то раньше не подумал. Можно в самом начале программы (ещё до инициализации USB) перевести пин D+ в режим GPIO (PushPull или OpenDrain) и выставить его в 0 на какое-то время. И тогда не нужно управление подтяжкой. А после этого уже можно инициализировать USB.
А я не подумав развёл уже две платы с лишним транзистором, хотя можно было без него обойтись
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||
| 10.08.2019, 15:44 | |||
|
а у HAL есть специальный каллбэк для подключения линии УСБ, имени я сейчас не помню ![]() Добавлено через 1 минуту без подтяжки никакой USB работать не будет
0
|
|||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||
| 12.08.2019, 10:04 [ТС] | ||
|
0
|
||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
|
| 13.08.2019, 12:08 [ТС] | |
|
И всё-таки взываю на помощь к форумчанам.
Решив этот вопрос с подтяжкой и перезагрузкой устройства. Появилась чутка другая проблема. Запускаем устройство, вставляем USB и диспетчер устройств показывает, что определено 3 новых устройства*. Открываем VCP порт - пишем пару команд (CLI), получаем ответы - тут всё хорошо. Перезагружаем устройство с помощью команды "reset". И немного ждем. VCP - отваливается не надолго. Далее вытаскиваем USB-кабель и вставляем его обратно. Появляется ТОЛЬКО флешка! VCP не появляется. И тут я в ступоре уже второй день сижу и не могу понять. Такое ощущение, что устройство заново не хочет настраиваться. Может кто подскажет, откуда начать поиски проблемы? *Думал, что два CDC конфликтуют друг с другом убрал RNDIS - история не изменилась.
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||
| 13.08.2019, 15:39 | |||
|
мне нравится USBLyzer
0
|
|||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||||
| 13.08.2019, 16:59 | |||||||
|
Искандер_61,
Дело было вот какое, линия D+ была подтянута к VBUS. Когда пропадало питание устройства линия D+ была все равно подтянута. Драйвер не заметил переподключения устройства, а посчитал (это я так думаю), что устройство просто перестало отвечать. Ресет устройтва происходит когда состояние линии D+ меняется с 0 в 1 (если я правильно помню). Когда мы кабель выдергиваем и вставляем заново, то так и происходит. Как я решил проблему: Завел подтяжку D+ на пин а не на VBUS. При включении устройства, инициализирую пин на выход и ставлю 0. Инициализирую USB и затем поднимаю пин в 1. Таким образом сообщаю хосту, что готов общаться. Вот вроде кусок из того проекта.
Добавлено через 10 минут Искандер_61, а еще вроде была проблема, что если мы подруибили CDC и открыли терминал на этот порт, то если мы выдернем шнурок не закрыв порт в терминале, то при включении устройство не определится. Пока мы не освободим порт и снова переподключим устройство. Тут я не понял как решать проблему. В своей программе, я просто закрываю порт, если устройство не ответило в течение таймаута.
0
|
|||||||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||||||||||||||||||
| 13.08.2019, 17:05 [ТС] | ||||||||||||||||||
|
При первом включении всё шикарно определяется и работает, а вот при переподключении USB-кабеля, дескриптор с какого-то перепоя меняется. Картинки скидываю. Плюс заметил, что если на одном устройстве пробегает команда "Close", то на другом данная команда отсутствует (пока не разобрался как узнать, кто-есть кто). =============================== И еще замечание: В файле usbd_usr.c есть команды, отображающие что произошло: я перенаправил вывод на дебажный USART. И вот, что получаю:
0
|
||||||||||||||||||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||
| 13.08.2019, 17:10 [ТС] | ||
|
Дело в том, что я даже порт не открываю я просто смотрю появившиеся порты в программе SmarTTY или же в диспетчере устройств.
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||||||
| 13.08.2019, 17:50 | |||||||
|
ищи функцию HAL_PCDEx_SetConnectionStateвот как она реализована у меня
0
|
|||||||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
||
| 13.08.2019, 17:59 [ТС] | ||
|
А два, я сейчас порулил и вручную подтягивал на землю этот пин. Всё тоже самое. Появляется флешка, а vcp-порт отваливается. И три: Что скажешь по поводу дескрипторов? Как вообще может такое происходить?
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
||||
| 13.08.2019, 18:14 | ||||
![]() подниму старые проекты может что то найду как это можно вручную синхронизировать? и еще
0
|
||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 13.08.2019, 18:21 | ||
|
Искандер_61,
0
|
||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
|||
| 13.08.2019, 18:23 [ТС] | |||
|
0
|
|||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
|
|||||||||||
| 13.08.2019, 18:23 | |||||||||||
|
вот нашел
но я совершенно не помню рукописные это функции или входят в комплект SPL
0
|
|||||||||||
|
Почетный модератор
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
|
||
| 13.08.2019, 23:10 | ||
|
0
|
||
|
0 / 0 / 1
Регистрация: 28.09.2013
Сообщений: 61
|
|||||||||||||||||
| 14.08.2019, 12:01 [ТС] | |||||||||||||||||
ValeryS, подтяжка оказалась не причем. Действительно проблема оказалась в дескрипторе. Вот такой костыль я придумал в прерывании и всё теперь работает. Правда чуть позже буду выяснять по какой причине и где меняется этот дескриптор. Сейчас пока другая задача стоит.
Всё оказалось проще! Не нужны были костыли. Достаточно было указать const в определении дескриптора, как и написал Humanoid.
0
|
|||||||||||||||||
| 14.08.2019, 12:01 | |
|
Помогаю со студенческими работами здесь
20
STM32F205 SIM5320E АЦП stm32f205 NES эмулятор на stm32f205 STM32f205 + STMCube + Audio Example Работа с USB-token или usb с премудростями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|