Skip to content

Commit 3c3502f

Browse files
committed
Fix UART settings
1 parent 7ecb963 commit 3c3502f

File tree

7 files changed

+133
-42
lines changed

7 files changed

+133
-42
lines changed

src/machine/board_feather-m4.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
package machine
44

5-
import "device/sam"
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
69

710
// used to reset into bootloader
811
const RESET_MAGIC_VALUE = 0xf01669ef
@@ -47,18 +50,35 @@ const (
4750
USBCDC_DP_PIN = PA25
4851
)
4952

50-
// UART1 pins
5153
const (
5254
UART_TX_PIN = D1
5355
UART_RX_PIN = D0
5456
)
5557

56-
// UART2 pins
5758
const (
5859
UART2_TX_PIN = A4
5960
UART2_RX_PIN = A5
6061
)
6162

63+
var (
64+
UART1 = UART{
65+
Buffer: NewRingBuffer(),
66+
Bus: sam.SERCOM5_USART_INT,
67+
SERCOM: 5,
68+
}
69+
70+
UART2 = UART{
71+
Buffer: NewRingBuffer(),
72+
Bus: sam.SERCOM0_USART_INT,
73+
SERCOM: 0,
74+
}
75+
)
76+
77+
func init() {
78+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM5_2, UART1.handleInterrupt)
79+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
80+
}
81+
6282
// I2C pins
6383
const (
6484
SDA_PIN = D22 // SDA: SERCOM2/PAD[0]

src/machine/board_itsybitsy-m4.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
package machine
44

5-
import "device/sam"
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
69

710
// used to reset into bootloader
811
const RESET_MAGIC_VALUE = 0xf01669ef
@@ -51,15 +54,29 @@ const (
5154
UART_RX_PIN = D0
5255
)
5356

54-
// UART1 var is on SERCOM3, defined in atsamd51.go
55-
56-
// UART2 pins
5757
const (
5858
UART2_TX_PIN = A4
5959
UART2_RX_PIN = D2
6060
)
6161

62-
// UART2 var is on SERCOM0, defined in atsamd51.go
62+
var (
63+
UART1 = UART{
64+
Buffer: NewRingBuffer(),
65+
Bus: sam.SERCOM3_USART_INT,
66+
SERCOM: 3,
67+
}
68+
69+
UART2 = UART{
70+
Buffer: NewRingBuffer(),
71+
Bus: sam.SERCOM0_USART_INT,
72+
SERCOM: 0,
73+
}
74+
)
75+
76+
func init() {
77+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM3_2, UART1.handleInterrupt)
78+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
79+
}
6380

6481
// I2C pins
6582
const (

src/machine/board_metro-m4-airlift.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
package machine
44

5-
import "device/sam"
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
69

710
// used to reset into bootloader
811
const RESET_MAGIC_VALUE = 0xf01669ef
@@ -53,7 +56,29 @@ const (
5356
UART_RX_PIN = D0
5457
)
5558

56-
// Note: UART1 is on SERCOM3, defined in machine_atsamd51.go
59+
const (
60+
UART2_TX_PIN = PA04
61+
UART2_RX_PIN = PA07
62+
)
63+
64+
var (
65+
UART1 = UART{
66+
Buffer: NewRingBuffer(),
67+
Bus: sam.SERCOM3_USART_INT,
68+
SERCOM: 3,
69+
}
70+
71+
UART2 = UART{
72+
Buffer: NewRingBuffer(),
73+
Bus: sam.SERCOM0_USART_INT,
74+
SERCOM: 0,
75+
}
76+
)
77+
78+
func init() {
79+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM3_2, UART1.handleInterrupt)
80+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
81+
}
5782

