gdew0154m09: add e-paper display driver

This commit is contained in:
Andre Courchesne
2026-08-04 13:51:18 -07:00
committed by Ron Evans
parent be556a971c
commit 119afb933c
5 changed files with 703 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
package main
import (
"device/esp"
"image/color"
"machine"
"time"
"tinygo.org/x/drivers/gdew0154m09"
"tinygo.org/x/tinyfont"
"tinygo.org/x/tinyfont/freemono"
)
func main() {
// Hold the M5Stack CoreInk power rail on.
machine.GPIO12.Configure(machine.PinConfig{Mode: machine.PinOutput})
machine.GPIO12.High()
cs := machine.IO9
dc := machine.GPIO15
rst := machine.IO0
busy := machine.IO4
cs.Configure(machine.PinConfig{Mode: machine.PinOutput})
dc.Configure(machine.PinConfig{Mode: machine.PinOutput})
rst.Configure(machine.PinConfig{Mode: machine.PinOutput})
busy.Configure(machine.PinConfig{Mode: machine.PinInput})
cs.High()
dc.High()
rst.High()
// Enable and reset the ESP32 VSPI peripheral before configuring SPI3.
esp.DPORT.SetPERIP_RST_EN_SPI3_RST(1)
esp.DPORT.SetPERIP_CLK_EN_SPI3_CLK_EN(1)
esp.DPORT.SetPERIP_RST_EN_SPI3_RST(0)
if err := machine.SPI3.Configure(machine.SPIConfig{
Frequency: gdew0154m09.Baudrate,
SCK: machine.IO18,
SDO: machine.IO23,
SDI: machine.NoPin,
Mode: gdew0154m09.SPIMode,
}); err != nil {
println("could not configure SPI:", err.Error())
return
}
display := gdew0154m09.New(machine.SPI3, cs, dc, rst, busy)
if err := display.Configure(gdew0154m09.DefaultConfig); err != nil {
println("could not configure display:", err.Error())
return
}
black := color.RGBA{A: 0xff}
tinyfont.WriteLine(display, &freemono.Bold18pt7b, 15, 90, "TinyGo", black)
for x := int16(0); x < gdew0154m09.Width; x++ {
display.SetPixel(x, 0, black)
display.SetPixel(x, gdew0154m09.Height-1, black)
}
for y := int16(0); y < gdew0154m09.Height; y++ {
display.SetPixel(0, y, black)
display.SetPixel(gdew0154m09.Width-1, y, black)
}
if err := display.Display(); err != nil {
println("could not refresh display:", err.Error())
}
for {
time.Sleep(time.Hour)
}
}