From 9f6783670f86107a7aeb02d2f7c795fe18a1fd7a Mon Sep 17 00:00:00 2001 From: Olaf Flebbe Date: Sun, 24 Apr 2022 21:06:27 +0200 Subject: [PATCH] sdcard: support thingplus-rp2040 The instances of SPI interfaces SPI0, SPI1, ... are pointers to SPI types on rp2040 machines, rather plain values like other machines. This needs restructuring the sdcard API to take a pointer to the SPI interface rather the SPI type itself. Removed waitserial() since it needs modem control lines not available on most boards --- examples/sdcard/console/feather-m4.go | 2 +- examples/sdcard/console/grandcentral-m4.go | 2 +- examples/sdcard/console/m0.go | 2 +- examples/sdcard/console/main.go | 10 +--------- examples/sdcard/console/p1am-100.go | 2 +- examples/sdcard/console/pygamer.go | 2 +- examples/sdcard/console/pyportal.go | 2 +- examples/sdcard/console/thingplus-rp2040.go | 18 ++++++++++++++++++ examples/sdcard/console/wioterminal.go | 2 +- examples/sdcard/tinyfs/feather-m4.go | 2 +- examples/sdcard/tinyfs/grandcentral-m4.go | 2 +- examples/sdcard/tinyfs/m0.go | 2 +- examples/sdcard/tinyfs/main.go | 11 +---------- examples/sdcard/tinyfs/p1am-100.go | 2 +- examples/sdcard/tinyfs/pygamer.go | 2 +- examples/sdcard/tinyfs/pyportal.go | 2 +- examples/sdcard/tinyfs/thingplus-rp2040.go | 18 ++++++++++++++++++ examples/sdcard/tinyfs/wioterminal.go | 2 +- sdcard/sdcard.go | 4 ++-- 19 files changed, 54 insertions(+), 35 deletions(-) create mode 100644 examples/sdcard/console/thingplus-rp2040.go create mode 100644 examples/sdcard/tinyfs/thingplus-rp2040.go diff --git a/examples/sdcard/console/feather-m4.go b/examples/sdcard/console/feather-m4.go index 25205ad..2cf3bf8 100644 --- a/examples/sdcard/console/feather-m4.go +++ b/examples/sdcard/console/feather-m4.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/console/grandcentral-m4.go b/examples/sdcard/console/grandcentral-m4.go index d1ea2db..924c8ea 100644 --- a/examples/sdcard/console/grandcentral-m4.go +++ b/examples/sdcard/console/grandcentral-m4.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI1 + spi = &machine.SPI1 sckPin = machine.SDCARD_SCK_PIN sdoPin = machine.SDCARD_SDO_PIN sdiPin = machine.SDCARD_SDI_PIN diff --git a/examples/sdcard/console/m0.go b/examples/sdcard/console/m0.go index 1ed6b25..904d49e 100644 --- a/examples/sdcard/console/m0.go +++ b/examples/sdcard/console/m0.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/console/main.go b/examples/sdcard/console/main.go index 26f5eed..7f3cdee 100644 --- a/examples/sdcard/console/main.go +++ b/examples/sdcard/console/main.go @@ -9,7 +9,7 @@ import ( ) var ( - spi machine.SPI + spi *machine.SPI sckPin machine.Pin sdoPin machine.Pin sdiPin machine.Pin @@ -18,7 +18,6 @@ var ( ) func main() { - waitSerial() fmt.Printf("sdcard console\r\n") led := ledPin @@ -42,10 +41,3 @@ func main() { time.Sleep(200 * time.Millisecond) } } - -// Wait for user to open serial console -func waitSerial() { - for !machine.Serial.DTR() { - time.Sleep(100 * time.Millisecond) - } -} diff --git a/examples/sdcard/console/p1am-100.go b/examples/sdcard/console/p1am-100.go index 5058099..190d287 100644 --- a/examples/sdcard/console/p1am-100.go +++ b/examples/sdcard/console/p1am-100.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SDCARD_SPI + spi = &machine.SDCARD_SPI sckPin = machine.SDCARD_SCK_PIN sdoPin = machine.SDCARD_SDO_PIN sdiPin = machine.SDCARD_SDI_PIN diff --git a/examples/sdcard/console/pygamer.go b/examples/sdcard/console/pygamer.go index 849600a..bc891e2 100644 --- a/examples/sdcard/console/pygamer.go +++ b/examples/sdcard/console/pygamer.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/console/pyportal.go b/examples/sdcard/console/pyportal.go index ec8d250..470922b 100644 --- a/examples/sdcard/console/pyportal.go +++ b/examples/sdcard/console/pyportal.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/console/thingplus-rp2040.go b/examples/sdcard/console/thingplus-rp2040.go new file mode 100644 index 0000000..f627064 --- /dev/null +++ b/examples/sdcard/console/thingplus-rp2040.go @@ -0,0 +1,18 @@ +//go:build thingplus_rp2040 +// +build thingplus_rp2040 + +package main + +import ( + "machine" +) + +func init() { + spi = machine.SPI1 + sckPin = machine.SPI1_SCK_PIN + sdoPin = machine.SPI1_SDO_PIN + sdiPin = machine.SPI1_SDI_PIN + csPin = machine.GPIO9 + + ledPin = machine.LED +} diff --git a/examples/sdcard/console/wioterminal.go b/examples/sdcard/console/wioterminal.go index f439838..3fccb06 100644 --- a/examples/sdcard/console/wioterminal.go +++ b/examples/sdcard/console/wioterminal.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI2 + spi = &machine.SPI2 sckPin = machine.SCK2 sdoPin = machine.SDO2 sdiPin = machine.SDI2 diff --git a/examples/sdcard/tinyfs/feather-m4.go b/examples/sdcard/tinyfs/feather-m4.go index 25205ad..2cf3bf8 100644 --- a/examples/sdcard/tinyfs/feather-m4.go +++ b/examples/sdcard/tinyfs/feather-m4.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/tinyfs/grandcentral-m4.go b/examples/sdcard/tinyfs/grandcentral-m4.go index d1ea2db..924c8ea 100644 --- a/examples/sdcard/tinyfs/grandcentral-m4.go +++ b/examples/sdcard/tinyfs/grandcentral-m4.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI1 + spi = &machine.SPI1 sckPin = machine.SDCARD_SCK_PIN sdoPin = machine.SDCARD_SDO_PIN sdiPin = machine.SDCARD_SDI_PIN diff --git a/examples/sdcard/tinyfs/m0.go b/examples/sdcard/tinyfs/m0.go index 1ed6b25..904d49e 100644 --- a/examples/sdcard/tinyfs/m0.go +++ b/examples/sdcard/tinyfs/m0.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/tinyfs/main.go b/examples/sdcard/tinyfs/main.go index f3be72b..4993364 100644 --- a/examples/sdcard/tinyfs/main.go +++ b/examples/sdcard/tinyfs/main.go @@ -11,7 +11,7 @@ import ( ) var ( - spi machine.SPI + spi *machine.SPI sckPin machine.Pin sdoPin machine.Pin sdiPin machine.Pin @@ -20,8 +20,6 @@ var ( ) func main() { - waitSerial() - sd := sdcard.New(spi, sckPin, sdoPin, sdiPin, csPin) err := sd.Configure() if err != nil { @@ -40,10 +38,3 @@ func main() { console.RunFor(&sd, filesystem) } - -// Wait for user to open serial console -func waitSerial() { - for !machine.Serial.DTR() { - time.Sleep(100 * time.Millisecond) - } -} diff --git a/examples/sdcard/tinyfs/p1am-100.go b/examples/sdcard/tinyfs/p1am-100.go index 5058099..190d287 100644 --- a/examples/sdcard/tinyfs/p1am-100.go +++ b/examples/sdcard/tinyfs/p1am-100.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SDCARD_SPI + spi = &machine.SDCARD_SPI sckPin = machine.SDCARD_SCK_PIN sdoPin = machine.SDCARD_SDO_PIN sdiPin = machine.SDCARD_SDI_PIN diff --git a/examples/sdcard/tinyfs/pygamer.go b/examples/sdcard/tinyfs/pygamer.go index 849600a..bc891e2 100644 --- a/examples/sdcard/tinyfs/pygamer.go +++ b/examples/sdcard/tinyfs/pygamer.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/tinyfs/pyportal.go b/examples/sdcard/tinyfs/pyportal.go index ec8d250..470922b 100644 --- a/examples/sdcard/tinyfs/pyportal.go +++ b/examples/sdcard/tinyfs/pyportal.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI0 + spi = &machine.SPI0 sckPin = machine.SPI0_SCK_PIN sdoPin = machine.SPI0_SDO_PIN sdiPin = machine.SPI0_SDI_PIN diff --git a/examples/sdcard/tinyfs/thingplus-rp2040.go b/examples/sdcard/tinyfs/thingplus-rp2040.go new file mode 100644 index 0000000..f627064 --- /dev/null +++ b/examples/sdcard/tinyfs/thingplus-rp2040.go @@ -0,0 +1,18 @@ +//go:build thingplus_rp2040 +// +build thingplus_rp2040 + +package main + +import ( + "machine" +) + +func init() { + spi = machine.SPI1 + sckPin = machine.SPI1_SCK_PIN + sdoPin = machine.SPI1_SDO_PIN + sdiPin = machine.SPI1_SDI_PIN + csPin = machine.GPIO9 + + ledPin = machine.LED +} diff --git a/examples/sdcard/tinyfs/wioterminal.go b/examples/sdcard/tinyfs/wioterminal.go index f439838..3fccb06 100644 --- a/examples/sdcard/tinyfs/wioterminal.go +++ b/examples/sdcard/tinyfs/wioterminal.go @@ -8,7 +8,7 @@ import ( ) func init() { - spi = machine.SPI2 + spi = &machine.SPI2 sckPin = machine.SCK2 sdoPin = machine.SDO2 sdiPin = machine.SDI2 diff --git a/sdcard/sdcard.go b/sdcard/sdcard.go index b8955e8..d3079cc 100644 --- a/sdcard/sdcard.go +++ b/sdcard/sdcard.go @@ -28,7 +28,7 @@ var ( ) type Device struct { - bus machine.SPI + bus *machine.SPI sck machine.Pin sdo machine.Pin sdi machine.Pin @@ -41,7 +41,7 @@ type Device struct { CSD *CSD } -func New(b machine.SPI, sck, sdo, sdi, cs machine.Pin) Device { +func New(b *machine.SPI, sck, sdo, sdi, cs machine.Pin) Device { return Device{ bus: b, cs: cs,