QSPI OLED使用PSRAM作为缓冲区,能否使用EDMA直接发送到QSPI主机

yulianchen
Posts: 6
Joined: Wed Jan 24, 2024 4:46 pm

QSPI OLED使用PSRAM作为缓冲区,能否使用EDMA直接发送到QSPI主机

Postby yulianchen » Wed May 07, 2025 6:10 am

我使用了一款410*502的分辨率的OLED显示器,在使用双1/6 buffer时,对内部内存的占用实在太大了,还有撕裂。有没有好的方法能把它放到外部的PSRAM,并尽可能的提高性能,我看RGB 接口 LCD能够使用外部psram申请整buffer缓冲区,并且使用EDMA降低CPU工作量,但是在QSPI这里,完全没有看到类似的选项
最近我测试后发现

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);
使用以下代码后,好像是调用了DMA发送,因为比禁用dma快的多,但是在其内部貌似开辟了一块同等大小的内存作为缓冲区,我不是很明白这样做对不对,有没有不经过CPU,内部缓冲,直接发送到QSPI主机的方式,5.4.1的文档上就提了一嘴,我知道该如何使用https://docs.espressif.com/projects/esp ... F%E4%BB%A5

Who is online

Users browsing this forum: No registered users and 3 guests