Jump to content

    
MementoMori

STM32H743 и USB_HS

Recommended Posts

Добрый вечер, друзья.

Загрузил я в плату F746 Discovery  пример USB Host Mass Storage Class, в режиме HS (на плате есть USB PHY) подключил флешку - все нормально, читается, пишется.

То есть на заведомо исправной плате проверил заведомо исправный код.

Руководствуясь этим же примером склепал такой же проект для самопальной платы на H734.  Сразу не заработало. Камень другой и библиотека USB, которую калокуб копирует в папку, немного другая.

Анализирую работу функции USBH_Process

В процессе жизнедеятельности она выплевывает в "эфир" следующие сообщения

USBH_UsrLog("USB Device Connected");

USBH_UsrLog("USB Device Reset Completed");

Далее, pHost->gState  становится равным HOST_DEV_ATTACHED, а дальше тишина.

Я что хочу спросить - меня пока не интересуют причины и методы решения этой проблемы. Я загрузил этот код чтобы убедиться в правильности проектирования и трассировки узла USB_PHY. И вопрос мой такой - могу ли я, учитывая получение вышеуказанных сообщений от системы, считать, что аппаратная часть этого узла работоспособна и проблема скорее в коде? 

Дело в том, что  переработал первую версию платы и хочу ее перезаказать,  а USB_PHY - это единственный узел, в правильности проектирования и трассировки которого я не убедился на практике. Работа с флешкой у меня сейчас не на первом мести и я хочу понять, могу ли я эту проблему отложить на потом и заказывать плату, или же возможны проблемы в плате, которые нужно решать сейчас.

Что скажете?

Share this post


Link to post
Share on other sites

Оказывается, не было подключено прерывание...

Подключил, процесс пошел дальше, но не завершается.  Получаю сообщение "Invalid Class Driver". Или "Device not supporting %s class".

 

Класс же при инициализации подключается без ошибок

 

if (USBH_RegisterClass(&hUsbHostHS, USBH_MSC_CLASS) != USBH_OK)
  {
    Error_Handler();
  }

 Это как победить?

Share this post


Link to post
Share on other sites

Просто предварительный вопрос (пока что спрошу):

У Вас, как я понял, к H743-му подключен внешний ULPI-PHY (типа USB3300)? И он не работает так?

Я сейчас также собираю свою платку на H743  и попутно начинаю разбираться с софтом. Опять-таки от Куба пока что. Тоже предварительно могу сообщить, что заработал только FS HS USB. Но я покамест перескочил на работу с SDRAM и пока в другом направлении копаю.

Edited by AleksBak
добавил пропущенное слово

Share this post


Link to post
Share on other sites
2 hours ago, AleksBak said:

И он не работает так?

Что значит оно? Сама микросхема наверное работает, раз у меня доходит до device_attached и немного дальше. А вот "оно", если называть этим словом целостный проект, не работает. 

2 hours ago, AleksBak said:

заработал только FS HS USB.

Так FS или HS? Что именно заработало? 

 

Share this post


Link to post
Share on other sites
2 минуты назад, MementoMori сказал:

Что значит оно?

Что-то я как-то спонтанно все тут понаписал/понапутал.

Заработал USB FS приемопередатчик. С внешним ULPI USB3300 пока не заработал. Я пока с SDRAM разбираюсь и отложил это. У меня также плата в состоянии разработки.

У Вас USB HS построен с внешним ULPI так?

 

И этот внешний приемопередатчик не работает? Правильно?

 

Share this post


Link to post
Share on other sites
37 minutes ago, AleksBak said:

Что-то я как-то спонтанно все тут понаписал/понапутал.

Заработал USB FS приемопередатчик. С внешним ULPI USB3300 пока не заработал. Я пока с SDRAM разбираюсь и отложил это. У меня также плата в состоянии разработки.

У Вас USB HS построен с внешним ULPI так?

 

И этот внешний приемопередатчик не работает? Правильно?

 

Да.  FS я не пробовал, он у меня не разведен, подаваться куда-то к плате, пытаясь соблюсти равенство длин - я не стал заморачиваться

Share this post


Link to post
Share on other sites
3 минуты назад, MementoMori сказал:

FS я не пробовал, он у меня не разведен, подаваться куда-то к плате, пытаясь соблюсти равенство длин - я не стал заморачиваться

У меня разведены оба: USB FS и USB HS (только через USB3300). С Кубом у меня завелся только USB FS, а у HS вообще никакой реакции. Я покамест перепрыгнул на проверку SDRAM и пока с ней разбираюсь. Но к теме "HS" вот-вот должен опять вернуться. Предварительно - возможно куб (не будем его калом пока что называть) тут что-то не работоспособен. Но проверка будет.

Share this post


Link to post
Share on other sites

У меня H743IIT6 (TQFP-176). У Вас как я понял в 208-ми выводном корпусе. Трассировку выложить не могу т.к. делал не на этом компе, что сейчас. Вообще с точно такой же трассировкой USB3300 у меня без проблем работал F407IGT6 также в TQFP-176. И я не мудрствуя лукаво взял просто вместе F407-го запаял H743. Про подключение USB3300 позже сообщу что куда конкретно (но там стандартно все вроде)

Share this post


Link to post
Share on other sites
39 минут назад, MementoMori сказал:

А вы отлаживали?

Нет. Не успел. По-быстрому проверил там и забросил. Я через пару дней примерно проверю все это. Разбираюсь с вариантом платы с SDRAM  W9825G6KH (эта др. плата) и собираю ее сейчас, хочу проверить.

Share this post


Link to post
Share on other sites

Друзья, помогите вот с чем. Вот вывод отладочных сообщений

#if (USBH_DEBUG_LEVEL > 1U)

#define  USBH_ErrLog(...) do { \
                            printf("ERROR: ") ; \
                            printf(__VA_ARGS__); \
                            printf("\n"); \														
} while (0)

Пытаюсь перенаправлять это в UART

int fputc(int ch, FILE *f)
{

	while((UART7->ISR & UART_IT_TXE)==0)
	UART7->TDR=ch;
	return ch;
}	

В результате в порт вываливается куча символов "U"  и Терминал отрубается.

 

Что не так?

Share this post


Link to post
Share on other sites

Дошел вот до чего

phost->pActiveClass->pData = (MSC_HandleTypeDef *)USBH_malloc(sizeof(MSC_HandleTypeDef));

Не выделяется память по USBH_malloc.  

Поступил радикально - заменил на статическую память - драйвер регистрируется. Но есть ощущение некоего костыля...Почему в этой библиотеке проблемы с выделением памяти? 

Share this post


Link to post
Share on other sites
9 часов назад, MementoMori сказал:

Но есть ощущение некоего костыля...

Так это известная проблема с USBH_malloc(..) (ссылку даже можно привести по этой теме если сами не найдете)

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.