ESP32并口屏幕和串口屏幕下帧率的对比

前言

之前在ESP32上运行LVGL一直使用的是SPI串口驱动LCD, 当时就比较好奇如果换成了并口驱动LCD会对帧率有何影响.于是乎终于在2022年后买入了一块并口屏幕来测试一下.

测试项目

  • 使用LVGL自带的lv_demo_music,开启LV_DEMO_MUSIC_AUTO_PLAY
  • 使用TFT_eSPI自带的Viewport_graphicstest

测试结果

运行LVGL自带的lv_demo_music

对照组序号 屏幕参数 ESP32运行频率 LVGL缓冲参数 SPI速率 TFT_eSPI版本 LVGL版本 帧率
1 240x240 1.54寸 SPI LCD 240MHz 240*120 启用DMA,未使用双缓冲 60MHz 2.3.70 8.1.1-dev 26帧
2 240x240 1.33寸 8位并口 LCD 240MHz 240*120 未使用双缓冲 \ 2.3.70 8.1.1-dev 28帧

感觉帧率差异不是很大的样子.

运行TFT_eSPI自带的Viewport_graphicstest

对照组序号 屏幕参数 ESP32运行频率 SPI速率 TFT_eSPI版本
1 240x240 1.54寸 SPI LCD 240MHz 60MHz 2.3.70
2 240x240 1.33寸 8位并口 LCD 240MHz \ 2.3.70

运行时候明显感觉到并口的绘制速度更快,不过还是得数据说话,于是有如下Log

8位并口结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TFT_eSPI library test!
Benchmark Time (microseconds)
Screen fill 53073
Text 21126
Lines 36424
Horiz/Vert Lines 10469
Rectangles (outline) 5918
Rectangles (filled) 122742
Circles (filled) 28151
Circles (outline) 22372
Triangles (outline) 14111
Triangles (filled) 46193
Rounded rects (outline) 16475
Rounded rects (filled) 127122
Done!

串口结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TFT_eSPI library test!
Benchmark Time (microseconds)
Screen fill 102725
Text 12506
Lines 38321
Horiz/Vert Lines 9293
Rectangles (outline) 6594
Rectangles (filled) 234378
Circles (filled) 30350
Circles (outline) 16884
Triangles (outline) 12893
Triangles (filled) 79688
Rounded rects (outline) 11730
Rounded rects (filled) 240258
Done!

并口驱动情况下绘制时间几乎是串口驱动绘制时间的一半.

果然还是有提升的.

至于为什么在LVGL中拉不开差距,经过群友Principle点拨后意识到,运行LVGL时候CPU性能方面出现了瓶颈,我的ESP32是初代版本,如果换成最新的ESP32 S3则会拉开差距.