File tree Expand file tree Collapse file tree 7 files changed +133
-42
lines changed Expand file tree Collapse file tree 7 files changed +133
-42
lines changed Original file line number Diff line number Diff line change 22
33package machine
44
5- import "device/sam"
5+ import (
6+ "device/sam"
7+ "runtime/interrupt"
8+ )
69
710// used to reset into bootloader
811const RESET_MAGIC_VALUE = 0xf01669ef
@@ -47,18 +50,35 @@ const (
4750 USBCDC_DP_PIN = PA25
4851)
4952
50- // UART1 pins
5153const (
5254 UART_TX_PIN = D1
5355 UART_RX_PIN = D0
5456)
5557
56- // UART2 pins
5758const (
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
6383const (
6484 SDA_PIN = D22 // SDA: SERCOM2/PAD[0]
Original file line number Diff line number Diff line change 22
33package machine
44
5- import "device/sam"
5+ import (
6+ "device/sam"
7+ "runtime/interrupt"
8+ )
69
710// used to reset into bootloader
811const 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
5757const (
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
6582const (
Original file line number Diff line number Diff line change 22
33package machine
44
5- import "device/sam"
5+ import (
6+ "device/sam"
7+ "runtime/interrupt"
8+ )
69
710// used to reset into bootloader
811const 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
5883const (
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
7395const (
7496 SDA_PIN = PB02 // SDA: SERCOM5/PAD[0]
Original file line number Diff line number Diff line change 22
33package machine
44
5- import "device/sam"
5+ import (
6+ "device/sam"
7+ "runtime/interrupt"
8+ )
69
710// used to reset into bootloader
811const 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
8686const (
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
94111const (
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ package machine
44
55import (
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
108109const (
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
114127const (
115128 SDA_PIN = PB02 // SDA: SERCOM2/PAD[0]
Original file line number Diff line number Diff line change 22
33package machine
44
5- import "device/sam"
5+ import (
6+ "device/sam"
7+ "runtime/interrupt"
8+ )
69
710// used to reset into bootloader
811const 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
352374const (
353375 SDA0_PIN = PIN_WIRE_SDA // SDA: SERCOM3/PAD[0]
Original file line number Diff line number Diff line change @@ -727,28 +727,8 @@ type UART struct {
727727var (
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-
752732const (
753733 sampleRate16X = 16
754734 lsbFirst = 1
You can’t perform that action at this time.
0 commit comments