C
STM32F469I 开发套件
板级特性
- STM32F469NIH6 微控制器,采用 ARM® Cortex®-M4 内核和 324 Kbytes 的 RAM
- 4 英寸 TFT 彩色液晶触摸显示屏
- 128-Mbit SDRAM
- 128-Mbit QSPI NOR Flash
支持的颜色深度
此板的参考端口支持 16bpp 和 24bpp (默认) 颜色深度。该板还支持 32bpp,但在参考端口中未实现。有关更多信息,请参阅 QUL_COLOR_DEPTH 和 颜色深度。
注意:仅提供预构建平台库的默认 24bpp。对于 16bpp 颜色深度,请使用值设置为 16 的 QUL_COLOR_DEPTH 重新构建平台库。有关从源代码构建平台的详细信息,请参阅 从源代码构建 Qt Quick Ultralite 平台库针对评估包。
部分帧缓冲支持
此板支持部分帧缓冲策略。要启用它,请设置 QUL_PLATFORM_PARTIAL_FRAMEBUFFER 并 重新构建平台库。
使用部分帧缓冲可以显着降低应用程序的内存需求,但可能导致性能降低和潜在的视觉撕裂伪影。
注意:Qt Quick Ultralite 对于 16bpp 颜色深度使用双部分帧缓冲,对于 24bpp 颜色深度使用单个部分帧缓冲。
预构建演示和示例
包含以下预构建演示的 STM32F469I-DISCO
板的包
您可以使用 demos_images
文件夹中的映像将其闪存到设备上。遵循 ST 板的闪烁说明,并以 STM32469I-DISCO
作为板名,N25Q128A_STM32469I-DISCO
作为外部加载脚本。
读取调试消息
默认情况下,《printf>`函数调用的输出会被重定向到虚拟串口,这个串口通过USB在主机上暴露。
硬件加速
参考端口使用意法半导体Chrom-Art Accelerator™ (DMA2D)进行硬件加速图形处理。
DMA2D是一个专门用于图像处理的直接内存访问(DMA)加速器。它可以执行以下操作
- 用特定颜色填充图像。
- 将源图像复制到目标图像。
- 带像素格式转换将源图像复制到目标图像。
- 将两个完整的不同像素格式的源图像混合,并将结果复制到不同像素格式的目标图像。
所有这些操作都可以应用于图像的部分或全部。
更多信息请参考意法半导体的文档。
- STM32F7 - Chrom-ART™ (同样适用于STM32F4系列)。
- RM0386参考手册中的Chrom-Art Accelerator™控制器(DMA2D)部分。
硬件配置
有关以下所述的STM32F469NIH6微控制器专用外设的更多信息,请参阅意法半导体的文档。
注意: 在下文中,低层(LL)和硬件抽象层(HAL)均指STM32Cube抽象层。
STM32CubeMX
STM32F469I-DISCO
电路板的硬件配置由STM32CubeMX生成的代码组成,以及来自STM32Cube MCU Package for STM32F4 series
存储库的外设BSP驱动程序。
所有STM32CubeMX生成的代码(除系统时钟配置位于stm32f469i-discovery-baremetal/3rdparty/Core
文件夹外)。
系统时钟配置
系统时钟配置位于Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/platform_clock.cpp
。函数SystemClock_Config()
被声明为非严格的,因此可以被自定义时钟配置覆盖。
系统定时器配置
在Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/3rdparty/Core/Src/stm32f4xx_hal_timebase_tim.c
中,使用函数HAL_InitTick()
将TIM6定时器实例配置为时间基源。
在Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/3rdparty/Core/Src/stm32f4xx_it.c
中定义了低层(LL)的
中断处理程序
在stm32f469i-discovery-baremetal/3rdparty/Core/Src/stm32f4xx_it.c
中定义了低层(LL)处理器异常和外设中断处理程序。
在Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/platform_irq.cpp
中定义了显示串行接口主机(DSI)中断回调和触摸中断引脚回调的硬件抽象层(HAL)中断处理程序。
Chrom-ART加速器(DMA2D)
DMA2D的配置在Qt Quick Ultralite平台源文件platform/boards/st/common/platform_drawing.cpp
中定义。
Nested Vectored Interrupt Controller (NVIC)和DMA2D的时钟配置在STM32Cube MCU包存储库文件Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma2d.c
中定义。
显示
您可以在Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/platform_display.cpp
中找到LCD-TFT显示控制器(LTDC)和显示串行接口主机配置设置。
您可以使用setLcdClockConfiguration()
函数为LTDC提供时钟设置。
LTDC时钟启用和GPIO配置设置在STM32Cube MCU包库文件Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_lcd.c
中定义。
四线串行外围设备接口(QSPI)
对于QSPI配置,请在STM32Cube MCU包库文件Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_qspi.c
中查看BSP_QSPI_Init()
进行外设设置,以及查看QSPI_MspInit()
进行引脚/时钟配置。
在Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/platform_init.cpp
中,QSPI被配置为内存映射模式。
随机数发生器(RNG)
您可以在Qt Quick Ultralite平台源文件platform/boards/st/common/platform_rng.cpp
中找到随机数发生器(RNG)的初始化。
RNG硬件实例的时钟配置位于3rdparty/Core/Src/stm32f4xx_hal_msp.c
。
SDRAM
SDRAM BSP配置位于STM32Cube MCU包库文件Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_sdram.c
。
触摸屏
触摸屏配置位于STM32Cube MCU包库文件Drivers/BSP/STM32469I-Discovery/stm32469i_discovery_ts.c
。
触摸屏驱动芯片连接到I2C1硬件实例,且触摸中断信号连接到GPIOJ引脚5。
I2C1配置在名为I2C1_Init()
的函数中,此函数位于STM32Cube MCU包库文件Drivers/BSP/STM32469I-Discovery/stm32469i_discovery.c
中。
串行外设通信接口(USART)
USART3硬件实例用于虚拟串行端口上的日志记录。USART3配置(包括GPIO和时钟设置)位于Qt Quick Ultralite平台源文件stm32f469i-discovery-baremetal/3rdparty/Core/Src/usart.c
。
已知问题或限制
- 由于SDRAM带宽有限,使用CPU访问SDRAM可能会导致显示控制器在扫描帧缓存时出现视觉伪影,因为LTDC FIFO欠载。
LTDC FIFO Underrun
错误可能会在拥有大量UI元素和大量动画的应用程序中发生,导致视觉闪烁。除了简化UI外,还可以考虑为Qt Quick Ultralite核心库使用不同的构建类型。例如,使用Debug
或Release
而不是MinSizeRel
。 - STM32F469NI不支持双精度浮点运算。
RLE解压缩
该板上的CPU无法直接在SDRAM的帧缓存上混合压缩图像。这些图像首先被解压缩到有限大小的中间缓冲区,然后使用DMA2D将它们混合到SDRAM的帧缓存中。与未压缩图像相比,这种方法在混合RLE压缩图像时会有显著的性能开销。
通过在platform_stm32.cpp中增加qul_scratch_buffer的大小可以一定程度上提高性能,但这会增加RAM的使用。
在特定的Qt许可下可用。
了解更多。