diff --git a/src/machine/board_arduino_nano33.go b/src/machine/board_arduino_nano33.go index 0a64e7ca..9e90915c 100644 --- a/src/machine/board_arduino_nano33.go +++ b/src/machine/board_arduino_nano33.go @@ -122,7 +122,12 @@ const ( // SPI on the Arduino Nano 33. var ( - SPI0 = SPI{Bus: sam.SERCOM1_SPI} + SPI0 = SPI{Bus: sam.SERCOM1_SPI, + SCK: SPI0_SCK_PIN, + MOSI: SPI0_MOSI_PIN, + MISO: SPI0_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad0} ) // I2S pins diff --git a/src/machine/board_circuitplay_express.go b/src/machine/board_circuitplay_express.go index 66ffd201..01d7c20a 100644 --- a/src/machine/board_circuitplay_express.go +++ b/src/machine/board_circuitplay_express.go @@ -111,7 +111,12 @@ const ( // SPI on the Circuit Playground Express. var ( - SPI0 = SPI{Bus: sam.SERCOM3_SPI} + SPI0 = SPI{Bus: sam.SERCOM3_SPI, + SCK: SPI0_SCK_PIN, + MOSI: SPI0_MOSI_PIN, + MISO: SPI0_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad0} ) // I2S pins diff --git a/src/machine/board_feather-m0.go b/src/machine/board_feather-m0.go index 8457e94f..3f5e87e4 100644 --- a/src/machine/board_feather-m0.go +++ b/src/machine/board_feather-m0.go @@ -85,7 +85,12 @@ const ( // SPI on the Feather M0. var ( - SPI0 = SPI{Bus: sam.SERCOM4_SPI} + SPI0 = SPI{Bus: sam.SERCOM4_SPI, + SCK: SPI0_SCK_PIN, + MOSI: SPI0_MOSI_PIN, + MISO: SPI0_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad0} ) // I2S pins diff --git a/src/machine/board_itsybitsy-m0.go b/src/machine/board_itsybitsy-m0.go index fa2134e8..dc934982 100644 --- a/src/machine/board_itsybitsy-m0.go +++ b/src/machine/board_itsybitsy-m0.go @@ -2,7 +2,9 @@ package machine -import "device/sam" +import ( + "device/sam" +) // GPIO Pins const ( @@ -85,7 +87,30 @@ const ( // SPI on the ItsyBitsy M0. var ( - SPI0 = SPI{Bus: sam.SERCOM4_SPI} + SPI0 = SPI{Bus: sam.SERCOM4_SPI, + SCK: SPI0_SCK_PIN, + MOSI: SPI0_MOSI_PIN, + MISO: SPI0_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad0} +) + +// "Internal" SPI pins; SPI flash is attached to these on ItsyBitsy M0 +const ( + SPI1_CS_PIN = PA27 + SPI1_SCK_PIN = PB23 + SPI1_MOSI_PIN = PB22 + SPI1_MISO_PIN = PB03 +) + +// "Internal" SPI on Sercom 5 +var ( + SPI1 = SPI{Bus: sam.SERCOM5_SPI, + SCK: SPI1_SCK_PIN, + MOSI: SPI1_MOSI_PIN, + MISO: SPI1_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad1} ) // I2S pins diff --git a/src/machine/board_trinket.go b/src/machine/board_trinket.go index 3d2eaa0a..0bfb3c55 100644 --- a/src/machine/board_trinket.go +++ b/src/machine/board_trinket.go @@ -62,7 +62,12 @@ const ( // SPI on the Trinket M0. var ( - SPI0 = SPI{Bus: sam.SERCOM0_SPI} + SPI0 = SPI{Bus: sam.SERCOM0_SPI, + SCK: SPI0_SCK_PIN, + MOSI: SPI0_MOSI_PIN, + MISO: SPI0_MISO_PIN, + DOpad: spiTXPad2SCK3, + DIpad: sercomRXPad0} ) // I2C pins diff --git a/src/machine/machine_atsamd21.go b/src/machine/machine_atsamd21.go index cd1743ec..d0b26e5e 100644 --- a/src/machine/machine_atsamd21.go +++ b/src/machine/machine_atsamd21.go @@ -871,7 +871,12 @@ func waitForSync() { // SPI type SPI struct { - Bus *sam.SERCOM_SPI_Type + Bus *sam.SERCOM_SPI_Type + SCK Pin + MOSI Pin + MISO Pin + DOpad int + DIpad int } // SPIConfig is used to store config info for SPI. @@ -886,12 +891,13 @@ type SPIConfig struct { // Configure is intended to setup the SPI interface. func (spi SPI) Configure(config SPIConfig) { - config.SCK = SPI0_SCK_PIN - config.MOSI = SPI0_MOSI_PIN - config.MISO = SPI0_MISO_PIN - doPad := spiTXPad2SCK3 - diPad := sercomRXPad0 + config.SCK = spi.SCK + config.MOSI = spi.MOSI + config.MISO = spi.MISO + + doPad := spi.DOpad + diPad := spi.DIpad // set default frequency if config.Frequency == 0 {