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
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.
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.
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.
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:
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 -
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.
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
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.
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 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,
Release instead of
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.