mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-19 20:14:04 +00:00
machine/samd51: allow setting pinmode for each of the SPI pins
Signed-off-by: Ron Evans <ron@hybridgroup.com>
This commit is contained in:
@@ -79,5 +79,7 @@ var (
|
|||||||
MOSI: SPI0_MOSI_PIN,
|
MOSI: SPI0_MOSI_PIN,
|
||||||
MISO: SPI0_MISO_PIN,
|
MISO: SPI0_MISO_PIN,
|
||||||
DOpad: spiTXPad2SCK3,
|
DOpad: spiTXPad2SCK3,
|
||||||
DIpad: sercomRXPad0}
|
DIpad: sercomRXPad3,
|
||||||
|
MISOPinMode: PinSERCOM,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -890,6 +890,9 @@ type SPI struct {
|
|||||||
MISO Pin
|
MISO Pin
|
||||||
DOpad int
|
DOpad int
|
||||||
DIpad int
|
DIpad int
|
||||||
|
SCKPinMode PinMode
|
||||||
|
MOSIPinMode PinMode
|
||||||
|
MISOPinMode PinMode
|
||||||
}
|
}
|
||||||
|
|
||||||
// SPIConfig is used to store config info for SPI.
|
// SPIConfig is used to store config info for SPI.
|
||||||
@@ -904,10 +907,6 @@ type SPIConfig struct {
|
|||||||
|
|
||||||
// Configure is intended to setup the SPI interface.
|
// Configure is intended to setup the SPI interface.
|
||||||
func (spi SPI) Configure(config SPIConfig) {
|
func (spi SPI) Configure(config SPIConfig) {
|
||||||
config.SCK = spi.SCK
|
|
||||||
config.MOSI = spi.MOSI
|
|
||||||
config.MISO = spi.MISO
|
|
||||||
|
|
||||||
doPad := spi.DOpad
|
doPad := spi.DOpad
|
||||||
diPad := spi.DIpad
|
diPad := spi.DIpad
|
||||||
|
|
||||||
@@ -922,9 +921,19 @@ func (spi SPI) Configure(config SPIConfig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// enable pins
|
// enable pins
|
||||||
config.SCK.Configure(PinConfig{Mode: PinSERCOMAlt})
|
if spi.SCKPinMode == 0 {
|
||||||
config.MOSI.Configure(PinConfig{Mode: PinSERCOMAlt})
|
spi.SCKPinMode = PinSERCOMAlt
|
||||||
config.MISO.Configure(PinConfig{Mode: PinSERCOMAlt})
|
}
|
||||||
|
if spi.MOSIPinMode == 0 {
|
||||||
|
spi.MOSIPinMode = PinSERCOMAlt
|
||||||
|
}
|
||||||
|
if spi.MISOPinMode == 0 {
|
||||||
|
spi.MISOPinMode = PinSERCOMAlt
|
||||||
|
}
|
||||||
|
|
||||||
|
spi.SCK.Configure(PinConfig{Mode: spi.SCKPinMode})
|
||||||
|
spi.MOSI.Configure(PinConfig{Mode: spi.MOSIPinMode})
|
||||||
|
spi.MISO.Configure(PinConfig{Mode: spi.MISOPinMode})
|
||||||
|
|
||||||
// reset SERCOM
|
// reset SERCOM
|
||||||
spi.Bus.CTRLA.SetBits(sam.SERCOM_SPIM_CTRLA_SWRST)
|
spi.Bus.CTRLA.SetBits(sam.SERCOM_SPIM_CTRLA_SWRST)
|
||||||
|
|||||||
Reference in New Issue
Block a user