Hello! I am looking for insight from folks familiar with TFT displays:
What is the fastest possible frame rate that a person can achieve using a Teensy 3.6, an Adafruit ST7789 TFT, and Paul's ST7735_t3 graphics library? I have an SPI camera that outputs a rather fast video feed, so I am looking for any settings that would help bring my draw times down. I'm currently sitting around 20FPS, but I see that page 133 of the ST7789 datasheet lists a 60Hz framerate, so I know there is potential for improvement - I'm just not sure how to set it up with a Teensy.
There are a few parts of the ST7735_t3 library that I am unsure of:
Here is a sample .ino that provides some of my benchmarks:
https://github.com/SoftwareArkitekt...tion/blob/master/arduino_tft_optimization.ino
The first thing I did to speed things up was to tie the TFT pins to the dedicated Teensy pins that were recommended in code examples. (See my .ino above for my own pin definitions.) This helped enormously, but is still not fast enough for my needs. As mentioned above, the fullscreen_test() currently sits at around 50ms (20FPS) for 240x240 updates.
Maybe I have just been staring at this for too long and am missing something obvious, so any help would be greatly appreciated. Thanks!
What is the fastest possible frame rate that a person can achieve using a Teensy 3.6, an Adafruit ST7789 TFT, and Paul's ST7735_t3 graphics library? I have an SPI camera that outputs a rather fast video feed, so I am looking for any settings that would help bring my draw times down. I'm currently sitting around 20FPS, but I see that page 133 of the ST7789 datasheet lists a 60Hz framerate, so I know there is potential for improvement - I'm just not sure how to set it up with a Teensy.
There are a few parts of the ST7735_t3 library that I am unsure of:
- How exactly do these registers(?) work? I added print statements to my own local copy of the .cpp file and I can confirm that using the setBitrate() function changes which CTAR value is selected. However, there is no discernible difference in frame rate between the lowest CTAR_4MHz value and the highest CTAR_24MHz value (50ms either way). Is there something else that has to happen in order to make full use of these bitrates?
- If I enable the ST77XX_FRAMEBUFFER and show images using the updateScreenAsync() function, the draw time shows a value of 2ms (as opposed to 50ms), however it doesn't look any visually faster. I have a feeling that the async operation halts the clock that the micros() function relies on, so this is not a great measurement. Will the framebuffer provide any speed boost as compared to running a direct writeRect() and passing in a global static uint16_t array?
Here is a sample .ino that provides some of my benchmarks:
https://github.com/SoftwareArkitekt...tion/blob/master/arduino_tft_optimization.ino
The first thing I did to speed things up was to tie the TFT pins to the dedicated Teensy pins that were recommended in code examples. (See my .ino above for my own pin definitions.) This helped enormously, but is still not fast enough for my needs. As mentioned above, the fullscreen_test() currently sits at around 50ms (20FPS) for 240x240 updates.
Maybe I have just been staring at this for too long and am missing something obvious, so any help would be greatly appreciated. Thanks!