Skip to content

Commit 88cf93b

Browse files
matsujirushiPillar1989
authored andcommitted
Add definitions of GPIO Serial
1 parent fdd5866 commit 88cf93b

File tree

2 files changed

+63
-33
lines changed

2 files changed

+63
-33
lines changed

variants/wio_terminal/variant.cpp

+7-22
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ const PinDescription g_APinDescription[] =
9393
//39 MIC INPUT
9494
{PORTC, 30, PIO_ANALOG, PIN_ATTR_ANALOG_ALT, ADC_Channel12, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14}, //MIC_INPUT
9595

96-
//40..41 UART Serial1
97-
{PORTB, 26, PIO_SERCOM, (PIN_ATTR_DIGITAL | PIN_ATTR_PWM_F), No_ADC_Channel, TCC1_CH2, NOT_ON_TIMER, EXTERNAL_INT_12}, //UART1_TX, SERCOM2.0
98-
{PORTB, 27, PIO_SERCOM, (PIN_ATTR_DIGITAL | PIN_ATTR_PWM_F), No_ADC_Channel, TCC1_CH3, NOT_ON_TIMER, EXTERNAL_INT_13}, //UART1_RX, SERCOM2.1
96+
//40..41 UART GPIO (Host)
97+
{PORTB, 26, PIO_SERCOM, (PIN_ATTR_DIGITAL | PIN_ATTR_PWM_F), No_ADC_Channel, TCC1_CH2, NOT_ON_TIMER, EXTERNAL_INT_12}, //SERCOM2.0
98+
{PORTB, 27, PIO_SERCOM, (PIN_ATTR_DIGITAL | PIN_ATTR_PWM_F), No_ADC_Channel, TCC1_CH3, NOT_ON_TIMER, EXTERNAL_INT_13}, //SERCOM2.1
9999

100100
// 42..44 - USB
101101
{PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8}, // USB_D-
@@ -186,8 +186,11 @@ const PinDescription g_APinDescription[] =
186186

187187
//91..92 OUTPUT_CTR
188188
{PORTC, 14, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14},
189-
{PORTC, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15}
189+
{PORTC, 15, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15},
190190

191+
//93..94 UART GPIO (Device)
192+
{PORTB, 26, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_12}, //SERCOM4.1
193+
{PORTB, 27, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_13}, //SERCOM4.0
191194
};
192195

193196
const void *g_apTCInstances[TCC_INST_NUM + TC_INST_NUM] = {TCC0, TCC1, TCC2, TCC3, TCC4, TC0, TC1, TC2, TC3, TC4, TC5, TC6, TC7};
@@ -203,7 +206,6 @@ SERCOM sercom5(SERCOM5);
203206
SERCOM sercom6(SERCOM6);
204207
SERCOM sercom7(SERCOM7);
205208

206-
Uart Serial1(&SERCOM_SERIAL1, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX);
207209
Uart Serial2(&SERCOM_SERIAL2, PIN_SERIAL2_RX, PIN_SERIAL2_TX, PAD_SERIAL2_RX, PAD_SERIAL2_TX);
208210

209211
void SERCOM1_0_Handler()
@@ -222,20 +224,3 @@ void SERCOM1_3_Handler()
222224
{
223225
Serial2.IrqHandler();
224226
}
225-
226-
void SERCOM2_0_Handler()
227-
{
228-
Serial1.IrqHandler();
229-
}
230-
void SERCOM2_1_Handler()
231-
{
232-
Serial1.IrqHandler();
233-
}
234-
void SERCOM2_2_Handler()
235-
{
236-
Serial1.IrqHandler();
237-
}
238-
void SERCOM2_3_Handler()
239-
{
240-
Serial1.IrqHandler();
241-
}

variants/wio_terminal/variant.h

+56-11
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ extern "C"
5757
*----------------------------------------------------------------------------*/
5858

5959
// Number of pins defined in PinDescription array
60-
#define PINS_COUNT (93u)
60+
#define PINS_COUNT (sizeof(g_APinDescription) / sizeof(g_APinDescription[0]))
6161
#define NUM_DIGITAL_PINS (23u)
6262
#define NUM_ANALOG_INPUTS (14u)
6363
#define NUM_ANALOG_OUTPUTS (2u)
@@ -265,20 +265,66 @@ static const uint8_t DAC1 = PIN_DAC1;
265265
* Serial interfaces
266266
*/
267267

