Closed acvigue closed 1 year ago
Try the latest git master version and see if that fixes it.
And if not, then use the library without enabling PSRAM support. If that fixes the issue then there's a likely issue with your PSRAM being too slow for the DMA buffer.... You will need to edit this line:
LCD_CAM.lcd_clock.lcd_clkm_div_num = 10; //16mhz is the fasted the Octal PSRAM can support it seems
Change the value to '20' or even higher value. Or not use PSRAM (recommended).
Edit: Based on your log output you must be compiling with the 'SPIRAM_DMA_BUFFER' flag enabled.
Disabling PSRAM in cmakelists did it! Thanks
Had you enabled psram support yourself or was it enabled already by the library. I need to check that it doesn't auto-enable.
And I agree with your pre edited comment.. I need to make the clock divisor selectable for psram as there appears to be some memory bandwidth issue with DMA from psram that causes the LCD module to just bomb out.
What was the lowest clock divider you could use before it failed? Are you able to test for me?
20, 18, 16, 12 etc. With 10 = blank
Had you enabled psram support yourself or was it enabled already by the library. I need to check that it doesn't auto-enable.
Enabled automatically, the CMakeLists (line 32) has -Dsomething_spiram_related edit:
I believe if we take this out, then users can manually do #define SPIRAM_FRAMEBUFFER
before importing the library
And I agree with your pre edited comment.. I need to make the clock divisor selectable for psram as there appears to be some memory bandwidth issue with DMA from psram that causes the LCD module to just bomb out.
What was the lowest clock divider you could use before it failed? Are you able to test for me?
20, 18, 16, 12 etc. With 10 = blank
Tried 20, 18, 15. 18 was spotty, 15 refused to work. I had the qspi ram clock set at 80 Mhz. edit: forgot to say that 20 did work
and if it helps, here's the SDKCONFIG file that I am using, https://gist.github.com/acvigue/085fcced47d7008d3e8aab2ad7cfd0ec
Tried 20, 18, 15. 18 was spotty, 15 refused to work. I had the qspi ram clock set at 80 Mhz. edit: forgot to say that 20 did work
Excellent information, thanks for this. Proves this issue is triggered by DMA starvation/memory bandwidth.
My S3 that I test wish has Octal SPI (twice the bandwidth) hence why I can use a divisor of 10.
Is the output flickery with a divisor of 20? I would think so.
Tried 20, 18, 15. 18 was spotty, 15 refused to work. I had the qspi ram clock set at 80 Mhz. edit: forgot to say that 20 did work
Excellent information, thanks for this. Proves this issue is triggered by DMA starvation/memory bandwidth.
My S3 that I test wish has Octal SPI (twice the bandwidth) hence why I can use a divisor of 10.
Is the output flickery with a divisor of 20? I would think so.
I didn't notice too much of a difference w/ 20
Using this library on an ESP32-S3 (TinyS3) w/ IDF 5.0.1 (also tried 4.4.4) causes nothing to display on the screen. I've reduced the
main.cpp
file to the below contents:I've tried both 3.0.8 and master.
Logic analyzer output: (all lines stay low after the initial burst of clock pulses)
Log output: