Hi all, I’ve compiled the Nimbus STM32H743 bootloader (my custom flight controller )and uploaded tools/bootloader/board_bl.hex via ST-Link using STM32CubeProgrammer, and the bootloader flashes successfully, but my USB is not detected. I am trying to use High-Speed (HS) instead of Full-Speed (FS) and have configured the PLL for a 48 MHz USB clock (OSCILLATOR_HZ 25000000, PLL_M 5, PLL_N 192, PLL_Q 20). My hwdef sets PB14/15 for OTG_HS_DM/DP, disables VBUS sensing (HAL_USE_USB_VBUS_SENSE 0, HAL_USB_FORCE 1, USE_VBUS_PULL_DOWN), and currently uses the internal FS PHY (STM32_OTGHS_USE_FS 1). When I enter DFU mode, the device pops up but is not recognized on PC, and I am using a Type-C data cable.
hw definition file for processing by chibios_hwdef.py
for H743 bootloader
MCU class and specific type
MCU STM32H7xx STM32H743xx
crystal frequency
OSCILLATOR_HZ 25000000
#new pll
define STM32_PLL1Q_FOR_USB 1
Required for 48MHz USB clock (from 25MHz crystal)
define STM32_PLL_M 5 # VCO input = 25MHz / 5 = 5MHz
define STM32_PLL_N 192 # VCO output = 5MHz * 192 = 960MHz
define STM32_PLL_Q 20 # USB clock = 960MHz / 20 = 48MHz
board ID. See Tools/AP_Bootloader/board_types.txt
APJ_BOARD_ID AP_HW_NIMBUS
ChibiOS system timer
STM32_ST_USE_TIMER 2
bootloader is installed at zero offset
FLASH_RESERVE_START_KB 0
FLASH_BOOTLOADER_LOAD_KB 128
FLASH_SIZE_KB 2048
order of UARTs (and USB)
SERIAL_ORDER OTG1 USART2
USB
PB14 OTG_HS_DM OTG1
PB15 OTG_HS_DP OTG1
If board provides no VBUS sense pin, disable sensing and force USB connect
STM32_OTGHS_USE_FS 1
HAL_USE_USB_VBUS_SENSE 0
HAL_USB_FORCE 1
CONFIG_BOARD_USB_VBUS_SENSE_DISABLED 1
pins for SWD debugging
PA13 JTMS-SWDIO SWD
PA14 JTCK-SWCLK SWD
UART7 is debug
PE7 UART7_RX UART7 NODMA
PE8 UART7_TX UART7 NODMA
telem1
PD5 USART2_TX USART2
PA3 USART2_RX USART2
start peripheral power on
PB2 VDD_5V_PERIPH_EN OUTPUT HIGH
PI15 VDD_5V_RC_EN OUTPUT HIGH
PJ0 VDD_3V3_SD_CARD_EN OUTPUT HIGH
PJ2 VDD_3V3_SENSORS_EN OUTPUT HIGH
PI13 VDD_GPS_TELEM_EN OUTPUT HIGH
enable DFU by default
ENABLE_DFU_BOOT 1
support flashing from SD card:
power enable pins
Enable FATFS in bootloader
define HAL_OS_FATFS_IO 1
#define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1
microSD support
PC12 SDMMC1_CK SDMMC1
PD2 SDMMC1_CMD SDMMC1
PC8 SDMMC1_D0 SDMMC1
PC9 SDMMC1_D1 SDMMC1
PC10 SDMMC1_D2 SDMMC1
PC11 SDMMC1_D3 SDMMC1
#define FATFS_HAL_DEVICE SDCD1
Add CS pins to ensure they are high in bootloader
PE3 BMIO88_G_CS CS
PE4 BMI088_A_CS CS
PJ14 BMI270_CS CS
PJ15 DPS310_CS CS
PI5 MS5611_CS CS
PC0 FRAM_CS CS SPEED_VERYLOW
PK1 EXT1_CS1 CS
PK2 EXT1_CS2 CS