Updated SPI pins so that they are configurable, enabling multiple SPI sercoms for ATSAMD21

This commit is contained in:
BCG
2019-08-28 02:04:45 -04:00
committed by Ron Evans
parent 7c5f943564
commit 8a5fa51f60
6 changed files with 63 additions and 12 deletions
+6 -1
View File
@@ -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
+6 -1
View File
@@ -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
+6 -1
View File
@@ -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
+27 -2
View File
@@ -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
+6 -1
View File
@@ -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
+12 -6
View File
@@ -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 {