Перейти к содержанию
    

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

Загрузил я в плату 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 - это единственный узел, в правильности проектирования и трассировки которого я не убедился на практике. Работа с флешкой у меня сейчас не на первом мести и я хочу понять, могу ли я эту проблему отложить на потом и заказывать плату, или же возможны проблемы в плате, которые нужно решать сейчас.

Что скажете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Изменено пользователем AleksBak
добавил пропущенное слово

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, AleksBak said:

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

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

2 hours ago, AleksBak said:

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 минуты назад, MementoMori сказал:

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

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

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

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, AleksBak said:

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

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

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, MementoMori сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, AleksBak said:

не работоспособен

А вы отлаживали? Функция USBH_Process какие сообщения успевает выдать? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 минут назад, MementoMori сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

#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"  и Терминал отрубается.

 

Что не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точку с запятой потеряли.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, MementoMori сказал:

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...