STM32U5G9 / U5F9 LTDC: Display fails when HSPI1 disabled (HSPI not used for assets)
Hi everyone,
I'm experiencing a very specific bus/clock issue on a custom board using the STM32U5G9ZJ (and also tested on STM32U5F9ZJ).
The Problem: My display (320x240, RGB565 via LTDC) only works if the HSPI1 peripheral is enabled in CubeMX. As soon as I disable HSPI1 (which I need to do to free the PH9 pin for power management reasons), the screen turns grey, even though the LTDC settings remain unchanged.
Key Technical Details:
Data Location: All assets (images/fonts) are stored in Internal Flash memory. The HSPI/OctoSPI bus is NOT used during the display process.
Memory Status: In Debug mode, I can confirm via the Memory Browser that the Frame Buffer (located at 0x20025800) is correctly populated with pixel data.
LTDC Behavior: Despite the RAM being correct, the LTDC fails to output data to the panel when HSPI1 is OFF.
Configuration: Pixel Clock (PLL3R) is at 200MHz, GPIOs are "Very High Speed", and the Frame Buffer is placed to avoid conflicts with the RTOS (ThreadX) heap.
The Mystery: Why does the LTDC depend on the HSPI1 state to fetch data from internal SRAM?
Is there a Clock Gating issue where disabling HSPI1 also kills the AHB/APB bridge used by the LTDC Master?
Does the Bus Matrix on the U5G9/F9 require an active memory controller to maintain high-speed arbitration for the LTDC?
Is there a specific Power Domain (VDD_CORE or similar) that scales down when HSPI is disabled, preventing the LTDC from reaching its target bandwidth?
I need to free PH9, but I cannot lose the display. Has anyone encountered this "ghost dependency" between OctoSPI and LTDC on the U5 series?
Environment:
MCU: STM32U5G9ZJ / STM32U5F9ZJ
OS: FREERTOS (ThreadX)
Graphics: LVGL 9
Thanks for your help!
