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

stm32 usb otg dual role (hal, cubemx)

Всем привет.

Сделал по отдельности хост, девайс usb-midi, работает.

Нужно всё это слить воедино для otg. Куб генерит "пустой" проект (cmsis, hal) и пустая ф-ция в мейне MX_USB_OTG_FS_USB_Init();

в интернетах пока нашел только ЭТО

Кто сталкивался, куда копать?

 

Спасибо.

 

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


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

42 minutes ago, gosha-z said:

А по схемотехнике - ID, VBUS DETECT, VBUS Control есть?

в stm32f1xx_hal_conf.h такое

 

/*#define HAL_PCD_MODULE_ENABLED   */
/*#define HAL_HCD_MODULE_ENABLED   */

111.png

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


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

1 hour ago, gosha-z said:

Замечательно, проц знает. А схема, на которой этот проц стоит?

по схеме есть, но куб не генерит заготовку для usb otg, нет драйверов, вот в чем вопрос

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


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

а в project example есть такое?

я когдато искал как с помощью куба создать

composite device и не нашел...

 

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


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

On 7/11/2020 at 1:03 PM, golf2109 said:

а в project example есть такое?

я когдато искал как с помощью куба создать

composite device и не нашел...

 

не совсем понятен термин "Dual Role". посмотрел исходники, при выборе этого варианта из проекта исключается всё, что связано с usb. Примеров не нашел, а вот в библиотеке с spl есть, но с меня требуют hal.

И еще один момент, когда делаю вручную композит хоста и девайса, конфликтуют HAL_HCD (для хоста) и HAL_PCD(для девайса), хост работает, девайс нет, даже если явно деинициализировать хост 

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


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

Вобщем решил проблему, в композитном проекте (который делал вручную) надо irq хендлер прописать правильно (у меня в stm32f1xx_it.c):

 

void OTG_FS_IRQHandler(void)
{
  /* USER CODE BEGIN OTG_FS_IRQn 0 */
	if (HOST == role){
		HAL_HCD_IRQHandler(&hhcd_USB_OTG_FS);
	}
	else if (DEVICE == role){
		HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS);
	}
	return;
  /* USER CODE END OTG_FS_IRQn 0 */

  /* USER CODE BEGIN OTG_FS_IRQn 1 */

  /* USER CODE END OTG_FS_IRQn 1 */
}

 

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

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


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

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

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

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

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

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

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

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

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

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