Skip to content

Commit 0c880ec

Browse files
authored
Standardize SAMD51 UART settings (#1155)
* machine/samd51: standardize samd51 uart settings
1 parent 64d51b2 commit 0c880ec

11 files changed

+238
-154
lines changed

src/machine/board_feather-m4.go

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
// +build sam,atsamd51,feather_m4
1+
// +build feather_m4
22

33
package machine
44

5-
import "device/sam"
6-
75
// used to reset into bootloader
86
const RESET_MAGIC_VALUE = 0xf01669ef
97

@@ -47,13 +45,11 @@ const (
4745
USBCDC_DP_PIN = PA25
4846
)
4947

50-
// UART1 pins
5148
const (
5249
UART_TX_PIN = D1
5350
UART_RX_PIN = D0
5451
)
5552

56-
// UART2 pins
5753
const (
5854
UART2_TX_PIN = A4
5955
UART2_RX_PIN = A5
@@ -65,29 +61,13 @@ const (
6561
SCL_PIN = D21 // SCL: SERCOM2/PAD[1]
6662
)
6763

68-
// I2C on the Feather M4.
69-
var (
70-
I2C0 = I2C{
71-
Bus: sam.SERCOM2_I2CM,
72-
SERCOM: 2,
73-
}
74-
)
75-
7664
// SPI pins
7765
const (
7866
SPI0_SCK_PIN = D25 // SCK: SERCOM1/PAD[1]
7967
SPI0_MOSI_PIN = D24 // MOSI: SERCOM1/PAD[3]
8068
SPI0_MISO_PIN = D23 // MISO: SERCOM1/PAD[2]
8169
)
8270

83-
// SPI on the Feather M4.
84-
var (
85-
SPI0 = SPI{
86-
Bus: sam.SERCOM1_SPIM,
87-
SERCOM: 1,
88-
}
89-
)
90-
9171
// USB CDC identifiers
9272
const (
9373
usb_STRING_PRODUCT = "Adafruit Feather M4"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// +build sam,atsamd51,feather_m4
2+
3+
package machine
4+
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
9+
10+
var (
11+
UART1 = UART{
12+
Buffer: NewRingBuffer(),
13+
Bus: sam.SERCOM5_USART_INT,
14+
SERCOM: 5,
15+
}
16+
17+
UART2 = UART{
18+
Buffer: NewRingBuffer(),
19+
Bus: sam.SERCOM0_USART_INT,
20+
SERCOM: 0,
21+
}
22+
)
23+
24+
func init() {
25+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM5_2, UART1.handleInterrupt)
26+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
27+
}
28+
29+
// I2C on the Feather M4.
30+
var (
31+
I2C0 = I2C{
32+
Bus: sam.SERCOM2_I2CM,
33+
SERCOM: 2,
34+
}
35+
)
36+
37+
// SPI on the Feather M4.
38+
var (
39+
SPI0 = SPI{
40+
Bus: sam.SERCOM1_SPIM,
41+
SERCOM: 1,
42+
}
43+
)

src/machine/board_itsybitsy-m4.go

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
// +build sam,atsamd51,itsybitsy_m4
1+
// +build itsybitsy_m4
22

33
package machine
44

5-
import "device/sam"
6-
75
// used to reset into bootloader
86
const RESET_MAGIC_VALUE = 0xf01669ef
97

@@ -51,45 +49,24 @@ const (
5149
UART_RX_PIN = D0
5250
)
5351

54-
// UART1 var is on SERCOM3, defined in atsamd51.go
55-
56-
// UART2 pins
5752
const (
5853
UART2_TX_PIN = A4
5954
UART2_RX_PIN = D2
6055
)
6156

62-
// UART2 var is on SERCOM0, defined in atsamd51.go
63-
6457
// I2C pins
6558
const (
6659
SDA_PIN = PA12 // SDA: SERCOM2/PAD[0]
6760
SCL_PIN = PA13 // SCL: SERCOM2/PAD[1]
6861
)
6962

70-
// I2C on the ItsyBitsy M4.
71-
var (
72-
I2C0 = I2C{
73-
Bus: sam.SERCOM2_I2CM,
74-
SERCOM: 2,
75-
}
76-
)
77-
7863
// SPI pins
7964
const (
8065
SPI0_SCK_PIN = PA01 // SCK: SERCOM1/PAD[1]
8166
SPI0_MOSI_PIN = PA00 // MOSI: SERCOM1/PAD[0]
8267
SPI0_MISO_PIN = PB23 // MISO: SERCOM1/PAD[3]
8368
)
8469

85-
// SPI on the ItsyBitsy M4.
86-
var (
87-
SPI0 = SPI{
88-
Bus: sam.SERCOM1_SPIM,
89-
SERCOM: 1,
90-
}
91-
)
92-
9370
// USB CDC identifiers
9471
const (
9572
usb_STRING_PRODUCT = "Adafruit ItsyBitsy M4"
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// +build sam,atsamd51,itsybitsy_m4
2+
3+
package machine
4+
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
9+
10+
var (
11+
UART1 = UART{
12+
Buffer: NewRingBuffer(),
13+
Bus: sam.SERCOM3_USART_INT,
14+
SERCOM: 3,
15+
}
16+
17+
UART2 = UART{
18+
Buffer: NewRingBuffer(),
19+
Bus: sam.SERCOM0_USART_INT,
20+
SERCOM: 0,
21+
}
22+
)
23+
24+
func init() {
25+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM3_2, UART1.handleInterrupt)
26+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
27+
}
28+
29+
// I2C on the ItsyBitsy M4.
30+
var (
31+
I2C0 = I2C{
32+
Bus: sam.SERCOM2_I2CM,
33+
SERCOM: 2,
34+
}
35+
)
36+
37+
// SPI on the ItsyBitsy M4.
38+
var (
39+
SPI0 = SPI{
40+
Bus: sam.SERCOM1_SPIM,
41+
SERCOM: 1,
42+
}
43+
)

src/machine/board_metro-m4-airlift.go

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
// +build sam,atsamd51,metro_m4_airlift
1+
// +build metro_m4_airlift
22

33
package machine
44

5-
import "device/sam"
6-
75
// used to reset into bootloader
86
const RESET_MAGIC_VALUE = 0xf01669ef
97

@@ -53,7 +51,10 @@ const (
5351
UART_RX_PIN = D0
5452
)
5553

56-
// Note: UART1 is on SERCOM3, defined in machine_atsamd51.go
54+
const (
55+
UART2_TX_PIN = PA04
56+
UART2_RX_PIN = PA07
57+
)
5758

5859
const (
5960
NINA_CS = PA15
@@ -66,23 +67,12 @@ const (
6667
NINA_RTS = PB23
6768
)
6869

69-
// UART2 is on SERCOM0, defined in machine_atsamd51.go, and connects to the
70-
// onboard ESP32-WROOM chip.
71-
7270
// I2C pins
7371
const (
7472
SDA_PIN = PB02 // SDA: SERCOM5/PAD[0]
7573
SCL_PIN = PB03 // SCL: SERCOM5/PAD[1]
7674
)
7775

78-
// I2C on the Metro M4.
79-
var (
80-
I2C0 = I2C{
81-
Bus: sam.SERCOM5_I2CM,
82-
SERCOM: 5,
83-
}
84-
)
85-
8676
// SPI pins
8777
const (
8878
SPI0_SCK_PIN = PA13 // SCK: SERCOM2/PAD[1]
@@ -94,29 +84,12 @@ const (
9484
NINA_SCK = SPI0_SCK_PIN
9585
)
9686

97-
// SPI on the Metro M4.
98-
var (
99-
SPI0 = SPI{
100-
Bus: sam.SERCOM2_SPIM,
101-
SERCOM: 2,
102-
}
103-
NINA_SPI = SPI0
104-
)
105-
10687
const (
10788
SPI1_SCK_PIN = D12 // MISO: SERCOM1/PAD[1]
10889
SPI1_MOSI_PIN = D11 // MOSI: SERCOM1/PAD[3]
10990
SPI1_MISO_PIN = D13 // SCK: SERCOM1/PAD[0]
11091
)
11192

112-
// SPI1 on the Metro M4 on pins 11,12,13
113-
var (
114-
SPI1 = SPI{
115-
Bus: sam.SERCOM1_SPIM,
116-
SERCOM: 1,
117-
}
118-
)
119-
12093
// USB CDC identifiers
12194
const (
12295
usb_STRING_PRODUCT = "Adafruit Metro M4 Airlift Lite"
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// +build sam,atsamd51,metro_m4_airlift
2+
3+
package machine
4+
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
9+
10+
var (
11+
UART1 = UART{
12+
Buffer: NewRingBuffer(),
13+
Bus: sam.SERCOM3_USART_INT,
14+
SERCOM: 3,
15+
}
16+
17+
UART2 = UART{
18+
Buffer: NewRingBuffer(),
19+
Bus: sam.SERCOM0_USART_INT,
20+
SERCOM: 0,
21+
}
22+
)
23+
24+
func init() {
25+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM3_2, UART1.handleInterrupt)
26+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
27+
}
28+
29+
// I2C on the Metro M4.
30+
var (
31+
I2C0 = I2C{
32+
Bus: sam.SERCOM5_I2CM,
33+
SERCOM: 5,
34+
}
35+
)
36+
37+
// SPI on the Metro M4.
38+
var (
39+
SPI0 = SPI{
40+
Bus: sam.SERCOM2_SPIM,
41+
SERCOM: 2,
42+
}
43+
NINA_SPI = SPI0
44+
)
45+
46+
// SPI1 on the Metro M4 on pins 11,12,13
47+
var (
48+
SPI1 = SPI{
49+
Bus: sam.SERCOM1_SPIM,
50+
SERCOM: 1,
51+
}
52+
)

0 commit comments

Comments
 (0)