Hello everyone, it’s been a pleasure reading some of the threads here while waiting for my unit to arrive. I think I’ve come across something that hasn’t been discussed yet.
In this recent commit, the ILI9488 spec has been replaced by the ST7365P.
Does this mean the LCD screen may vary from one PicoCalc to another? Or the screen is the same and it’s just the driver that is different? Also, why was the ILI spec removed, considering there are already PicoCalcs using that screen?
The specs seem fairly compatible, but there could be important differences. I’ve spotted that the ST7365P is lacking a 3-bit color mode (a way to send 2 pixels/byte, different from idle mode).
I’m currently tinkering with an ILI9488-based screen while waiting for my unit to arrive, and I’m wondering whether we should expect compatibility issues between different PicoCalcs.
It’s actually pretty unlikely that the PicoCalc screen ever used a real ili9488, which is a very old chip, and instead used a different chip that shares a “compatible” command set. Maybe that’s the ST736P, maybe it’s another one. And the datasheets can’t always be trusted to be fully correct as far as what features are/aren’t present.
In all likelihood that commit is just replacing one dodgy datasheet with one that cuu believes is better.
Ok thank you for the response, that makes sense now. That would explain why RGB565 colormode was supported as mentionned in this thread but not on my test screen.
I’m fairly new to this embedded/baremetal world, I’ve to admit that it’s fun to work with these kinds of limitations and find creative solutions!
Won’t the display controller return a string detailing its part number and version ?. Yes my ‘option list’ returns ILI9488P so possibly losing some functions if incorrect.
I was asking for 100 and getting 62.5 IIRC. Lower values did impact the performance. I can draw a full screen of text in about 11.2ms in 3bpp mode. It’s more like 34.4ms for 16bpp.
Mind you, 62.5 MHz makes sense because that is the maximum SPI clock the RP2040 supports with a system clock of 125 MHz.
Actually… the ST7365P datasheet on the ClockworkPi GitHub says that the minimum write SCL time for SPI is 66 ns, which equates to just over 15 MHz, and my driver has already been pushing it at 25 MHz (note that I have not heard from anyone of any ill effect here).
The more recent versions of PicoMite for the PicoCalc are using unmodified display initialization routines from the main PicoMite source. That init code is here.
I’m not sure what display documentation the PicoMite dev based that code on, but the display we’re using is identified as “ILI9488P” in that code and was part of an update he made about a month ago, and it seemed to work well on the PicoCalc so that’s what we’re using instead of the initial PicoCalc PicoMite port code.
If there are optimizations that could be done by supporting the ST736P (or whatever is inside the PicoCalc) differently, then I’ll happily accept any PRs if there are performance benefits.