kopia lustrzana https://github.com/peterhinch/micropython-nano-gui
ILI9341: Provide fix for some Chinese display modules.
rodzic
032a9ba4be
commit
597ab5ef3f
|
@ -416,6 +416,13 @@ training makes me baulk at exceeding datasheet limits but the choice is yours.
|
||||||
I raised [this isse](https://github.com/adafruit/Adafruit_CircuitPython_ILI9341/issues/24).
|
I raised [this isse](https://github.com/adafruit/Adafruit_CircuitPython_ILI9341/issues/24).
|
||||||
The response may be of interest.
|
The response may be of interest.
|
||||||
|
|
||||||
|
#### Troubleshooting
|
||||||
|
|
||||||
|
Some Chinese modules produce garbled displays. Please try the
|
||||||
|
[ILI9486 driver](./DRIVERS.md#34-driver-for-ili94xx) with the `mirror`
|
||||||
|
constructor arg set `True`. Patch and testing provided by
|
||||||
|
[Abel Deuring](https://github.com/peterhinch/micropython-micro-gui/issues/25#issuecomment-1475329104).
|
||||||
|
|
||||||
###### [Contents](./DRIVERS.md#contents)
|
###### [Contents](./DRIVERS.md#contents)
|
||||||
|
|
||||||
## 3.3 Drivers for ST7789
|
## 3.3 Drivers for ST7789
|
||||||
|
@ -709,6 +716,8 @@ powered from 5V or 3.3V: there is a regulator on board.
|
||||||
`height` and `width` values.
|
`height` and `width` values.
|
||||||
* `width=480`
|
* `width=480`
|
||||||
* `usd=False` Upside down: set `True` to invert display.
|
* `usd=False` Upside down: set `True` to invert display.
|
||||||
|
* `mirror=False` If `True` reflects display. Has been found necessary for some
|
||||||
|
Chinese ILI9341 modules.
|
||||||
* `init_spi=False` This optional arg enables flexible options in configuring
|
* `init_spi=False` This optional arg enables flexible options in configuring
|
||||||
the SPI bus. The default assumes exclusive access to the bus. In this normal
|
the SPI bus. The default assumes exclusive access to the bus. In this normal
|
||||||
case, `color_setup.py` initialises it and the settings will be left in place.
|
case, `color_setup.py` initialises it and the settings will be left in place.
|
||||||
|
|
|
@ -66,7 +66,7 @@ class ILI9486(framebuf.FrameBuffer):
|
||||||
return cls.COLOR_INVERT ^ ((r & 0xF8) | (g & 0xE0) >> 5 | (g & 0x1C) << 11 | (b & 0xF8) << 5)
|
return cls.COLOR_INVERT ^ ((r & 0xF8) | (g & 0xE0) >> 5 | (g & 0x1C) << 11 | (b & 0xF8) << 5)
|
||||||
|
|
||||||
# Transpose width & height for landscape mode
|
# Transpose width & height for landscape mode
|
||||||
def __init__(self, spi, cs, dc, rst, height=320, width=480, usd=False, init_spi=False):
|
def __init__(self, spi, cs, dc, rst, height=320, width=480, usd=False, mirror=False, init_spi=False):
|
||||||
self._spi = spi
|
self._spi = spi
|
||||||
self._cs = cs
|
self._cs = cs
|
||||||
self._dc = dc
|
self._dc = dc
|
||||||
|
@ -107,7 +107,11 @@ class ILI9486(framebuf.FrameBuffer):
|
||||||
# Default page address start == 0 end == 0x1DF (479)
|
# Default page address start == 0 end == 0x1DF (479)
|
||||||
if self._long != 480:
|
if self._long != 480:
|
||||||
self._wcd(b"\x2b", int.to_bytes(self._long - 1, 4, "big")) # SET_PAGE ht
|
self._wcd(b"\x2b", int.to_bytes(self._long - 1, 4, "big")) # SET_PAGE ht
|
||||||
self._wcd(b"\x36", b"\x48" if usd else b"\x88") # MADCTL: RGB portrait mode
|
# self._wcd(b"\x36", b"\x48" if usd else b"\x88") # MADCTL: RGB portrait mode
|
||||||
|
madctl = 0x48 if usd else 0x88
|
||||||
|
if mirror:
|
||||||
|
madctl ^= 0x80
|
||||||
|
self._wcd(b"\x36", madctl.to_bytes(1, 'big')) # MADCTL: RGB portrait mode
|
||||||
self._wcmd(b"\x11") # sleep out
|
self._wcmd(b"\x11") # sleep out
|
||||||
self._wcmd(b"\x29") # display on
|
self._wcmd(b"\x29") # display on
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue