QSPI OLED使用PSRAM作为缓冲区,能否使用EDMA直接发送到QSPI主机
Posted: Wed May 07, 2025 6:10 am
我使用了一款410*502的分辨率的OLED显示器,在使用双1/6 buffer时,对内部内存的占用实在太大了,还有撕裂。有没有好的方法能把它放到外部的PSRAM,并尽可能的提高性能,我看RGB 接口 LCD能够使用外部psram申请整buffer缓冲区,并且使用EDMA降低CPU工作量,但是在QSPI这里,完全没有看到类似的选项
最近我测试后发现
使用以下代码后,好像是调用了DMA发送,因为比禁用dma快的多,但是在其内部貌似开辟了一块同等大小的内存作为缓冲区,我不是很明白这样做对不对,有没有不经过CPU,内部缓冲,直接发送到QSPI主机的方式,5.4.1的文档上就提了一嘴,我知道该如何使用https://docs.espressif.com/projects/esp ... F%E4%BB%A5
最近我测试后发现
Code: Select all
lv_color_t *buf1 = heap_caps_malloc(EXAMPLE_LCD_H_RES * EXAMPLE_LVGL_BUF_HEIGHT * sizeof(lv_color_t), MALLOC_CAP_SPIRAM);
assert(buf1);
lv_color_t *buf2 = heap_caps_malloc(EXAMPLE_LCD_H_RES * EXAMPLE_LVGL_BUF_HEIGHT * sizeof(lv_color_t), MALLOC_CAP_SPIRAM);
assert(buf2);
// initialize LVGL draw buffers
lv_disp_draw_buf_init(&disp_buf, buf1, buf2, EXAMPLE_LCD_H_RES * EXAMPLE_LVGL_BUF_HEIGHT);