C

STM32F769I Discovery Kit

This topic provides you the necessary information about STM's STM32F769I discovery kit.

Board features

  • 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_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 qul_printf and Qul::PlatformInterface::log 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

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 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:

Hardware configuration

STM32CubeMX

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 - gpio.c
  • UART - uart.c
  • System timer - stm32f7xx_hal_timebase_tim.c
  • Interrupt routines - stm32f7xx_it.c

System clock configuration

The system clock configuration is located in Qt Quick Ultralite platform source file stm32f769i-discovery-common/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 TIM6 timer instance is used as the systick timer. The initialization function can be found in the STM32CubeMX generated source file stm32f769i-discovery-common/3rdparty/Core/Src/stm32f7xx_hal_timebase_tim.c.

Interrupt handlers

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 stm32f769i-discovery-common/platform_irq.cpp.

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.

SDRAM

The SDRAM configuration is located in the STM32Cube MCU package repository file Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery_sdram.c.

Touch panel

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 (Drivers/BSP/STM32F769I-Discovery/stm32f769i_discovery.c). The I2Cx_Init() function contains the required configurations for I2C.

Display

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 initializeLcdPeripherals() function.

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 platform/boards/st/common/platform_rng.cpp.

USART

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 stm32f769i-discovery-common/platform_clock.cpp.

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 or Release instead of MinSizeRel.

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.