mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-09-01 20:39:04 +00:00
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
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)
|
|
}
|
|
}
|