268-
// Serial1
269-
#define PIN_SERIAL1_RX (41ul)
270-
#define PIN_SERIAL1_TX (40ul)
271-
#define PAD_SERIAL1_RX (SERCOM_RX_PAD_1)
272-
#define PAD_SERIAL1_TX (UART_TX_PAD_0)
273-
#define SERCOM_SERIAL1 sercom2
274-
275268
// Serial2
276269
#define PIN_SERIAL2_RX (83ul)
277270
#define PIN_SERIAL2_TX (82ul)
278271
#define PAD_SERIAL2_RX (SERCOM_RX_PAD_1)
279272
#define PAD_SERIAL2_TX (UART_TX_PAD_0)
280273
#define SERCOM_SERIAL2 sercom1
281274

275+
// UART GPIO (Host)
276+
// static Uart GpioSerial(&SERCOM_GPIO_SERIAL, PIN_GPIO_SERIAL_RX, PIN_GPIO_SERIAL_TX, PAD_GPIO_SERIAL_RX, PAD_GPIO_SERIAL_TX);
277+
// INTERRUPT_HANDLER_IMPLEMENT_GPIO_SERIAL(GpioSerial)
278+
#define PIN_GPIO_SERIAL_RX (BCM15)
279+
#define PIN_GPIO_SERIAL_TX (BCM14)
280+
#define PAD_GPIO_SERIAL_RX (SERCOM_RX_PAD_1)
281+
#define PAD_GPIO_SERIAL_TX (UART_TX_PAD_0)
282+
#define SERCOM_GPIO_SERIAL sercom2
283+
#define INTERRUPT_HANDLER_IMPLEMENT_GPIO_SERIAL(uart) \
284+
void SERCOM2_0_Handler() \
285+
{ \
286+
(uart).IrqHandler(); \
287+
} \
288+
void SERCOM2_1_Handler() \
289+
{ \
290+
(uart).IrqHandler(); \
291+
} \
292+
void SERCOM2_2_Handler() \
293+
{ \
294+
(uart).IrqHandler(); \
295+
} \
296+
void SERCOM2_3_Handler() \
297+
{ \
298+
(uart).IrqHandler(); \
299+
}
300+
301+
// UART GPIO (Device)
302+
// Uart GpioSerial(&SERCOM_GPIO_SERIAL_X, PIN_GPIO_SERIAL_X_RX, PIN_GPIO_SERIAL_X_TX, PAD_GPIO_SERIAL_X_RX, PAD_GPIO_SERIAL_X_TX);
303+
// INTERRUPT_HANDLER_IMPLEMENT_GPIO_SERIAL_X(GpioSerial)
304+
305+
#define PIN_GPIO_SERIAL_X_RX (93ul)
306+
#define PIN_GPIO_SERIAL_X_TX (94ul)
307+
#define PAD_GPIO_SERIAL_X_RX (SERCOM_RX_PAD_1)
308+
#define PAD_GPIO_SERIAL_X_TX (UART_TX_PAD_0)
309+
#define SERCOM_GPIO_SERIAL_X sercom4
310+
#define INTERRUPT_HANDLER_IMPLEMENT_GPIO_SERIAL_X(uart) \
311+
void SERCOM4_0_Handler() \
312+
{ \
313+
(uart).IrqHandler(); \
314+
} \
315+
void SERCOM4_1_Handler() \
316+
{ \
317+
(uart).IrqHandler(); \
318+
} \
319+
void SERCOM4_2_Handler() \
320+
{ \
321+
(uart).IrqHandler(); \
322+
} \
323+
void SERCOM4_3_Handler() \
324+
{ \
325+
(uart).IrqHandler(); \
326+
}
327+
282328
/*
283329
* Wire Interfaces
284330
*/
@@ -476,7 +522,6 @@ extern SERCOM sercom5;
476522
extern SERCOM sercom6;
477523
extern SERCOM sercom7;
478524

479-
extern Uart Serial1;
480525
extern Uart Serial2;
481526

482527
#endif
@@ -499,8 +544,8 @@ extern Uart Serial2;
499544
#define SERIAL_PORT_USBVIRTUAL Serial
500545
#define SERIAL_PORT_MONITOR Serial
501546
// Serial has no physical pins broken out, so it's not listed as HARDWARE port
502-
#define SERIAL_PORT_HARDWARE Serial1
503-
#define SERIAL_PORT_HARDWARE_OPEN Serial1
547+
#define SERIAL_PORT_HARDWARE
548+
#define SERIAL_PORT_HARDWARE_OPEN
504549
#define RTL8720D Serial2
505550
// Alias Serial to SerialUSB
506551
#define SerialUSB Serial

0 commit comments

Comments
 (0)