基于littleVGL的双缓存机制,不使用GPU,改善刷新率问题
前言
在使用littleVGL作为图形库的时候,单缓冲的显示有类似拉窗帘的效果,不能用于实际产品中,littleVGL支持双缓存显示可以满足我们的显示要求
一、运行环境
当前项目使用的是MCU是STM32F429的片子,本身的资源非常丰富,使用的LTDC的外设驱动屏幕刷新,具体ltdc的外设等后面文章在记录;使用了外扩的SDRAM的前80048022字节作为显示缓冲区;屏幕800480,RGB565;
二、实现步骤
1.指定显示缓冲区
代码如下(示例):
/**
* @brief LCD显存和LVGL缓存定义
*/
uint16_t lcd_buffer_1[LCD_WIDTH * LCD_HIGH] __attribute__((at(SDRAM_LCD_ADDR_1)));
uint16_t lcd_buffer_2[LCD_WIDTH * LCD_HIGH] __attribute__((at(SDRAM_LCD_ADDR_2)));
2.指定ltdc显示buffer
代码如下(示例):pLayerCfg.FBStartAdress = (uint32_t)lcd_buffer_1;
/* LTDC init function */
void MX_LTDC_Init(void)
{
/* USER CODE BEGIN LTDC_Init 0 */
/* USER CODE END LTDC_Init 0 */
LTDC_LayerCfgTypeDef pLayerCfg = {
0};
/* USER CODE BEGIN LTDC_Init 1 */
/* USER CODE END LTDC_Init 1 */
hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC