С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
1

STM32F107 HOST USB_OTG_MSC запись/чтение на USB флешки, не все распознаются.

03.03.2021, 08:31. Показов 1993. Ответов 13

Author24 — интернет-сервис помощи студентам
Здравствуйте! У меня появилась задача чтения/записи в файл на флешку.
Для примера, реализовал проект с сайта https://narodstream.ru/stm-uro... s-chast-2/ на STM32F107 (по подобию). В основном все работает: чтение и запись файлов.
Пробовал на 20 разных флешках, разных размеров и древности, включая 64 Гб. До 16 ГБайт включительно практически все работают, но есть случаи, когда флешки не связываются, т.е. на стадии HOST_ENUMERATION, когда запрашиваются первые 8 байт дескриптора устройства, от них нет ответа. Флешки от 32 Гб не отвечают все.
Подскажите, в чем тут суть, ведь все USB устройства должны отвечать на стандартные запросы на FS?
Где покопать, в каком направлении?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2021, 08:31
Ответы с готовыми решениями:

Не распознаются USB-наушники после смены железа (Питание на USB-портах)
Доброго времени суток! Около года назад были куплены USB-наушники Bagisson TH9002 (по которым в...

Флешки не распознаются...
В общем суть проблемы: мастер переустановил винду ХР и вроде все, что полагается сделал. Все...

Запись и чтение информации из сектора флешки
Когда-то получалось на C++ c помощью WinAPI записать текст в сектор флешки и считать текст из...

stm32f107 любимый usb 2
Здравствуйте уважаемые форумчане! У моего коллеги возникли проблемы с работой usb манипулятором....

USB on stm32f107 + mass storage
Прошу помочь новичку. Задача-сделать хост на stm32f107, подключить к нему флэшку и определить, что...

13
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
03.03.2021, 10:03 2
Цитата Сообщение от AndreyKozh Посмотреть сообщение
Где покопать, в каком направлении?
Check schematics and layout of SDcard's power supply. Some bigger SD cards consume much, so, the PS should be ready for this.
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
03.03.2021, 10:45  [ТС] 3
Подключил источник питания способный давать ток до 3000 мА, ситуация не изменилась.
0
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
04.03.2021, 21:58 4
Цитата Сообщение от AndreyKozh Посмотреть сообщение
ситуация не изменилась.
конденсатор на ноге питания флешки есть? На ногу питания надо 100мкФ ставить, и фильтр по питанию (0,1мкФ). В момент инициализации флешка проваливает питание и не стартует.

Еще проверьте частоту SPI (у вас ведь обмен по SPI?). На 18МГц на F107 он работает не стабильно, т.к. обозначенный максимум по ДШ у нее - 16МГц.
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
05.03.2021, 08:01  [ТС] 5
Voland_ прошу прощения, я не правильно обозначил тему, задача не сделать USB флешку, а читать записывать на USB флешки.

Тема правильней должна звучать STM32F107 HOST USB_OTG_MSC запись/чтение на USB флешки, не все распознаются.

Интересно, а можно редактировать название темы или надо создавать новую?

Voland_ за ответ спасибо, в прошлом рабочем проекте я писал в файлы на sd карты и там тоже были случаи, когда карты не стартовали, сейчас проверяем схемотехнику, но точно конденсатора по питанию карты нет, будем исправлять и тестить, еще раз спасибо.

По данной же теме, подключил анализатор LA1010 на ножки D+ D- для анализа обмена данными, посмотрел кадры пакетов с условно рабочей и не рабочей флешки. После сброса в 100 мс, по шине вижу, что каждые 1.2 мс идут SOF пакеты.
При первом обращении к флешки:
SYNC PID_SETUP Adress=0 Endpoint=0 CRC_OK EOP
далее SYNC PID_DATA0 bmReqestType=128 bReqest=6(GET_DESCRIPTOR) wValue=256 Descriptor=DEVICE Index=0 wIndex=0 wLength=8 CRC_OK EOP
и тут рабочая флешка отвечает (у условно не рабочей нет данного ответа) SYNC PID_ACK EOP.
Далее в течении 10 мс (для разных флешек разное время) идут пакеты на запрос чтения
SYNC PID_IN Adress=0 Endpoint=0 CRC_OK EOP
с ответом от флешки о занятости SYNC PID_NAK EOP.
А через 10 мс она передает все данные (там много) и все работает.
А вот почему нет ответа от условно нерабочих я не могу понять (на ПК они работают).
0
Модератор
Эксперт по электронике
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,712
05.03.2021, 09:11 6
Цитата Сообщение от AndreyKozh Посмотреть сообщение
Интересно, а можно редактировать название темы или надо создавать новую?
пользователь переименовать не может
может модератор, что я и сделал
1
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
05.03.2021, 09:12  [ТС] 7
Спасибо
0
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
06.03.2021, 10:04 8
Цитата Сообщение от AndreyKozh Посмотреть сообщение
я не правильно обозначил тему
)). Слово "флешка" не обязательно обозначает USB flash disk. Это может быть и SPI flash, но исходя из Вашего первого поста я себе представил это как FLASH sd card ).

Цитата Сообщение от AndreyKozh Посмотреть сообщение
у условно не рабочей нет данного ответа
Проверьте клоки МК. У вас же он с внешним кварцем? Убедитесь, что конфигурация МК его использует.

Опять же, проверьте схематику USB - все ли пины на местах и сконфигурированы, рабочий ли драйвер питания для девайсов с внешним питанием (как раз для флешек). Кстати, бывают случаи, когда драйвер выдает 5 вольт без нагрузки, но при подключении нагрузки просаживается, не выполняя свою роль. На цифровом анализаторе вы это, естественно, не увидите.
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
09.03.2021, 14:36  [ТС] 9
Voland_ спасибо за содействие. Проблема разрешилась.
Как говорят, "дело оказалось не в бобине", причина всему софт (драйвер).

Скачал с сайта STM пример en.stm32_f105-07_f2_f4_usb-host-device_lib.zip, там старый подход к драйверу (без HAL и кубика),
адаптировал под свою плату и все заработало. Пока точно не разобрался в каком месте была причина (в чем разница),
но все USB флешки подхватывает.

Даже 64 Гб флешки, если уменьшить раздел до размера 16000000000, а потом все форматировать по FAT32 c размером сегмента 4096, то все файлы замечательно записываются/читаются.
0
0 / 0 / 0
Регистрация: 03.03.2021
Сообщений: 6
17.03.2021, 12:53  [ТС] 10
Цитата Сообщение от AndreyKozh Посмотреть сообщение
Даже 64 Гб флешки, если уменьшить раздел до размера 16000000000, а потом все форматировать по FAT32 c размером сегмента 4096, то все файлы замечательно записываются/читаются.
Хотелось поправить, работают любые большие usb флешки, с любой разметкой, главное, чтобы форматированные под FAT32.
0
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
17.03.2021, 13:45 11
Цитата Сообщение от AndreyKozh Посмотреть сообщение
Хотелось поправить
естесно. Это уже вопросы логики FAT, и вопрос никак не касается способа передачи - будь-то MSC (USB), SATA или PCI-E.

PS: в эпоху TI Stellaris (Cortex M3 от TI, подобный Вашему) я делал чтение с внешнего ноутбучного винчестера, размером 500гигов. Сам размер по сути значения не имеет, но FAT32 отлично работала. Единственной загвоздкой в этом был драйвер питания внешнего устройства по OTG - некоторые винчестеры просто не могли запуститься.
0
4021 / 2567 / 430
Регистрация: 09.09.2017
Сообщений: 11,449
17.03.2021, 14:07 12
Цитата Сообщение от Voland_ Посмотреть сообщение
в эпоху TI Stellaris (Cortex M3 от TI, подобный Вашему) я делал чтение с внешнего ноутбучного винчестера
А можно подробнее? Работа с хардами это тема интересная, но у меня до нее руки дойдут не скоро (если вообще дойдут). Но хотя бы общий принцип узнать было бы любопытно.
Я так полагаю, нормально работать можно только с IDE, поскольку SATA слишком быстрые для обычных контроллеров?
0
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
17.03.2021, 14:43 13
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я так полагаю, нормально работать можно только с IDE, поскольку SATA слишком быстрые для обычных контроллеров?
не-не ) я использовал USB OTG для подключения внешнего винчестера ). IDA или SATA не подключал
0
4021 / 2567 / 430
Регистрация: 09.09.2017
Сообщений: 11,449
17.03.2021, 15:58 14
Понятно
0
17.03.2021, 15:58
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2021, 15:58
Помогаю со студенческими работами здесь

STM32F107. Модуль USB не передает данные
Добрый день. Не нашел отдельной ветки для STM-контроллеров, поэтому пишу сюда. Имеется контроллер...

Перенос кода USB с stm32f103 на stm32f107
Добрый день! Недавно за месяц-другой создал проект работающего композитного USB устройства в...

Все флешки отображаются как USB накопитель
С самими флешками все нормально, через сторонние утилиты для работы с дисками, например, их...

Не определяется все флешки: неизвестное usb устройство
Здравствуйте. Проверил комп на вирусы авастом. После этого перестали определяться флешки. Все...

Чтение и запись USB-Flash
Добрый день друзья, вот такой вопрос меня начал мучить. Я нашёл код который пишет информацию на...

Запись/чтение через USB
есть кодирующее устойство подключенное через USB, необходимо создать сеть 1-Wire с этим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­х­р­о­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru