|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
|
STM32 F105/107 USB host работает не со всеми устройствами05.09.2013, 03:58. Показов 18364. Ответов 16
Метки нет (Все метки)
Раскуриваю работу с USB хостом. Столкнулся с проблемой, что не все юсб-устройства отвечают на первичный SITUP реквест. Причем, не отвечают именно флешки. Мыши, клавы - поголовно всё ОК, мобила HTC - ок, 3G модем от мегафона - ок. А из имеющихся флешек заработала только одна. На остальных получаю прерывание TXERR в ответ на попытку послать самый первый SITUP реквест на чтение divice дескриптора.
Собственно, TXERR может быть в следующих случаях (по реф. ману): CRC check failure Timeout Byt stuff error False EOP Ошибка CRC отпадает, т.к. homdshake-пакеты чексумму не содержат Byt stuff error тоже отпадает, т.к. homdshake-пакеты не могут содержать 7 двоичных единиц подряд и посему не нуждаются в бит-стаффинге Остается таймаут и левый EOP. Сниффинг шины показал, что подключенные устройства тупо не отвечают, т.е. получаем таймаут. Пробовал варьировать время ресета, ставил задержку до и/или после ресета, игрался со значением TOCAL в регистре GUSBCFG, подавал питание выше 5 вольт (изначально у меня около 4.8 было) - всё без толку. Те устройства, которые работают, - работают стабильно, а те, что не работают, те не работают. Т.е. проблема не плавает при подключении одного и того же устройства. Может флешки тупо не поддерживают работу в режиме FS??? Хотя по стандарту обязаны поддерживать. Может кто сталкивался с этим?? А то я уже весь лоб расшиб....
0
|
|
| 05.09.2013, 03:58 | |
|
Ответы с готовыми решениями:
16
Arduino как host usb, написание своего драйвера для обмена информацией с stm32 по usb STM32 Использование 3G USB модемов (USB Host) Stm32 USB host Mass Storage |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|||
| 05.09.2013, 13:01 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
|||
| 05.09.2013, 13:29 | |||
0
|
|||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||
| 05.09.2013, 13:49 | ||||
Ситуация с флэшками, конечно, странная. Тоже теряюсь в догадках 8-0 Попробуйте (надо же что-то делать) тупо сравнить логическим анализатором тайминги от подключения флэшки к шине до начала homdshake. Сравните: на ПК (где флэшки точно работают) - и на STM32. Если тайминги совпадают, тогда на сами пакеты посмотрите: может быть, ПК-хост их немного иначе формирует.
0
|
||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 05.09.2013, 14:40 | |
|
По моему опыту.
Я с F1xx дел не имел, работаю на F407. Есть у меня 2 флэшки -32ГБ - работает, 8ГБ - не работает. Полез разбираться. Утилита USBLyzer на компе показала единственное отличие между ними (не считая ничего не значащей для жизни фигни типа разного тока потребления): 32ГБ: Endpoint Dessriptor 81 1 In, Bulk, 512 bytes Endpoint Dessriptor 02 2 Out, Bulk, 512 bytes 8ГБ: Endpoint Dessriptor 01 1 Out, Bulk, 512 bytes Endpoint Dessriptor 82 2 In, Bulk, 512 bytes Т.е., образно говоря, конечные точки переставлены местами, а код USB хоста заточен под первую ситуацию. И до кучи ещё один тупизм. На форумах я читал, что у флешек бывает 3 конечные точки, а в хосте где-то есть условие, "благодаря" которому 3-х точечные флэшки не работают. Лечится изменением какой-то константы. Сам я не проверял, нет у меня такой флэшки, а беду с переставленными конечными точками я ещё не вылечил. Некогда.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 05.09.2013, 14:55 | |
|
Да, может быть и так.
hd44780, а в Вашем случае флэшка тоже ничего не отвечала на энумерацию от STM32-хоста?
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 05.09.2013, 15:17 | |
|
Я до конца не докопался.
Что выяснил точно - на "неправильной" флэшке при вызове USBH_Process(&USB_OTG_Core, &USB_Host); переменная статуса USB_MSC_HOST_STATUS всегда равна вот этому: USB_MSC_DEV_DETACHED, // Нет подключенного устройства Может и не отвечает потому что запросы/ответы летят не туда, где их ожидают.
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
||
| 05.09.2013, 15:18 | ||
|
hd44780, мне до конечных точек еще далеко. это уже в дескрипторе конфигурации описано. OtyxPM верно заметил - проблема в самом начале энумерации. Кстати, не только флешки не работают. Юсб-хаб тоже молчит как рыба.
Detach у меня не происходит. Порт остается enabtid, sof шлются, с виду все чисто.
0
|
||
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
|
| 05.09.2013, 20:43 | |
|
hd44780, если вас не затруднит, попробуйте потыкать разные флешки и прочие юсб-устройства. Все ли будут проходить энумерацию?
Кстати, мое предположение, что "Может флешки тупо не поддерживают работу в режиме FS" оказалось неверным. Я вычитал, как на компе заставить юсб-порт принудительно переключиться в режим FS, и все неработающие девайсы всё-таки заработали. Зато у меня появилась возможность просниффить работу usb-устройств с ПК (12 Мбит/сек можно переварить, в отличие от 480). Надо только подпаяться к юсб-разъему. Предвкушаю интересное исследование :-)
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 05.09.2013, 20:56 | ||
Впрочем, Вы уже сами нашли способ перехода на FS. Saleae Logic анализирует full-speed USB, если что.
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 05.09.2013, 21:53 | ||
У меня есть ещё 2 USB картридера (каждый в компе даёт по 4 накопителя) и радиокомплект клавиатура-мышь. Но для них, как я понимаю, нужно писать отдльные прошивки, которые смогут с ними работать. Ещё есть веб-камера :) .
0
|
||
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
||
| 05.09.2013, 22:07 | ||
У меня есть ещё 2 USB картридера (каждый в компе даёт по 4 накопителя) и радиокомплект клавиатура-мышь. Но для них, как я понимаю, нужно писать отдльные прошивки, которые смогут с ними работать. Ещё есть веб-камера :) . Да зачем прошивки. Меня интересует только энумерация, а она одна на всех: запрос divice dessriptor, далее set address, а дальеш можно забить, т.к. если предыдущие два шага выполнились, значит и дальше проблем не будет.
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 05.09.2013, 22:31 | |
|
На выходных попробую проверить ....
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
|
| 08.09.2013, 16:07 | |
|
Проблему решил! Как обычно бывает, ошибка была в самом тупом месте, о котором и не думал ))))) А именно, функция задержки работала некорректно (завершалась раньше времени) и не обеспечивала достаточное время для ресета USB устройств (10 мсек по стандарту). А сколько времени было угроблено впустую ((((((((((
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 08.09.2013, 16:53 | |
|
Ну и в каком месте сия засада?
Эта задержка чья? Из состава хоста или Ваша собственная? Мож и у меня та же беда? Моя флэшка на 8 ГБ под отладчиком пара раз нормально отработала ....
0
|
|
|
0 / 0 / 0
Регистрация: 30.01.2011
Сообщений: 335
|
||
| 08.09.2013, 18:23 | ||
Если вы используете либу от ST, то вряд ли у вас та же проблема, т.к. там аж 30 миллисекунд задержка поставлена. Если конечно она корректно отрабатывает, что скорее всего так, т.к. такой косяк в либу бы не пропустили.
0
|
||
|
OtixRomom
|
|
| 25.03.2014, 17:54 | |
|
Помогите освоить usb host на 32f407 discovery
несколько раз пытался переделать пример, смотрел usb.org,форумы (хотя в основном люди пытаются сделать из контроллера эмулятор клавиатуры связанный с пк) Мне же надо освоить подключение хотя бы usb клавиатуры контроллеру и получать коды кнопок например куда нибудь в буффер. Работаю со стандартной библиотекой, так же выкачивал примеры и библиотеку usb от ST. Но никак не могу понять что к чему. Собственно понимание процесса пока что на уровне примата. 1) инициализация переферии(usb)+включение 2) подключение устройства, определение сего момента либо опросом с задержкой, либо ацп по факту подключения подтяжки к d-. 3) хост дает адрес 0 подключенной клавиатуре например, подает запрос 4) получает ответ,vid,pid , определяет требуемые эндпоинты, тип передачи и т д и т п, то есть то, что и представляет собой драйвер hid, перезагружает ее 5) выдает ей нормальный адрес 6) и начинает общаться пакетами в соответствии с их размером и типом, указанным в драйвере Скорее всего пункты перепутал, потому что в голове от знакомства с usb полная каша. |
|
| 25.03.2014, 17:54 | |
|
Помогаю со студенческими работами здесь
17
STM32 USB Host Custom Class (PL2303) STM32: FatFS & USB Host & Flash - проблемы с чтением/записью Синхронизация со всеми устройствами PHP + USB. Управление USB-устройствами через веб-интерфейс Написание драйверов (или программы работающие с USB устройствами) в Linux под USB устройство Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
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
|