Showing results for 
Search instead for 
Did you mean: 

Two physical USB ports (host and device) on STM32H7 possible? Better ust STM32MP13x?



i need to build a system that has two physical USB ports:

- USB-Host: Type-A USB2.0 HID device to connect an external Midi-controller

- USB-Device: Type-C USB2.0 or USB3.x to act as a multi-channel audio sound card, and also HID device (MIDI controller) at the same time

- Fast CPU to perform audio DSP, STM32H7 with 480 or 550MHz would be fine.

- Micro SD card connector

I can not find a way to setup an STM32H7 in CubeMX to have two physical USB ports, as there is only one USB_OTG_HS peripheral available. Did i overlook something here? 


I prefer programming in C/C++ on the bare metal CPU and not using RTOS or embedded Linux. I was thinking of using an STM32MP135DAGx instead of the STM32H7 and program it bare metal, but this would require to interface an external FLASH and maybe also a DDR RAM, which i have never done before. I suppose at least a FLASH is necessary?

Looking forward to any suggestions 🙂


USB2.0 is a specification which covers both Full-speed and High-speed transfers (as well as Low-speed, too), so it's not useful if you want to specify the transfer speeds.

While the two-USB-port capable STM32 (including some 'H7) indeed tend to have only one HS-capable USB module (which except for 'F723 requires an external ULPI-connected USB-HS PHY), I don't think the MIDI controller would require HS, so for the Host, I'd use the FS-capable USB module. Correct me if I'm wrong.