arduino_board.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 Kees Bakker
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
19 #ifndef ARDUINO_BOARD_H
20 #define ARDUINO_BOARD_H
21 
22 #include "periph/gpio.h"
23 #include "periph/adc.h"
24 #include "periph/pwm.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
33 #define ARDUINO_LED (13)
34 
38 #define ARDUINO_UART_DEV UART_DEV(0)
39 
43 static const gpio_t arduino_pinmap[] = {
44  /* 0..1 - SERCOM/UART (Serial) */
45  GPIO_PIN(PA, 9),
46  GPIO_PIN(PA, 10),
47 
48  /* 2..15 Digital */
49  GPIO_PIN(PA, 11),
50  GPIO_PIN(PB, 10),
51  GPIO_PIN(PB, 11),
52  GPIO_PIN(PB, 12),
53  GPIO_PIN(PB, 13),
54  GPIO_PIN(PB, 14),
55  GPIO_PIN(PB, 15),
56  GPIO_PIN(PA, 14),
57  GPIO_PIN(PA, 15),
58  GPIO_PIN(PA, 16),
59  GPIO_PIN(PA, 17),
60  GPIO_PIN(PA, 18),
61  GPIO_PIN(PA, 19),
62  GPIO_PIN(PB, 16),
63 
64  /* 16..18 Other Digital */
65  GPIO_PIN(PA, 8),
66  GPIO_PIN(PA, 28),
67  GPIO_PIN(PB, 17),
68 
69  /* 19..32 A0..A13 */
70  GPIO_PIN(PA, 2),
71  GPIO_PIN(PA, 6),
72  GPIO_PIN(PA, 5),
73  GPIO_PIN(PA, 4),
74  GPIO_PIN(PB, 9),
75  GPIO_PIN(PB, 8),
76  GPIO_PIN(PB, 7),
77  GPIO_PIN(PB, 6),
78  GPIO_PIN(PB, 5),
79  GPIO_PIN(PB, 4),
80  GPIO_PIN(PA, 7),
81  GPIO_PIN(PB, 3),
82  GPIO_PIN(PB, 2),
83  GPIO_PIN(PB, 1),
84 
85  /* 33-35 Other Analog + DAC */
86  GPIO_PIN(PB, 0),
87  GPIO_PIN(PA, 3),
88  GPIO_PIN(PA, 2),
89 
90  /* 36..39 - SERCOM/UART (Serial1) */
91  GPIO_PIN(PB, 30),
92  GPIO_PIN(PB, 31),
93  GPIO_PIN(PB, 22),
94  GPIO_PIN(PB, 23),
95 
96  /* 40..41 - I2C pins (SDA/SCL) */
97  GPIO_PIN(PA, 12),
98  GPIO_PIN(PA, 13),
99 
100  /* 42..45 - SPI pins (ICSP: MISO, SS, MOSI, SCK) */
101  GPIO_PIN(PA, 22),
102  GPIO_PIN(PA, 23),
103  GPIO_PIN(PA, 20),
104  GPIO_PIN(PA, 21),
105 
106  /* 46 - SD CARD CS */
107  GPIO_PIN(PA, 27),
108 
109  /* 47..48 - USB */
110  GPIO_PIN(PA, 24),
111  GPIO_PIN(PA, 25),
112 
113  /* 49..50 - Serial2 (alternative use for D6/D7) */
114  GPIO_PIN(PB, 13),
115  GPIO_PIN(PB, 14),
116 
117  /* 51..52 - Serial3 (alternative use for D12/D13) */
118  GPIO_PIN(PA, 17),
119  GPIO_PIN(PA, 18),
120 
121  /* 53..56 - SPI1 (alternative use for D5..D8) */
122  GPIO_PIN(PB, 12),
123  GPIO_PIN(PB, 13),
124  GPIO_PIN(PB, 14),
125  GPIO_PIN(PB, 15),
126 };
127 
131 static const adc_t arduino_analog_map[] = {
132  ADC_LINE(0),
133  ADC_LINE(1),
134  ADC_LINE(2),
135  ADC_LINE(3),
136  ADC_LINE(4),
137  ADC_LINE(5),
138  ADC_LINE(6),
139  ADC_LINE(7),
140  ADC_LINE(8),
141  ADC_LINE(9),
142  ADC_LINE(10),
143  ADC_LINE(11),
144  ADC_LINE(12),
145  ADC_LINE(13),
146  ADC_LINE(14),
147 };
148 
152 #define ARDUINO_PWM_FREQU (732U)
153 
157 static const arduino_pwm_t arduino_pwm_list[] = {
158  { .pin = 20, .dev = PWM_DEV(0), .chan = 0 },
159  { .pin = 29, .dev = PWM_DEV(0), .chan = 1 },
160  { .pin = 11, .dev = PWM_DEV(1), .chan = 0 },
161  { .pin = 13, .dev = PWM_DEV(1), .chan = 1 },
162  { .pin = 14, .dev = PWM_DEV(1), .chan = 2 },
163 };
164 
165 #ifdef __cplusplus
166 }
167 #endif
168 
169 #endif /* ARDUINO_BOARD_H */
170 
adc_t
unsigned int adc_t
Define default ADC type identifier.
Definition: adc.h:72
adc.h
Low-level ADC peripheral driver interface definitions.
PWM_DEV
#define PWM_DEV(x)
Default PWM access macro.
Definition: pwm.h:78
PB
@ PB
port B
Definition: periph_cpu_common.h:89
arduino_pinmap
static const gpio_t arduino_pinmap[]
Look-up table for the Arduino's digital pins.
Definition: arduino_board.h:43
ADC_LINE
#define ADC_LINE(x)
Default ADC line access macro.
Definition: adc.h:86
arduino_pwm_list
static const arduino_pwm_t arduino_pwm_list[]
List of PWM GPIO mappings.
Definition: arduino_board.h:157
gpio.h
Low-level GPIO peripheral driver interface definitions.
GPIO_PIN
#define GPIO_PIN(x, y)
Define a CPU specific GPIO pin generator macro.
Definition: periph_cpu.h:35
PA
@ PA
port A
Definition: periph_cpu_common.h:88
pwm.h
Low-level PWM peripheral driver interface definitions.
arduino_analog_map
static const adc_t arduino_analog_map[]
Look-up table for the Arduino's analog pins.
Definition: arduino_board.h:131