环境
- 芯片/板级配置:
SF32LB52JUD6,SCons board 为sf32lb52-nano_52j - 屏幕驱动:SDK 自带
CO5300,QADSPI - SDK:SiFli-SDK v2.4.6,build
ce200146(Git commitce20014) - 示例:SDK 官方
example/multimedia/lvgl/lvgl_v9_demos - RT-Thread + littlevgl2rtt + LVGL v9
- 下载/日志串口:COM11,1 Mbps
本次测试未修改官方 LVGL demo、CO5300 驱动或 LCDC 驱动源码。
复现步骤
cd example/multimedia/lvgl/lvgl_v9_demos/project
scons --board=sf32lb52-nano_52j -j8
build_sf32lb52-nano_52j_hcpu/uart_download.bat
通过 UART 下载到板卡后复位。工程配置启用了:
LVGL_V9=1
LV_USE_DEMO_WIDGETS=1
LV_USE_DEMO_BENCHMARK=1
BSP_USING_EPIC=1
BSP_USING_LCDC=1
LCD_USING_TFT_CO5300=1
LCD_CO5300_VSYNC_ENABLE=1
BSP_LCDC_USING_QADSPI=1
LCD_HOR_RES_MAX=390
LCD_VER_RES_MAX=450
现象
- 屏幕始终为黑屏,看不到 widgets/benchmark 内容。
- LCD 初始化和 LVGL 线程看起来都成功,串口显示 CO5300 ID 为
0x331100,LCD 状态进入ON。 sysmon持续显示 60 FPS,render 约 4 ms、flush 约 10 ms,说明 LVGL 仍在持续渲染和提交刷新,但面板没有可见像素。- 运行一段时间后,官方 LCD 驱动报
draw_core timeout并在draw_core:1823断言。
同一块硬件使用 RT-Thread 官方 CO5300/LCDC 驱动做不经过 LVGL 的 5 色块循环刷新,可以正确显示红、绿、蓝、白、黑,因此屏幕供电、复位、QADSPI 基本通信和直接像素写入路径是正常的。问题只在切换到官方 LVGL v9 demo 后出现。
关键日志
SiFli Corporation build on Sep 11 2026, 2.4.6 build ce200146
[2349] I/drv.epic main: drv_gpu opened.
[2512] I/drv.lcd main: [NONE] -> [OPENING]
CO5300_ReadID 0x331100
[11171] I/drv.lcd lcd_task: Found lcd co5300 id:331100h
[11210] I/drv.lcd lcd_task: [OPENING] -> [INITIALIZED]
[11645] I/LVGL main: [littlevgl2rtt] Welcome to the littlevgl2rtt lib.
[12654] I/drv.lcd lcd_task: display on
[12669] I/drv.lcd lcd_task: [INITIALIZED] -> [ON]
sysmon: 60 FPS (refr_cnt: 19 | redraw_cnt: 19), refr 15ms (render 4ms | flush 10ms), CPU 93
...
[129952] E/drv.lcd lcd_task: draw_core timeout
[129974] E/drv.lcd lcd_task: Error, Clear p_drv_ops 120f5938, sem_v=0
[130002] E/drv.lcd lcd_task: irq_en=0
[130017] E/drv.lcd lcd_task: LCDC1_irq_en=1, active=0, pending=0
[130042] E/drv.lcd lcd_task: hlcdc errcode=0, lock=0, state=2
[130065] E/drv.lcd lcd_task: LCDC STATUS=1,TE=3
[130084] E/drv.lcd lcd_task: HAL dbg cnt b7, b7, b6
[130104] E/drv.lcd lcd_task: DRV dbg cnt b7, b6, b6
[130123] E/drv.lcd lcd_task: LCDC CANVAS TL=0,BR=1c10185,SETTING=a0141,IRQ=0
[130153] E/drv.lcd lcd_task: LCDC LAYER0 CFG=14618ff0,TL=0,BR=1c10185,SRC=60000000,DEC=0
[131398] I/drv.lcd lcd_task: [ON] -> [TIMEOUT]
[131416] E/drv.lcd lcd_task: lcd_timeout_error draw_core, 1822
Assertion failed at function:draw_core, line number:1823 ,(0)
其中 HAL/DRV 的提交与完成计数相差 1,IRQ=0,看起来最后一次 LCDC 刷新没有收到完成事件。
想请教的问题
- 对
sf32lb52-nano_52j + CO5300,官方推荐的可直接运行 LVGL v9 demo 的 board/config 是哪一个? - 当前官方 board 配置中的
LCD_HOR_RES_MAX=390、LCD_VER_RES_MAX=450是否适用于该 CO5300 屏?我们的屏幕像素规格是 410×502,这个分辨率差异是否会导致当前黑屏或 LCDC EOF 丢失? LCD_CO5300_VSYNC_ENABLE、TE 极性/延时、QADSPI 频率或 framebuffer 地址是否还需要针对该屏调整?- 对上述
LCDC STATUS=1, TE=3, IRQ=0和完成计数差 1,官方是否有已知修复或建议补丁?
如果需要,我可以继续提供完整 .config、main.map 和完整串口日志。