реклама на сайте
подробности

 
 
> STM32H743 (NUCLEO) USB FS, Не работает (точнее работает редко)
hd44780
сообщение Aug 25 2018, 13:05
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Привет всем.

Есть плата NUCLEO-H743ZI. Пытаюсь запустить на ней USB (хост для флэшки, MSD в терминах ST) на данном чипе. За неимением никаких других примеров в качестве основы взял ST-шный куб.
USB - FS, тот, который разведен на плате (пины проца PA11, PA12).
Добавил куда надо управление питанием разъёма, светодиодик на плате засветился (также как и лампочка на флэшке).
Дальше глухо - проц видит, что что-то подключено (срабатывает юзерский хук), но флэшка не проходит энумерацию (бесконечно крутится в тщетных попытках получения дескрипторов).
Пробовал 2 примера - сгенеренный кубом и готовый FatFs_USBDisk_Standalone для платы STM32H743I-EVAL (естественно подчистив его от особенностей этой платы - ключ питания там управляется не напрямую пинами проца, а через I2C расширитель портов).
Результат примерно одинаковый - висяк на дескрипторах.

Проверял 2 флэшки, которые с полпинка запускаются на F439 и F105 процах. Но там работает старое USB ядро времён SPL. Для H7 этого драйвера просто нет.
Кубовый драйвер на F1/F4 я никогда не пробовал (не было нужды, и без него всё в шоколаде), равно как и не пробовал запускать старый Fx драйвер на H7. Даже не знаю, совместимы ли они.

Стек везде ставил 10 кил. FreeRTOS (и прочих аналогов) нет.

После нескольких дней ковыряний выяснилось следующее:

1. Стек, по крайней мере, на первый взгляд ни при чём - детали ниже (п. 3).
2. Плата питалась от ST-Link-овского USB питания, которое у меня хз почему 4-4.1в. После прохождения всех ключей на плате на USB разъёме получалось порядка 3.7-3.8в, иногда и меньше. Маловато как-то. Подал на плату внешние 5в от компового БП, на разъёме увидел нормальные 5 вольт. Слава Богу, одной проблемой меньше.
3. Самая загадочная на текущий момент вещь. Выяснилось, что прервание USB НИКОГДА не возникает. Никогда от слова "вообще". Доказано отладчиком и точкой останова в обработчике.
Точнее сказать - после шаманского бубна и фиг знает с какого перезапуска оно начинает возникать, и тогда всё чудесным образом начинает работать.
Под "начинает работать" я подразумеваю то, что юзерский callback драйвера с именем USBH_UserProcess вызывается сколько положено раз, в том числе с аргументом равным 2, что, согласно кубового талмуда означает готовность флэшки к работе.
FatFs пока не подключал. Пока дрова не начнут работать стабильно, пихать туда FAT имхо бессмысленно.

Прерывания там включаются так (выдрано с куба и тамошних примеров):

Код:

Код
    /* Peripheral clock enable */
    __HAL_RCC_USB_OTG_FS_CLK_ENABLE();

    /* Peripheral interrupt init */
//    HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0);      // генерит куб
    HAL_NVIC_SetPriority(OTG_FS_IRQn, 6, 0);      // Так написано в примере к плате STM32H743I_EVAL
//    HAL_NVIC_SetPriority(OTG_FS_IRQn, 1, 3);      // это используется в F439
    HAL_NVIC_EnableIRQ(OTG_FS_IRQn);

Пробовал разные приоритеты - ничего оно не даёт sad.gif


Битика в самом USB, отвечающего за вкл/выкл прерываний (таковые есть и в SPI, и во всяких там уартах), я вообще не нашёл ... Может плохо искал?
Могу выложить проект под атоллик, хотя там 99% ровно то, что генерит куб.
Оставшийся 1% это включение светодиодиков платы нуклео, чтобы без отладчика можно было хоть как-то понять, что там творится...

Кто-то пользовался USB хостом на H7, может я чего-то где-то не доделываю?
Или может где-то есть какие-то другие примеры? В своё время на Ф4 мне сильно помог пример немца http://mikrocontroller.bplaced.net/wordpress/ (по факту он оказался немного переработанным ST-шным примером, но всё равно), но у него нет ничего для H7.

Заранее благодарен.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016