C
STM32H750B Discovery Kit
This topic provides the necessary information about STM's STM32H750B discovery kit.
Board features
- ARM Cortex-M7
- 4.3” RGB Touch Display
- 128-Mbit SDRAM
- 1-Mbit NOR Flash
- 4-Gbyte on-board eMMC
Supported color depths
The reference port for this board supports 16bpp and 32bpp (default) color depths. The board also supports 24bpp, but it is not implemented in the reference port. See QUL_COLOR_DEPTH and Color depth for more information.
Note: The prebuilt platform library is provided for default 32bpp only. For 16bpp color depth, the platform library has to be rebuilt with QUL_COLOR_DEPTH value set to 16. See Building Qt Quick Ultralite platform library against the evaluation packages to build platform from sources.
Prebuilt demos and examples
The package for STM32H750B
board comes with a prebuilt thermo demo binary. You can find it in the demos_images
directory.
See Bootloader Flashing Instructions for ST boards for instructions on how to flash the bootloader (required for STM32H750B) and Flashing Instructions for ST boards on how to flash an application binary to the device.
Reading debug messages
By default, the output of qul_printf and Qul::PlatformInterface::log calls are redirected to a virtual serial port, which is exposed on the host machine via USB.
Hardware acceleration
The reference port utilizes the STMicroelectronics Chrom-Art Accelerator (DMA2D) for hardware accelerated graphics.
DMA2D is a specialized direct memory access (DMA) accelerator dedicated to image manipulation. It can perform the following operations:
- Fill an image with a specific color.
- Copy a source image into a destination image.
- Copy a source image into a destination image with a pixel format conversion.
- Blend two complete source images with different pixel formats and copy the result into a destination image with pixel format conversion.
All of the listed operations can be done for a part or whole image.
For more information, refer to STMicroelectronics' documentation:
- STM32H7 - Chrom-ART
- RM0433 Reference manual section Chrom-Art Accelerator controller (DMA2D).
Hardware configuration
For more information about the STM32H750XB MCU-specific peripherals mentioned below, refer to STMicroelectronics' documentation:
Note: In the following sections both low layer (LL) and hardware abstraction layer (HAL) refer to the STM32Cube abstraction layers.
STM32CubeMX
The hardware configuration for the STM32H750B-DK
board is comprised of STM32CubeMX generated code and peripheral BSP drivers from the STM32Cube MCU Package for STM32H7 series
repository.
All the STM32CubeMX generated code (except the system clock configuration) is located in the stm32h750b-discovery-baremetal/3rdparty/Core
folder.
The folder includes configurations for:
- Bootloader, MPU, QSPI and SDRAM -
main.c
- GPIO and clocks -
stm32h7xx_hal_msp.c
- Interrupt routines -
stm32h7xx_it.c
- USART -
usart.c
System clock configuration
The system clock configuration is located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/platform_clock.cpp
. The SystemClock_Config()
function is declared weak, so that it can be overridden by a custom clock configuration.
System tick timer
The ARM Cortex-M SysTick timer is configured as the timebase source in the STM32Cube MCU package repository file Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c
with the HAL_InitTick()
function.
The low layer (LL) SysTick_Handler()
function is located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_it.c
.
Interrupt handlers
The low layer (LL) processor exception and peripheral interrupt handlers are located in stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_it.c
.
The hardware abstraction layer (HAL) interrupt handlers for the LCD-TFT display controller (LTDC) interrupt callbacks and the touch interrupt pin callback are located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/platform_irq.cpp
.
Chrom-ART Accelerator (DMA2D)
The DMA2D configuration is located in the Qt Quick Ultralite platform source file platform/boards/st/common/platform_drawing.cpp
.
The nested vectored interrupt controller (NVIC) and clock configuration for DMA2D are located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c
.
Display
You can find the LCD-TFT display controller (LTDC) configuration settings in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/platform_display.cpp
.
You can use thesetLcdClockConfiguration()
function to give the clock settings for LTDC.
The LTDC clock enabling and GPIO configuration settings are located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c
.
Quad serial peripheral interface (QSPI)
For the QSPI configuration, check BSP_QSPI_Init()
for peripheral settings and QSPI_MspInit()
for pinout/clock configuration from the Drivers/BSP/STM32H750B-DK/stm32h750b_discovery_qspi.c
file.
The QSPI is configured to memory-mapped mode in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/main.c
.
Random number generator (RNG)
You can find the random number generator (RNG) initialization in Qt Quick Ultralite platform source file platform/boards/st/common/platform_rng.cpp
.
The clock configuration for the RNG hardware instance is located in 3rdparty/Core/Src/stm32h7xx_hal_msp.c
.
SDRAM
The SDRAM BSP configuration is located in the STM32Cube MCU package repository file Drivers/BSP/STM32H750B-DK/stm32h750b_discovery_sdram.c
.
The SDRAM MPU configuration is located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/main.c
.
Touch panel
The touch panel configuration is located in the STM32Cube MCU package repository file Drivers/BSP/STM32H750B-DK/stm32h750b_discovery_ts.c
.
The touch panel driver IC is connected to the I2C4 hardware instance and the touch interrupt signal is connected to the GPIOG pin 2.
The I2C4 configuration is in a function called MX_I2C4_Init()
, which is located in the STM32Cube MCU package repository file Drivers/BSP/STM32H750B-DK/stm32h750b_discovery_bus.c
.
USART
The USART3 hardware instance is used for logs over the virtual COM port. The USART3 configuration is located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/usart.c
.
The GPIO and clock configuration for USART3 are located in the Qt Quick Ultralite platform source file stm32h750b-discovery-baremetal/3rdparty/Core/Src/stm32h7xx_hal_msp.c
.
Known issues or limitations
- Due to limited SDRAM bandwidth, accessing SDRAM with the CPU may cause visual artifacts while the framebuffer is being scanned by the display controller, due to LTDC FIFO Underrun.
LTDC FIFO Underrun
error may occur in applications that have a lot of UI elements and heavy animations, causing visual glitches. Apart from simplifying the UI, consider using a different build type for the Qt Quick Ultralite core library. For example,Debug
orRelease
instead ofMinSizeRel
. To prevent visual artifacts from appearing, try to reduce the use of rotated or perspective-transformed images that need to be blended using the CPU. - Only the SDK version 1.11.2 is supported.
RLE decompression
The CPU on this board cannot blend compressed images directly onto the framebuffer in SDRAM. Such images are decompressed into intermediate buffers of a limited size, before blending them using DMA2D onto the framebuffer in SDRAM. This approach has a significant performance overhead to blend RLE-compressed images compared to the uncompressed images.
Performance can be improved to some degree by increasing the size of qul_scratch_buffer in platform_stm32.cpp, at the cost of more RAM usage.
Available under certain Qt licenses.
Find out more.