Quote from: Nominal Animal on 11 May, 2024 21:15(The Adafruit 0.96" module and the BuyDisplay 0.96" panel in my post, as well as the links to the other larger display modules and panels, are all TFT displays, not OLED.)Sorry for misleading. I didn't mean your post, but one before the previous one.My message to OP - double check real type of 0.96" display before buying it (especially in a bulk quantity). On Aliexpress (for example) some 0.96" OLED displays were sold under "0.96 LCD" title.I personally got a trap with ILI9237 based LCD module. It was sold as "Arduino" compatible. From DS I'd find out that ILI support a plenty of interfaces, including SPI (that I want). After buying this module I'd find out that mode selection pins not exposed to module pins
Moreover, only 2 of 3 mode selection pins was presented on internal LCD cable, and all SPI modes were unaccessible. So I have to add SPI to parallel converter (on 74HC595). Here I got second trouble. Module authors connects raw resistive touch panel pins to LCD data/control pins. Arduino expected to change modes of some pins to analog and read touch data. I can't do this, because 2 of shared pins were DB6/7, which were connected to 74HC595. So I have to add 2 analog switches to isolate them for touch measurement.Next problem has arisen from ESP32 ADC - it can't reliably measure voltage range from touch panel. So I have to add 2 buffers on opamp with voltage dividers after them.And the last problem was a pixel write timing - I couldn't use hardware SPI to send array of data, because each SPI transaction should be followed by Write strobe, that was generated by pin bitbang. Full screen fill had take about 1/3 seconds. So I have to get rid of all low level wrapper of SPI and GPIO (HAL level of IDF) and make hand manipulation on register level. I'v got speed about 1/10 sec for full screen.Next step could be in using low level fast speed interrupt on SPI send to manipulate Write pin (inside interrupt handler, implemented in Assembler) and turn on DMA for SPI, but I'd give up on this stage (1/10 sec was acceptable for me).And all of this is just a result of non checking hardware capability of particular LCD module