STM32F769I Discovery Kit
This topic provides you the necessary information about STM's STM32F769I discovery kit.
- STM32F769NIH6 MCU (ARM® Cortex®-M7)
- 4” capacitive touch LCD display (800x480)
- 512+16+4 Kbytes of RAM
- 128-Mbit SDRAM
- 2 MB Flash memory
- 512-Mbit Quad-SPI NOR Flash memory
More information fromSTM32F769I Discovery Website
Supported color depths
The reference port for this board supports 32bpp color depth. The board also supports 16bpp and 24bpp, but they are not implemented in the reference port. See QUL_COLOR_DEPTH and Color depth for more information.
Partial framebuffer support
This board supports the partial framebuffer strategy. To enable it, set QUL_PLATFORM_ENABLE_PARTIAL_FRAMEBUFFER and rebuild the Platform library.
Using the partial framebuffer can significantly lower the memory requirements of an application, but can lead to reduced performance and potential visual tearing artifacts for complex applications.
Prebuilt demos and examples
The package for
STM32f769I-DISCOVERY board comes with a prebuilt thermo demo binary. As Qt Quick Ultralite supports both bare metal and FreeRTOS on this board, there are different binaries for both under the
demos_images directory. Also
Thermo demo has two variants, one with metric units and another with imperial units.
See the flashing instructions for the ST boards section, for more information on flashing the device. For this board, select
MX25L512G_STM32F769I-DISCO as the external loader.
Reading debug messages
By default, the output of
printf calls are redirected to STLink virtual COM Port, which is exposed on the host machine via USB. The serial configuration is the following:
Baud rate: 115200 Data bits: 8 Stop bits: 1 Parity: None Flow control: None
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 a 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:
- STM32F7 - Chrom-ART™
- RM0410 Reference manual section Chrom-Art Accelerator™ controller (DMA2D).
The hardware configuration for the
STM32f769I-DISCOVERY board is comprised of STM32CubeMX generated code and peripheral BSP drivers from the
STM32Cube MCU Package for STM32F7 series repository.
All the STM32CubeMX generated code (except the system clock configuration) is located in the
stm32f769i-discovery-common/3rdparty/Core folder. The folder includes configurations for:
- GPIO -
- UART -
- System timer -
- Interrupt routines -
System clock configuration
The system clock configuration is located in Qt Quick Ultralite platform source file
SystemClock_Config() function is declared weak, so that it can be overridden by a custom clock configuration.
System tick timer
The TIM6 timer instance is used as the systick timer. The initialization function can be found in the STM32CubeMX generated source file
The interrupt handlers are located in Qt Quick Ultralite platform source file
stm32f769i-discovery-common/3rdparty/Core/Src/stm32f7xx_it.c. Also, the display related DSI interrupt callbacks and touch interrupt pin callback are present in Qt Quick Ultralite platform source file
Quad serial peripheral interface (QSPI)
For the QSPI configuration, check
BSP_QSPI_Init() for peripheral settings and
BSP_QSPI_MspInit() for pinout/clock configuration from the
Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_qspi.c file of STM32Cube MCU package repository.
The SDRAM configuration is located in the STM32Cube MCU package repository file
The I2C1 hardware instance is used as a communication interface for the touch controller IC. The I2C configuration for the touch panel IC is located in the STM32Cube MCU package repository path (
I2Cx_Init() function contains the required configurations for I2C.
You can find the display configurations (LTDC and DSI interface configuration) in Qt Quick Ultralite platform source file
stm32f769i-discovery-common/platform_display.cpp. For more information on the display configurations, see the
The clock settings for LTDC are given by the
setLcdClockConfiguration() function, while the DSI clock configurations are given by the
setDsiPllConfiguration() function. The
BSP_LCD_MspInit() function, located in the STM32Cube MCU package repository file
Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_lcd.c, contains the general purpose input/output (GPIO) as well as the interrupts and exceptions (NVIC) settings for the LTDC, DMA2D and DSI interfaces.
Random number generator (RNG)
You can find the RNG peripheral initialization in Qt Quick Ultralite platform source file
The USART1 hardware instance is used for logs over the virtual COM port. You can find the peripheral configuration in Qt Quick Ultralite platform source file
stm32f769i-discovery-common/3rdparty/Core/Src/uart.c. The clock settings are defined in the
SystemClock_Config() function of the Qt Quick Ultralite platform source file
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 has also been observed in applications with heavy animations, even when the SDRAM is not accessed directly from the CPU. It might help to use a different build type or to simplify the animations.
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.