From 1b41d0a98b3add7e448e8921988ab906d1e4612b Mon Sep 17 00:00:00 2001 From: sago35 Date: Tue, 19 May 2020 17:56:40 +0900 Subject: [PATCH 01/11] Add ili9341 spidriver (atsamd51) --- ili9341/spi_atsamd51.go | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 ili9341/spi_atsamd51.go diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go new file mode 100644 index 000000000..1f88e8b6b --- /dev/null +++ b/ili9341/spi_atsamd51.go @@ -0,0 +1,54 @@ +// +build atsamd51 + +package ili9341 + +import ( + "machine" +) + +type spiDriver struct { + bus machine.SPI + dc machine.Pin + rst machine.Pin + cs machine.Pin + rd machine.Pin +} + +func NewSpi(bus machine.SPI, dc, cs, rst machine.Pin) *Device { + return &Device{ + dc: dc, + cs: cs, + rst: rst, + rd: machine.NoPin, + driver: &spiDriver{ + bus: bus, + }, + } +} + +func (pd *spiDriver) configure(config *Config) { +} + +//go:inline +func (pd *spiDriver) write8(b byte) { + pd.bus.Tx([]byte{b}, nil) +} + +//go:inline +func (pd *spiDriver) write16(data uint16) { + pd.bus.Tx([]byte{byte(data >> 8), byte(data)}, nil) +} + +//go:inline +func (pd *spiDriver) write16n(data uint16, n int) { + for i := 0; i < n; i++ { + pd.write16(data) + } +} + +//go:inline +func (pd *spiDriver) write16sl(data []uint16) { + for i, c := 0, len(data); i < c; i++ { + pd.write16(data[i]) + } +} From 3b77a1b0a8cca8faf096566f995c4026ebbfcfb5 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 20 May 2020 21:52:08 +0900 Subject: [PATCH 02/11] Add suport samd5x's SPI 32-bit extension --- ili9341/ili9341.go | 6 +++--- ili9341/parallel_atsamd51.go | 14 ++++++++++++++ ili9341/spi_atsamd51.go | 24 +++++++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/ili9341/ili9341.go b/ili9341/ili9341.go index 2ff82c64b..6bc22492e 100644 --- a/ili9341/ili9341.go +++ b/ili9341/ili9341.go @@ -281,15 +281,15 @@ func (d *Device) sendCommand(cmd byte, data []byte) { d.dc.Low() d.driver.write8(cmd) d.dc.High() - for _, b := range data { - d.driver.write8(b) - } + d.driver.write8sl(data) d.endWrite() } type driver interface { configure(config *Config) write8(b byte) + write8n(b byte, n int) + write8sl(b []byte) write16(data uint16) write16n(data uint16, n int) write16sl(data []uint16) diff --git a/ili9341/parallel_atsamd51.go b/ili9341/parallel_atsamd51.go index 0530c8c8f..4b566829a 100644 --- a/ili9341/parallel_atsamd51.go +++ b/ili9341/parallel_atsamd51.go @@ -72,6 +72,20 @@ func (pd *parallelDriver) wrx() { volatile.StoreUint32(pd.wrPortSet, pd.wrMaskSet) } +//go:inline +func (pd *parallelDriver) write8n(b byte, n int) { + for i := 0; i < n; i++ { + pd.write8(b) + } +} + +//go:inline +func (pd *parallelDriver) write8sl(b []byte) { + for i := 0; i < len(b); i++ { + pd.write8(b[i]) + } +} + //go:inline func (pd *parallelDriver) write16(data uint16) { pd.write8(byte(data >> 8)) diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go index 1f88e8b6b..2e0a70e20 100644 --- a/ili9341/spi_atsamd51.go +++ b/ili9341/spi_atsamd51.go @@ -34,9 +34,21 @@ func (pd *spiDriver) write8(b byte) { pd.bus.Tx([]byte{b}, nil) } +//go:inline +func (pd *spiDriver) write8n(b byte, n int) { + for i := 0; i < n; i++ { + pd.write8(b) + } +} + +//go:inline +func (pd *spiDriver) write8sl(b []byte) { + pd.bus.Tx(b, nil) +} + //go:inline func (pd *spiDriver) write16(data uint16) { - pd.bus.Tx([]byte{byte(data >> 8), byte(data)}, nil) + pd.bus.Transfer2((data << 8) | (data >> 8)) } //go:inline @@ -48,7 +60,13 @@ func (pd *spiDriver) write16n(data uint16, n int) { //go:inline func (pd *spiDriver) write16sl(data []uint16) { - for i, c := 0, len(data); i < c; i++ { - pd.write16(data[i]) + for i, c := 0, len(data)-2; i < c; i += 2 { + d := uint32((data[i+1]<<8)|(data[i+1]>>8)) << 16 + d |= uint32((data[i] << 8) | (data[i] >> 8)) + pd.bus.Transfer4(d) + } + + for i, c := len(data)-2, len(data); i < c; i++ { + pd.bus.Transfer2((data[i] << 8) | (data[i] >> 8)) } } From 18f5f220320bad79b467ba0aecde84bd45bb96f5 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 20 May 2020 22:25:39 +0900 Subject: [PATCH 03/11] Add wioterminal examples for ILI9341 --- examples/ili9341/basic/main.go | 13 ++----- examples/ili9341/basic/pyportal.go | 22 ++++++++++++ examples/ili9341/basic/wioterminal.go | 35 +++++++++++++++++++ examples/ili9341/pyportal_boing/main.go | 13 ++----- examples/ili9341/pyportal_boing/pyportal.go | 22 ++++++++++++ .../ili9341/pyportal_boing/wioterminal.go | 35 +++++++++++++++++++ examples/ili9341/scroll/main.go | 13 ++----- examples/ili9341/scroll/pyportal.go | 22 ++++++++++++ examples/ili9341/scroll/wioterminal.go | 35 +++++++++++++++++++ 9 files changed, 177 insertions(+), 33 deletions(-) create mode 100644 examples/ili9341/basic/pyportal.go create mode 100644 examples/ili9341/basic/wioterminal.go create mode 100644 examples/ili9341/pyportal_boing/pyportal.go create mode 100644 examples/ili9341/pyportal_boing/wioterminal.go create mode 100644 examples/ili9341/scroll/pyportal.go create mode 100644 examples/ili9341/scroll/wioterminal.go diff --git a/examples/ili9341/basic/main.go b/examples/ili9341/basic/main.go index e49130b63..51e2be79d 100644 --- a/examples/ili9341/basic/main.go +++ b/examples/ili9341/basic/main.go @@ -9,15 +9,6 @@ import ( ) var ( - display = ili9341.NewParallel( - machine.LCD_DATA0, - machine.TFT_WR, - machine.TFT_DC, - machine.TFT_CS, - machine.TFT_RESET, - machine.TFT_RD, - ) - black = color.RGBA{0, 0, 0, 255} white = color.RGBA{255, 255, 255, 255} red = color.RGBA{255, 0, 0, 255} @@ -27,13 +18,13 @@ var ( func main() { - machine.TFT_BACKLIGHT.Configure(machine.PinConfig{machine.PinOutput}) + backlight.Configure(machine.PinConfig{machine.PinOutput}) display.Configure(ili9341.Config{}) width, height := display.Size() display.FillScreen(black) - machine.TFT_BACKLIGHT.High() + backlight.High() display.FillRectangle(0, 0, width/2, height/2, white) display.FillRectangle(width/2, 0, width/2, height/2, red) diff --git a/examples/ili9341/basic/pyportal.go b/examples/ili9341/basic/pyportal.go new file mode 100644 index 000000000..d6973cf01 --- /dev/null +++ b/examples/ili9341/basic/pyportal.go @@ -0,0 +1,22 @@ +// +build pyportal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewParallel( + machine.LCD_DATA0, + machine.TFT_WR, + machine.TFT_DC, + machine.TFT_CS, + machine.TFT_RESET, + machine.TFT_RD, + ) + + backlight = machine.TFT_BACKLIGHT +) diff --git a/examples/ili9341/basic/wioterminal.go b/examples/ili9341/basic/wioterminal.go new file mode 100644 index 000000000..648be64c9 --- /dev/null +++ b/examples/ili9341/basic/wioterminal.go @@ -0,0 +1,35 @@ +// +build wioterminal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewSpi( + machine.SPI3, + machine.LCD_DC, + machine.LCD_CS, + machine.LCD_RESET, + ) + + backlight = machine.LCD_BACKLIGHT_CTR +) + +func init() { + machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) + machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) + + machine.OUTPUT_CTR_5V.High() + machine.OUTPUT_CTR_3V3.Low() + + machine.SPI3.Configure(machine.SPIConfig{ + SCK: machine.LCD_SCK, + MOSI: machine.LCD_MOSI, + MISO: machine.LCD_MISO, + Frequency: 40000000, + }) +} diff --git a/examples/ili9341/pyportal_boing/main.go b/examples/ili9341/pyportal_boing/main.go index 43e4105ea..6b3cfe120 100644 --- a/examples/ili9341/pyportal_boing/main.go +++ b/examples/ili9341/pyportal_boing/main.go @@ -25,15 +25,6 @@ const ( ) var ( - display = ili9341.NewParallel( - machine.LCD_DATA0, - machine.TFT_WR, - machine.TFT_DC, - machine.TFT_CS, - machine.TFT_RESET, - machine.TFT_RD, - ) - frameBuffer = [(graphics.BALLHEIGHT + 8) * (graphics.BALLWIDTH + 8)]uint16{} startTime int64 @@ -56,7 +47,7 @@ var ( func main() { // configure backlight - machine.TFT_BACKLIGHT.Configure(machine.PinConfig{machine.PinOutput}) + backlight.Configure(machine.PinConfig{machine.PinOutput}) // configure display display.Configure(ili9341.Config{}) @@ -64,7 +55,7 @@ func main() { width, height := display.Size() println(width, height) - machine.TFT_BACKLIGHT.High() + backlight.High() display.SetRotation(ili9341.Rotation270) DrawBackground() diff --git a/examples/ili9341/pyportal_boing/pyportal.go b/examples/ili9341/pyportal_boing/pyportal.go new file mode 100644 index 000000000..d6973cf01 --- /dev/null +++ b/examples/ili9341/pyportal_boing/pyportal.go @@ -0,0 +1,22 @@ +// +build pyportal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewParallel( + machine.LCD_DATA0, + machine.TFT_WR, + machine.TFT_DC, + machine.TFT_CS, + machine.TFT_RESET, + machine.TFT_RD, + ) + + backlight = machine.TFT_BACKLIGHT +) diff --git a/examples/ili9341/pyportal_boing/wioterminal.go b/examples/ili9341/pyportal_boing/wioterminal.go new file mode 100644 index 000000000..648be64c9 --- /dev/null +++ b/examples/ili9341/pyportal_boing/wioterminal.go @@ -0,0 +1,35 @@ +// +build wioterminal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewSpi( + machine.SPI3, + machine.LCD_DC, + machine.LCD_CS, + machine.LCD_RESET, + ) + + backlight = machine.LCD_BACKLIGHT_CTR +) + +func init() { + machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) + machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) + + machine.OUTPUT_CTR_5V.High() + machine.OUTPUT_CTR_3V3.Low() + + machine.SPI3.Configure(machine.SPIConfig{ + SCK: machine.LCD_SCK, + MOSI: machine.LCD_MOSI, + MISO: machine.LCD_MISO, + Frequency: 40000000, + }) +} diff --git a/examples/ili9341/scroll/main.go b/examples/ili9341/scroll/main.go index e302fdc3e..3d74fc578 100644 --- a/examples/ili9341/scroll/main.go +++ b/examples/ili9341/scroll/main.go @@ -9,15 +9,6 @@ import ( ) var ( - display = ili9341.NewParallel( - machine.LCD_DATA0, - machine.TFT_WR, - machine.TFT_DC, - machine.TFT_CS, - machine.TFT_RESET, - machine.TFT_RD, - ) - red = color.RGBA{255, 0, 0, 255} blue = color.RGBA{0, 0, 255, 255} green = color.RGBA{0, 255, 0, 255} @@ -27,13 +18,13 @@ var ( func main() { - machine.TFT_BACKLIGHT.Configure(machine.PinConfig{machine.PinOutput}) + backlight.Configure(machine.PinConfig{machine.PinOutput}) display.Configure(ili9341.Config{}) width, height := display.Size() display.FillScreen(black) - machine.TFT_BACKLIGHT.High() + backlight.High() display.FillRectangle(0, 0, width/2, height/2, white) display.FillRectangle(width/2, 0, width/2, height/2, red) diff --git a/examples/ili9341/scroll/pyportal.go b/examples/ili9341/scroll/pyportal.go new file mode 100644 index 000000000..d6973cf01 --- /dev/null +++ b/examples/ili9341/scroll/pyportal.go @@ -0,0 +1,22 @@ +// +build pyportal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewParallel( + machine.LCD_DATA0, + machine.TFT_WR, + machine.TFT_DC, + machine.TFT_CS, + machine.TFT_RESET, + machine.TFT_RD, + ) + + backlight = machine.TFT_BACKLIGHT +) diff --git a/examples/ili9341/scroll/wioterminal.go b/examples/ili9341/scroll/wioterminal.go new file mode 100644 index 000000000..648be64c9 --- /dev/null +++ b/examples/ili9341/scroll/wioterminal.go @@ -0,0 +1,35 @@ +// +build wioterminal + +package main + +import ( + "machine" + + "tinygo.org/x/drivers/ili9341" +) + +var ( + display = ili9341.NewSpi( + machine.SPI3, + machine.LCD_DC, + machine.LCD_CS, + machine.LCD_RESET, + ) + + backlight = machine.LCD_BACKLIGHT_CTR +) + +func init() { + machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) + machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) + + machine.OUTPUT_CTR_5V.High() + machine.OUTPUT_CTR_3V3.Low() + + machine.SPI3.Configure(machine.SPIConfig{ + SCK: machine.LCD_SCK, + MOSI: machine.LCD_MOSI, + MISO: machine.LCD_MISO, + Frequency: 40000000, + }) +} From e5ce7b4b2ff781e213de80e9575e904bf901e5e3 Mon Sep 17 00:00:00 2001 From: sago35 Date: Thu, 21 May 2020 08:21:03 +0900 Subject: [PATCH 04/11] Delete //go:inline annotations --- ili9341/spi_atsamd51.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go index 2e0a70e20..81204eb27 100644 --- a/ili9341/spi_atsamd51.go +++ b/ili9341/spi_atsamd51.go @@ -29,36 +29,30 @@ func NewSpi(bus machine.SPI, dc, cs, rst machine.Pin) *Device { func (pd *spiDriver) configure(config *Config) { } -//go:inline func (pd *spiDriver) write8(b byte) { pd.bus.Tx([]byte{b}, nil) } -//go:inline func (pd *spiDriver) write8n(b byte, n int) { for i := 0; i < n; i++ { pd.write8(b) } } -//go:inline func (pd *spiDriver) write8sl(b []byte) { pd.bus.Tx(b, nil) } -//go:inline func (pd *spiDriver) write16(data uint16) { pd.bus.Transfer2((data << 8) | (data >> 8)) } -//go:inline func (pd *spiDriver) write16n(data uint16, n int) { for i := 0; i < n; i++ { pd.write16(data) } } -//go:inline func (pd *spiDriver) write16sl(data []uint16) { for i, c := 0, len(data)-2; i < c; i += 2 { d := uint32((data[i+1]<<8)|(data[i+1]>>8)) << 16 From 86805a6b71e0a15521027022dd152dbab1bef9d4 Mon Sep 17 00:00:00 2001 From: sago35 Date: Thu, 21 May 2020 20:10:49 +0900 Subject: [PATCH 05/11] Improve SPI performance --- ili9341/spi_atsamd51.go | 78 ++++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 12 deletions(-) diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go index 81204eb27..6725e6937 100644 --- a/ili9341/spi_atsamd51.go +++ b/ili9341/spi_atsamd51.go @@ -3,6 +3,7 @@ package ili9341 import ( + "device/sam" "machine" ) @@ -30,37 +31,90 @@ func (pd *spiDriver) configure(config *Config) { } func (pd *spiDriver) write8(b byte) { - pd.bus.Tx([]byte{b}, nil) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(b)) + + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + } } func (pd *spiDriver) write8n(b byte, n int) { - for i := 0; i < n; i++ { - pd.write8(b) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + + for i, c := 0, n; i < c; i++ { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(b)) + } + + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write8sl(b []byte) { - pd.bus.Tx(b, nil) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + + for i, c := 0, len(b); i < c; i++ { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(b[i])) + } + + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + } } func (pd *spiDriver) write16(data uint16) { - pd.bus.Transfer2((data << 8) | (data >> 8)) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data >> 8))) + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data))) + + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + } } func (pd *spiDriver) write16n(data uint16, n int) { + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for i := 0; i < n; i++ { - pd.write16(data) + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data >> 8))) + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data))) + } + + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write16sl(data []uint16) { - for i, c := 0, len(data)-2; i < c; i += 2 { - d := uint32((data[i+1]<<8)|(data[i+1]>>8)) << 16 - d |= uint32((data[i] << 8) | (data[i] >> 8)) - pd.bus.Transfer4(d) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + + for i, c := 0, len(data); i < c; i++ { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data[i] >> 8))) + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + } + pd.bus.Bus.DATA.Set(uint32(uint8(data[i]))) } - for i, c := len(data)-2, len(data); i < c; i++ { - pd.bus.Transfer2((data[i] << 8) | (data[i] >> 8)) + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { } } From a86a22d530f117092ad5ac7aec3bb583405ee526 Mon Sep 17 00:00:00 2001 From: sago35 Date: Thu, 21 May 2020 22:13:36 +0900 Subject: [PATCH 06/11] Update pin names --- examples/ili9341/pyportal_boing/wioterminal.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/ili9341/pyportal_boing/wioterminal.go b/examples/ili9341/pyportal_boing/wioterminal.go index 648be64c9..eceffbd1c 100644 --- a/examples/ili9341/pyportal_boing/wioterminal.go +++ b/examples/ili9341/pyportal_boing/wioterminal.go @@ -12,11 +12,11 @@ var ( display = ili9341.NewSpi( machine.SPI3, machine.LCD_DC, - machine.LCD_CS, + machine.LCD_SS_PIN, machine.LCD_RESET, ) - backlight = machine.LCD_BACKLIGHT_CTR + backlight = machine.LCD_BACKLIGHT ) func init() { @@ -27,9 +27,9 @@ func init() { machine.OUTPUT_CTR_3V3.Low() machine.SPI3.Configure(machine.SPIConfig{ - SCK: machine.LCD_SCK, - MOSI: machine.LCD_MOSI, - MISO: machine.LCD_MISO, + SCK: machine.LCD_SCK_PIN, + MOSI: machine.LCD_MOSI_PIN, + MISO: machine.LCD_MISO_PIN, Frequency: 40000000, }) } From 71e5cc39298828fa04e7cf40a5ff9a33c76252d1 Mon Sep 17 00:00:00 2001 From: sago35 Date: Sun, 24 May 2020 14:20:39 +0900 Subject: [PATCH 07/11] Update pin names --- examples/ili9341/basic/wioterminal.go | 10 +++++----- examples/ili9341/scroll/wioterminal.go | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/ili9341/basic/wioterminal.go b/examples/ili9341/basic/wioterminal.go index 648be64c9..eceffbd1c 100644 --- a/examples/ili9341/basic/wioterminal.go +++ b/examples/ili9341/basic/wioterminal.go @@ -12,11 +12,11 @@ var ( display = ili9341.NewSpi( machine.SPI3, machine.LCD_DC, - machine.LCD_CS, + machine.LCD_SS_PIN, machine.LCD_RESET, ) - backlight = machine.LCD_BACKLIGHT_CTR + backlight = machine.LCD_BACKLIGHT ) func init() { @@ -27,9 +27,9 @@ func init() { machine.OUTPUT_CTR_3V3.Low() machine.SPI3.Configure(machine.SPIConfig{ - SCK: machine.LCD_SCK, - MOSI: machine.LCD_MOSI, - MISO: machine.LCD_MISO, + SCK: machine.LCD_SCK_PIN, + MOSI: machine.LCD_MOSI_PIN, + MISO: machine.LCD_MISO_PIN, Frequency: 40000000, }) } diff --git a/examples/ili9341/scroll/wioterminal.go b/examples/ili9341/scroll/wioterminal.go index 648be64c9..eceffbd1c 100644 --- a/examples/ili9341/scroll/wioterminal.go +++ b/examples/ili9341/scroll/wioterminal.go @@ -12,11 +12,11 @@ var ( display = ili9341.NewSpi( machine.SPI3, machine.LCD_DC, - machine.LCD_CS, + machine.LCD_SS_PIN, machine.LCD_RESET, ) - backlight = machine.LCD_BACKLIGHT_CTR + backlight = machine.LCD_BACKLIGHT ) func init() { @@ -27,9 +27,9 @@ func init() { machine.OUTPUT_CTR_3V3.Low() machine.SPI3.Configure(machine.SPIConfig{ - SCK: machine.LCD_SCK, - MOSI: machine.LCD_MOSI, - MISO: machine.LCD_MISO, + SCK: machine.LCD_SCK_PIN, + MOSI: machine.LCD_MOSI_PIN, + MISO: machine.LCD_MISO_PIN, Frequency: 40000000, }) } From 33c4d3a82b3244b6654474d139008f50107e5a62 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 27 May 2020 23:30:06 +0900 Subject: [PATCH 08/11] Fix tests --- Makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 9fc48c8e7..f9bae8b1e 100644 --- a/Makefile +++ b/Makefile @@ -57,9 +57,11 @@ smoke-test: @md5sum ./build/test.hex tinygo build -size short -o ./build/test.hex -target=microbit ./examples/hub75/main.go @md5sum ./build/test.hex - tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/basic/main.go + tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/basic @md5sum ./build/test.hex - tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/scroll/main.go + tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/pyportal_boing + @md5sum ./build/test.hex + tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/scroll @md5sum ./build/test.hex tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/lis3dh/main.go @md5sum ./build/test.hex From 88fcc211db7daff58b486108404f578d9940068c Mon Sep 17 00:00:00 2001 From: sago35 Date: Sun, 7 Jun 2020 07:44:00 +0900 Subject: [PATCH 09/11] Remove unnecessary power control --- examples/ili9341/basic/wioterminal.go | 6 ------ examples/ili9341/pyportal_boing/wioterminal.go | 6 ------ examples/ili9341/scroll/wioterminal.go | 6 ------ 3 files changed, 18 deletions(-) diff --git a/examples/ili9341/basic/wioterminal.go b/examples/ili9341/basic/wioterminal.go index eceffbd1c..a7cd96b64 100644 --- a/examples/ili9341/basic/wioterminal.go +++ b/examples/ili9341/basic/wioterminal.go @@ -20,12 +20,6 @@ var ( ) func init() { - machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) - machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) - - machine.OUTPUT_CTR_5V.High() - machine.OUTPUT_CTR_3V3.Low() - machine.SPI3.Configure(machine.SPIConfig{ SCK: machine.LCD_SCK_PIN, MOSI: machine.LCD_MOSI_PIN, diff --git a/examples/ili9341/pyportal_boing/wioterminal.go b/examples/ili9341/pyportal_boing/wioterminal.go index eceffbd1c..a7cd96b64 100644 --- a/examples/ili9341/pyportal_boing/wioterminal.go +++ b/examples/ili9341/pyportal_boing/wioterminal.go @@ -20,12 +20,6 @@ var ( ) func init() { - machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) - machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) - - machine.OUTPUT_CTR_5V.High() - machine.OUTPUT_CTR_3V3.Low() - machine.SPI3.Configure(machine.SPIConfig{ SCK: machine.LCD_SCK_PIN, MOSI: machine.LCD_MOSI_PIN, diff --git a/examples/ili9341/scroll/wioterminal.go b/examples/ili9341/scroll/wioterminal.go index eceffbd1c..a7cd96b64 100644 --- a/examples/ili9341/scroll/wioterminal.go +++ b/examples/ili9341/scroll/wioterminal.go @@ -20,12 +20,6 @@ var ( ) func init() { - machine.OUTPUT_CTR_5V.Configure(machine.PinConfig{machine.PinOutput}) - machine.OUTPUT_CTR_3V3.Configure(machine.PinConfig{machine.PinOutput}) - - machine.OUTPUT_CTR_5V.High() - machine.OUTPUT_CTR_3V3.Low() - machine.SPI3.Configure(machine.SPIConfig{ SCK: machine.LCD_SCK_PIN, MOSI: machine.LCD_MOSI_PIN, From eca6f9e0d6b1fe9ab964969b212cc3054be2257b Mon Sep 17 00:00:00 2001 From: sago35 Date: Tue, 9 Jun 2020 20:12:20 +0900 Subject: [PATCH 10/11] Remove unnecessary pins --- ili9341/spi_atsamd51.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go index 6725e6937..f29d3ec12 100644 --- a/ili9341/spi_atsamd51.go +++ b/ili9341/spi_atsamd51.go @@ -9,10 +9,6 @@ import ( type spiDriver struct { bus machine.SPI - dc machine.Pin - rst machine.Pin - cs machine.Pin - rd machine.Pin } func NewSpi(bus machine.SPI, dc, cs, rst machine.Pin) *Device { From 5cd2e0530a60dcfef054ca372b6287807edebb6a Mon Sep 17 00:00:00 2001 From: sago35 Date: Sun, 14 Jun 2020 17:53:08 +0900 Subject: [PATCH 11/11] Fix register name --- ili9341/spi_atsamd51.go | 54 ++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/ili9341/spi_atsamd51.go b/ili9341/spi_atsamd51.go index f29d3ec12..a7ea9ff06 100644 --- a/ili9341/spi_atsamd51.go +++ b/ili9341/spi_atsamd51.go @@ -27,90 +27,90 @@ func (pd *spiDriver) configure(config *Config) { } func (pd *spiDriver) write8(b byte) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(b)) - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write8n(b byte, n int) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) for i, c := 0, n; i < c; i++ { - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(b)) } - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write8sl(b []byte) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) for i, c := 0, len(b); i < c; i++ { - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(b[i])) } - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write16(data uint16) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data >> 8))) - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data))) - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write16n(data uint16, n int) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) for i := 0; i < n; i++ { - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data >> 8))) - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data))) } - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } } func (pd *spiDriver) write16sl(data []uint16) { - pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIS_CTRLB_RXEN) + pd.bus.Bus.CTRLB.ClearBits(sam.SERCOM_SPIM_CTRLB_RXEN) for i, c := 0, len(data); i < c; i++ { - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data[i] >> 8))) - for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIS_INTFLAG_DRE) { + for !pd.bus.Bus.INTFLAG.HasBits(sam.SERCOM_SPIM_INTFLAG_DRE) { } pd.bus.Bus.DATA.Set(uint32(uint8(data[i]))) } - pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIS_CTRLB_RXEN) - for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIS_SYNCBUSY_CTRLB) { + pd.bus.Bus.CTRLB.SetBits(sam.SERCOM_SPIM_CTRLB_RXEN) + for pd.bus.Bus.SYNCBUSY.HasBits(sam.SERCOM_SPIM_SYNCBUSY_CTRLB) { } }