|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
Странное поведение USB Host (флэшка). STM32F4, Coocox19.06.2013, 16:28. Показов 11698. Ответов 12
Метки нет (Все метки)
Здравствуйте.
Работаю с USB флэшкой на STM32F4Dyscovery. Была цель читать с флэшки jpg файлы и показывать их на дисплее. Для примера сделал некую "фоторамку". Дисплей st7735. Собственно говоря, эта часть (jpg-дисплей) работает нормально. Проблема с флэшкой. Как известно, работа с USB хостом, грубо говоря, состоит из 2-х этапов: 1. Инициализация хоста (функция USBH_Init). 2. Отработка событий хоста (типа включили/выключили флэшку). Это функция USBH_Process. Ну с инициализацией всё понятно :). такм даже кодов ошибок и прочего не предусмотрено. А вот с USBH_Process странности. Первый её вызов проходит успешно - читаются всякие там параметры, имя флэшки, серийник и т.д. т.п. FatFs инициализируется, файлы, каталоги читаются-пишутся, jpg-и отображаются. Шик и блеск на 100%. Но её надо вызывать в цикле, чтобы знать, что, например, флэшку отключили. Так я и делал. И получил шиш с маслом. После 2-го и всех последующих её вызовов USBH_Process хост впадает в некий ступор, в котором функции не возвращают никаких ошибок, но сектора не читаются. При этом ломается уже сама FatFs, получая, например, вместо MBR диска какой-то мусор, оставшийся в её секторном буфере от последней успешной операции. Пока вышел из положения одним вызовом USBH_Process вне основного цикла: // Инициализация USB хоста UB_USB_MSC_HOST_Init ( ); while ( UB_USB_MSC_HOST_Do ( ) != USB_MSC_DEV_CONNECTED ); ............... .......... вся дальнейшая работа .......... Эти функции по сути обёртки 2-х упомянутых мною функций. Это работает (каталог и файлы читаются хоть миллион раз), но потеряна возможность вытащить-вставить флэшку на лету. Вопрос собственно в том, как это вылечить? По ходу ещё один вопрос из этой же сферы - как сделать "безопасное извлечение накопителя". Типа как в винде и на разных роутерах (например, Zyxel Kiimeti Giga)? Сам придумал только по кнопке демонтировать FatFs, деинициализировать хост (USBH_DeInit) и выключать питание флэшки. Но правильно ли это? И второе. Как я после этого узнаю, что флэшку реально вытащили из гнезда, чтобы заново инициализировать хост и ждать следующего подключения флэшки? Или STM32F4 на такое не рассчитан? Спасибо. [212.28 Кб]
0
|
|
| 19.06.2013, 16:28 | |
|
Ответы с готовыми решениями:
12
USB Host для флэшки на Coocox (STM32F4) stm32f4 discovery - проблема с работой USB Host. stm32f4 usb host+spi slave есть ли смысл |
|
0 / 0 / 0
Регистрация: 14.03.2011
Сообщений: 107
|
|
| 19.06.2013, 16:43 | |
|
У USB была процедура, которая вызывалась раз в 50мс для того чтобы проверять наличие устройства. Но, кажется, это была задача именно слейва. Может хост читает эти "события" ?
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
| 19.06.2013, 17:27 | |
|
Плата F4-Dyscovery?
О том, что флэшку реально вытащили из гнезда, можно узнать от монитора питания USB. Наверно (в схему ещё не лазил). UPD: Посмотрел - нет, от этого монитора информацию о потребляющей нагрузке не получишь, только о перегрузке по току. Ищем дальше...
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|||||||||||
| 19.06.2013, 17:37 | |||||||||||
|
А вот это разве не то?
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
||
| 19.06.2013, 17:47 | ||
|
HikuTos, это было в UsbObdiv на AVR :) . Здесь это всё аппаратно делается ...
OtyxPM, да, плата f4Dyscovery, но тот монитор только КЗ на разъёме покажет (точнее, что железка по ту сторону разъёма жрёт ток свыше 500mA). Больше ничего он не умеет.
А если её не вызывать, то их и не будет. Также как и всех остальных (VID, PID, серийник, имя устройства, ...). А если вызывать, хост впадает в шок.. Ещё на IAR-е проверю. Там какая-то другая реализация, которая в кокосе вообще не работает. Но интересует именно кокос. Тут где-то есть моя тема про это.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||||
| 19.06.2013, 18:06 | ||||||
|
Да, странно как-то. Ведь USBH_Process() подразумевается, что будет вызываться периодически. Кокос, что ли дурит? 8-0
Между прочим, в самом USBH_Process() есть и проверка на disconnect, и DeInit... Может, быть этот кусочек отдельно попробовать вызвать вместо повторных USBH_Process()?
0
|
||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 19.06.2013, 18:13 | ||
0
|
||
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 19.06.2013, 19:10 | |
|
Кусочек проверю позже, спасибо за идею, а обработчики все есть (файл usbh_usr.c)
0
|
|
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
| 19.06.2013, 23:41 | |
|
OtyxPM, на кусочках вроде заработало :) .
Подключение/отключение ловит и сектора читать способность не утратил ... Тема пока закрыта, дальше видно будет. Вопрос остался лишь в организации безопасного отключения флэшки.
0
|
|
|
t000r
|
|
| 13.11.2014, 17:54 | |
|
У меня похожая беда.
Камень STM32f105, пример от STM32F105_107_IAP_USBHost обработчик прерывания USB не определяет отключение флэшки (регистр GINTSTS). Маска на прерывание по diconnect взведена (регистр GINTMSK). Кто что скажет? |
|
|
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
|
|
| 13.11.2014, 18:10 | |
|
Немного понял, но добавлю свои замечания.
USBH_Process нужно вызывать постоянно (переодически) в отдельном потоке (если есть ОС) и как можно чаще (по моим наблюдениям достаточно каждую 1 мс). В USBH_Process как раз и обрабатываются события подключения\извлечения флешки и вызовы передаются в функции юзера (usirs functions).
0
|
|
|
t000r
|
||
| 14.11.2014, 00:28 | ||
Дело в том что не появляется хардварный флаг извлечения флешки в недрах хост-контроллера. И, само собой, не генерится соответсвующие прерывание, которое за собой тянет изменение программных переменных, а уже они в свою очередь, обрабатываются в USBH_Process. |
||
|
1 / 1 / 0
Регистрация: 09.02.2012
Сообщений: 693
|
||
| 14.11.2014, 01:18 | ||
0
|
||
| 14.11.2014, 01:18 | |
|
Помогаю со студенческими работами здесь
13
STM32F4 USB HID Host отправка данных в девайс STM32F4 - USB Host+FreeRTOS под IAR виснет Странное поведение USB мыши на STM32F105 странное поведение USB модемов на ga-ma770-ud3 win7. Stm32f4 + HD44780 + Coocox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|