There be dragons!
-
I've been trying to spelunk through Espressif's RGB interface panel API. Some background: RGB interface LCD screens accept 1 wire per color bit. So 16-bit color takes 16 pins not including the sync and control pins. The framebuffer is on the MCU, not on a display controller. The MCU uses DMA to drive the color pins, essentially sending data to the display on every refresh cycle, using memory provided by the MCU. This isn't trivial to drive 16 pins via DMA, but the ESP32-S3 has hardware for doing so. They even provide an API for using that hardware, which is fortunate. However, I have *never* seen that API used in the wild without it being hacked to ribbons by whomever created their graphics libs to interface with it. In some cases I've even seen the i8080 interface hijacked and used to drive RGB screens! I don't know why, except that out of the box, I've never gotten the RGB interface to work with any display I have. Hacking it produces results, but that's the thing - I don't know how to hack it. All I've been able to do is copy from others who have done it. That said, others haven't updated their code to support changes in the latest version of Espressif's framework. Since that framework version is also tethered to Arduino, when they updated Arduino, they broke all those hacks. I've found a newer set of hacks that work with the newer framework on one RGB display, but I have had no luck getting it to work with other displays yet. If your API can only be used by hacking the utter life out of it, maybe it's time to rework your API. Just sayin'
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
I've been trying to spelunk through Espressif's RGB interface panel API. Some background: RGB interface LCD screens accept 1 wire per color bit. So 16-bit color takes 16 pins not including the sync and control pins. The framebuffer is on the MCU, not on a display controller. The MCU uses DMA to drive the color pins, essentially sending data to the display on every refresh cycle, using memory provided by the MCU. This isn't trivial to drive 16 pins via DMA, but the ESP32-S3 has hardware for doing so. They even provide an API for using that hardware, which is fortunate. However, I have *never* seen that API used in the wild without it being hacked to ribbons by whomever created their graphics libs to interface with it. In some cases I've even seen the i8080 interface hijacked and used to drive RGB screens! I don't know why, except that out of the box, I've never gotten the RGB interface to work with any display I have. Hacking it produces results, but that's the thing - I don't know how to hack it. All I've been able to do is copy from others who have done it. That said, others haven't updated their code to support changes in the latest version of Espressif's framework. Since that framework version is also tethered to Arduino, when they updated Arduino, they broke all those hacks. I've found a newer set of hacks that work with the newer framework on one RGB display, but I have had no luck getting it to work with other displays yet. If your API can only be used by hacking the utter life out of it, maybe it's time to rework your API. Just sayin'
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
You'll get it, just cast your usual spell and it will happen. :)
A home without books is a body without soul. Marcus Tullius Cicero PartsBin an Electronics Part Organizer - Release Version 1.4.0 (Many new features) JaxCoder.com Latest Article: EventAggregator
-
I've been trying to spelunk through Espressif's RGB interface panel API. Some background: RGB interface LCD screens accept 1 wire per color bit. So 16-bit color takes 16 pins not including the sync and control pins. The framebuffer is on the MCU, not on a display controller. The MCU uses DMA to drive the color pins, essentially sending data to the display on every refresh cycle, using memory provided by the MCU. This isn't trivial to drive 16 pins via DMA, but the ESP32-S3 has hardware for doing so. They even provide an API for using that hardware, which is fortunate. However, I have *never* seen that API used in the wild without it being hacked to ribbons by whomever created their graphics libs to interface with it. In some cases I've even seen the i8080 interface hijacked and used to drive RGB screens! I don't know why, except that out of the box, I've never gotten the RGB interface to work with any display I have. Hacking it produces results, but that's the thing - I don't know how to hack it. All I've been able to do is copy from others who have done it. That said, others haven't updated their code to support changes in the latest version of Espressif's framework. Since that framework version is also tethered to Arduino, when they updated Arduino, they broke all those hacks. I've found a newer set of hacks that work with the newer framework on one RGB display, but I have had no luck getting it to work with other displays yet. If your API can only be used by hacking the utter life out of it, maybe it's time to rework your API. Just sayin'
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
If waving a dead chicken over the code doesn't work, try a live cat. :)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.