The display drivers are not going to be any faster in C code or in Python code. What dictates speed are the bus drivers and those would reside in C code across all MCU’s. There is no need to write the display drivers in C. By doing that it gives the user the ability to upload the driver of their choice. Where as if the drivers are written in C code they will have to be compiled into the firmware which is what defeats the purpose of being runtime code.
One of the things is the ability to not have to recompile the firmware if the user wants to change to a different display. The user would simply have to upload a small python file to MicroPython that would contain the driver for the display they want to use. It also gives them the ability to develop a single MCU that can support 10 different displays if they wanted to and what display gets used would be set via a serial terminal to the MCU. That setting can get saved into NVRAM so it would remain persistent between reboots. Where as baking the firmware with a bunch of displays is going to make the firmware larger for one. using the driver is going to be more complex to do.
python allows us to do things like this
DISPLAY_DRIVER = 2
import lcd_bus
if DISPLAY_DRIVER == 1:
from st7796 import ST7796
bus = lcd_bus.SPIBus(dc=5, host=1)
display = ST7796(bus, width=480, height=320)
if DISPLAY_DRIVER == 2:
from ili9488 import ILI9488
bus = lcd_bus.I80Bus(.....)
display = ILI9488(bus, width=420, height=320)
display.power = True
display.init()
display.backlight = 100
You really cannot get any easier than that. The DISPLAY_DRIVER variable can be populated from data stored in NVRAM
the user can change out what displays are supported simply by uploading the python driver source files and a new main script like the example above. no messing about with compiling and flashing firmware or anything like that.
Want to do an upgrade and add a larger display to an MCU that is 1000 miles away at a remote location… ship the new display to a person that can plug the new one into the MCU and using the WIFI upload the python source files to the unit and reboot it. done deal. can’t do it that easily if you have to mess about with flashing firmware unless you have OTA updates set up and there is a heap load that can go wrong with that forcing the need to have the thing shipped back to you in order to unbrick it.