5883
const (
5984
NINA_CS = PA15
@@ -66,9 +91,6 @@ const (
6691
NINA_RTS = PB23
6792
)
6893

69-
// UART2 is on SERCOM0, defined in machine_atsamd51.go, and connects to the
70-
// onboard ESP32-WROOM chip.
71-
7294
// I2C pins
7395
const (
7496
SDA_PIN = PB02 // SDA: SERCOM5/PAD[0]

src/machine/board_pybadge.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
package machine
44

5-
import "device/sam"
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
69

710
// used to reset into bootloader
811
const RESET_MAGIC_VALUE = 0xf01669ef
@@ -80,15 +83,29 @@ const (
8083
UART_RX_PIN = D0
8184
)
8285

83-
// UART1 var is on SERCOM3, defined in atsamd51.go
84-
85-
// UART2 pins
8686
const (
8787
UART2_TX_PIN = A4
8888
UART2_RX_PIN = A5
8989
)
9090

91-
// UART2 var is on SERCOM0, defined in atsamd51.go
91+
var (
92+
UART1 = UART{
93+
Buffer: NewRingBuffer(),
94+
Bus: sam.SERCOM5_USART_INT,
95+
SERCOM: 5,
96+
}
97+
98+
UART2 = UART{
99+
Buffer: NewRingBuffer(),
100+
Bus: sam.SERCOM0_USART_INT,
101+
SERCOM: 0,
102+
}
103+
)
104+
105+
func init() {
106+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM5_2, UART1.handleInterrupt)
107+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
108+
}
92109

93110
// I2C pins
94111
const (

src/machine/board_pyportal.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package machine
44

55
import (
66
"device/sam"
7+
"runtime/interrupt"
78
)
89

910
// used to reset into bootloader
@@ -104,12 +105,24 @@ const (
104105
USBCDC_DP_PIN = PA25
105106
)
106107

107-
// TODO: add configuration for UART on SERCOM4 that is connected to TX/RX of ESP32
108+
// UART1 aka NINA_TX/NINA_RX
108109
const (
109-
UART_TX_PIN = NoPin
110-
UART_RX_PIN = NoPin
110+
UART_TX_PIN = D1
111+
UART_RX_PIN = D0
111112
)
112113

114+
var (
115+
UART1 = UART{
116+
Buffer: NewRingBuffer(),
117+
Bus: sam.SERCOM4_USART_INT,
118+
SERCOM: 4,
119+
}
120+
)
121+
122+
func init() {
123+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM4_2, UART1.handleInterrupt)
124+
}
125+
113126
// I2C pins
114127
const (
115128
SDA_PIN = PB02 // SDA: SERCOM2/PAD[0]

src/machine/board_wioterminal.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
package machine
44

5-
import "device/sam"
5+
import (
6+
"device/sam"
7+
"runtime/interrupt"
8+
)
69

710
// used to reset into bootloader
811
const RESET_MAGIC_VALUE = 0xf01669ef
@@ -348,6 +351,25 @@ const (
348351
UART2_RX_PIN = PIN_SERIAL2_RX
349352
)
350353

354+
var (
355+
UART1 = UART{
356+
Buffer: NewRingBuffer(),
357+
Bus: sam.SERCOM2_USART_INT,
358+
SERCOM: 2,
359+
}
360+
361+
UART2 = UART{
362+
Buffer: NewRingBuffer(),
363+
Bus: sam.SERCOM1_USART_INT,
364+
SERCOM: 1,
365+
}
366+
)
367+
368+
func init() {
369+
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM2_2, UART1.handleInterrupt)
370+
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM1_2, UART2.handleInterrupt)
371+
}
372+
351373
// I2C pins
352374
const (
353375
SDA0_PIN = PIN_WIRE_SDA // SDA: SERCOM3/PAD[0]

src/machine/machine_atsamd51.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -727,28 +727,8 @@ type UART struct {
727727
var (
728728
// UART0 is actually a USB CDC interface.
729729
UART0 = USBCDC{Buffer: NewRingBuffer()}
730-
731-
// The first hardware serial port on the SAMD51. Uses the SERCOM3 interface.
732-
UART1 = UART{
733-
Buffer: NewRingBuffer(),
734-
Bus: sam.SERCOM3_USART_INT,
735-
SERCOM: 3,
736-
}
737-
738-
// The second hardware serial port on the SAMD51. Uses the SERCOM0 interface.
739-
UART2 = UART{
740-
Buffer: NewRingBuffer(),
741-
Bus: sam.SERCOM0_USART_INT,
742-
SERCOM: 0,
743-
}
744730
)
745731

746-
func init() {
747-
// Register RXC interrupts.
748-
UART1.Interrupt = interrupt.New(sam.IRQ_SERCOM3_2, UART1.handleInterrupt)
749-
UART2.Interrupt = interrupt.New(sam.IRQ_SERCOM0_2, UART2.handleInterrupt)
750-
}
751-
752732
const (
753733
sampleRate16X = 16
754734
lsbFirst = 1

0 commit comments

Comments
 (0)