Skip to content

Commit c6ba693

Browse files
committed
rev D hardware match
1 parent 9712b43 commit c6ba693

File tree

2 files changed

+88
-66
lines changed

2 files changed

+88
-66
lines changed

variants/circuitplay/variant.cpp

Lines changed: 51 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -114,51 +114,70 @@ const PinDescription g_APinDescription[]=
114114
// 0..13 - Digital pins
115115
// ----------------------
116116
// 0/1 - SERCOM/UART (Serial1)
117-
{ PORTA, 11, PIO_SERCOM, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // RX: SERCOM0/PAD[3]
118-
{ PORTA, 10, PIO_SERCOM, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 }, // TX: SERCOM0/PAD[2]
117+
{ PORTB, 9, PIO_SERCOM_ALT, (PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, // GPIO 0 / A6 / UART RX
118+
{ PORTB, 8, PIO_SERCOM_ALT, (PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel2, PWM4_CH0, TC4_CH0, EXTERNAL_INT_8 }, // GPIO 1 / A7 / UART TX
119119

120120
// 2..12
121121
// Digital Low
122-
{ PORTA, 14, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 },
123-
{ PORTA, 9, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel17, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1]
124-
{ PORTA, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel16, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0]
125-
{ PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_15 }, // TC3/WO[1]
126-
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // TCC0/WO[6]
127-
{ PORTA, 21, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
122+
{ PORTB, 2, PIO_SERCOM_ALT, 0, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // GPIO D2 / A5 / SDA
123+
{ PORTB, 3, PIO_SERCOM_ALT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // GPIO D3 / A4 / SCL
124+
{ PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // GPIO D4 / Left Button
125+
{ PORTA, 14, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 }, // GPIO D5 / Right button
126+
{ PORTA, 4, PIO_ANALOG, 0, ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // GPIO D6 / A9
127+
{ PORTA, 15, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH1, TC3_CH1, EXTERNAL_INT_15 }, // GPIO 7 / Slide Switch
128128

129129
// Digital High
130-
{ PORTA, 6, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // TCC1/WO[0]
130+
{ PORTB, 23, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // GPIO D8 / NeoPixels
131131
{ PORTA, 7, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // TCC1/WO[1]
132-
{ PORTA, 18, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM3_CH0, TC3_CH0, EXTERNAL_INT_2 }, // TC3/WO[0]
132+
{ PORTA, 6, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // TCC1/WO[0]
133133
{ PORTA, 16, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH0, TCC2_CH0, EXTERNAL_INT_0 }, // TCC2/WO[0]
134-
{ PORTA, 19, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_3 }, // TCC0/WO[3]
134+
{ PORTA, 5, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // GPIO D12 / A8
135135

136136
// 13 (LED)
137137
{ PORTA, 17, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER), No_ADC_Channel, PWM2_CH1, TCC2_CH1, EXTERNAL_INT_1 }, // TCC2/WO[1]
138138

139-
// 14..19 - Analog pins
139+
// 14..25 - Analog pins
140140
// --------------------
141-
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[0]
142-
{ PORTB, 8, PIO_SERCOM_ALT, (PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel2, PWM4_CH0, TC4_CH0, EXTERNAL_INT_8 }, // ADC/AIN[2] (UART TX)
143-
{ PORTB, 9, PIO_SERCOM_ALT, (PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, // ADC/AIN[3] (UART RX)
144-
{ PORTA, 4, PIO_ANALOG, 0, ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // ADC/AIN[4]
145-
{ PORTA, 5, PIO_ANALOG, 0, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // ADC/AIN[5]
146-
{ PORTB, 2, PIO_SERCOM_ALT, 0, ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[10] & I2C (SDA)
147-
148-
// A6: D20 / D0
149-
{ PORTA, 11, PIO_ANALOG, (PIN_ATTR_DIGITAL), ADC_Channel19, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 },
150-
// A7: D21 / D1
151-
{ PORTA, 10, PIO_ANALOG, (PIN_ATTR_DIGITAL), ADC_Channel18, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 },
152-
153-
// A8: D22 / D8
154-
{ PORTA, 6, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // TCC1/WO[0]
155-
// A9: D23 / D9
156-
{ PORTA, 7, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // TCC1/WO[1]
141+
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // ADC/AIN[0] / Buzzer
142+
{ PORTA, 11, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel19, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_11 }, // ADC/AIN[1] / Light Sensor
143+
{ PORTA, 10, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel18, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 }, //ADC/AIN[2] / Thermistor
144+
{ PORTA, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel16, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // ADC/AIN[3] / Microphone
145+
146+
{ PORTB, 3, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel11, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // GPIO D3 / A4 / SCL
147+
{ PORTB, 2, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel10, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // GPIO D2 / A5 / SDA
148+
{ PORTB, 9, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 }, // GPIO 0 / A6 / UART RX
149+
{ PORTB, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG|PIN_ATTR_PWM|PIN_ATTR_TIMER), ADC_Channel2, PWM4_CH0, TC4_CH0, EXTERNAL_INT_8 }, // GPIO 1 / A7 / UART RX
150+
151+
{ PORTA, 5, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 }, // GPIO D12 / A8
152+
{ PORTA, 4, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG), ADC_Channel4, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // GPIO D6 / A9
153+
{ PORTA, 7, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel7, PWM1_CH1, TCC1_CH1, EXTERNAL_INT_7 }, // GPIO 9 / A10 / TCC1/WO[1]
154+
{ PORTA, 6, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel6, PWM1_CH0, TCC1_CH0, EXTERNAL_INT_6 }, // GPIO 10 / A11 / TCC1/WO[0]
155+
156+
// 26..28 - USB
157+
// --------------------
158+
{ PORTA, 27, PIO_OUTPUT, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // "RX/TX LED"
159+
{ PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM
160+
{ PORTA, 25, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP
161+
162+
// GPIO 29 / Capacitive push
163+
{ PORTA, 23, PIO_DIGITAL, PIN_ATTR_DIGITAL, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 },
164+
165+
// GPIO 30 31 internal I2C (original xtal pins)
166+
{ PORTA, 0, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // Internal SDA
167+
{ PORTA, 1, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // Internal SCL
168+
169+
// GPIO 32, 33, 34 Internal SPI
170+
{ PORTA, 16, PIO_SERCOM_ALT, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // MISO: SERCOM3/PAD[0]
171+
{ PORTA, 21, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH7, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SCK: SERCOM3/PAD[3]
172+
{ PORTA, 20, PIO_SERCOM_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER_ALT), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_4 }, // MOSI: SERCOM3/PAD[2]
173+
174+
// GPIO 35 (Flash CS)
175+
{ PORTB, 22, PIO_DIGITAL, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
176+
177+
// GPIO 36 (LIS IRQ)
178+
{ PORTA, 9, PIO_DIGITAL, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel17, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, //ADC/AIN[2] / Thermistor
179+
157180

158-
// A10: D24 / D3
159-
{ PORTA, 9, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel17, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_9 }, // TCC0/WO[1]
160-
// A11: D25 / D4
161-
{ PORTA, 8, PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM|PIN_ATTR_TIMER|PIN_ATTR_ANALOG), ADC_Channel16, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_NMI }, // TCC0/WO[0]
162181

163182

164183
// 26..27

variants/circuitplay/variant.h

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#define portInputRegister(port) (&(port->IN.reg))
5252
#define portModeRegister(port) (&(port->DIR.reg))
5353
#define digitalPinHasPWM(P) (g_APinDescription[P].ulPWMChannel != NOT_ON_PWM || g_APinDescription[P].ulTCChannel != NOT_ON_TIMER)
54+
#define digitalPinToInterrupt(P) (g_APinDescription[P].ulExtInt)
5455

5556
/*
5657
* digitalPinToTimer(..) is AVR-specific and is not defined for SAMD
@@ -68,28 +69,31 @@
6869
#define LED_BUILTIN PIN_LED
6970

7071

71-
#define PIN_LED_RXL (25u)
72-
#define PIN_LED_TXL (26u)
73-
#define PIN_LED2 PIN_LED_RXL
74-
#define PIN_LED3 PIN_LED_TXL
72+
//#define PIN_LED_RXL (25u)
73+
//#define PIN_LED_TXL (26u)
74+
#define PIN_LED PIN_LED_13
75+
//#define PIN_LED2 PIN_LED_RXL
76+
//#define PIN_LED3 PIN_LED_TXL
77+
#define LED_BUILTIN PIN_LED_13
7578

7679
/*
7780
* Analog pins
7881
*/
7982
#define PIN_A0 (14ul)
80-
#define PIN_A1 (15ul)
81-
#define PIN_A2 (16ul)
82-
#define PIN_A3 (17ul)
83-
#define PIN_A4 (18ul)
84-
#define PIN_A5 (19ul)
85-
#define PIN_A6 (20ul)
86-
#define PIN_A7 (21ul)
87-
#define PIN_A8 (22ul)
88-
#define PIN_A9 (23ul)
89-
#define PIN_A10 (24ul)
90-
#define PIN_A11 (25ul)
91-
92-
#define PIN_DAC0 (14ul)
83+
#define PIN_A1 (PIN_A0 + 1)
84+
#define PIN_A2 (PIN_A0 + 2)
85+
#define PIN_A3 (PIN_A0 + 3)
86+
#define PIN_A4 (PIN_A0 + 4)
87+
#define PIN_A5 (PIN_A0 + 5)
88+
#define PIN_A6 (PIN_A0 + 6)
89+
#define PIN_A7 (PIN_A0 + 7)
90+
#define PIN_A8 (PIN_A0 + 8)
91+
#define PIN_A9 (PIN_A0 + 9)
92+
#define PIN_A10 (PIN_A0 + 10)
93+
#define PIN_A11 (PIN_A0 + 11)
94+
95+
#define PIN_DAC0 (PIN_A0)
96+
9397

9498
static const uint8_t A0 = PIN_A0;
9599
static const uint8_t A1 = PIN_A1;
@@ -112,14 +116,14 @@ static const uint8_t DAC0 = PIN_DAC0;
112116
*/
113117
#define SPI_INTERFACES_COUNT 1
114118

115-
#define PIN_SPI_MISO (10u) // pa18
116-
#define PIN_SPI_MOSI (11u) // pa16
117-
#define PIN_SPI_SCK (12u) // pa19
119+
#define PIN_SPI_MISO (32u)
120+
#define PIN_SPI_SCK (33u)
121+
#define PIN_SPI_MOSI (34u)
118122
#define PERIPH_SPI sercom3
119-
#define PAD_SPI_TX SPI_PAD_0_SCK_3 // MOSI / SCK
120-
#define PAD_SPI_RX SERCOM_RX_PAD_2 // MISO
123+
#define PAD_SPI_TX SPI_PAD_2_SCK_3 // MOSI / SCK
124+
#define PAD_SPI_RX SERCOM_RX_PAD_0 // MISO
121125

122-
static const uint8_t SS = PIN_A2 ; // SERCOM4 last PAD is present on A2 but HW SS isn't used. Set here only for reference.
126+
static const uint8_t SS = 35 ;
123127
static const uint8_t MOSI = PIN_SPI_MOSI ;
124128
static const uint8_t MISO = PIN_SPI_MISO ;
125129
static const uint8_t SCK = PIN_SPI_SCK ;
@@ -131,31 +135,30 @@ static const uint8_t SCK = PIN_SPI_SCK ;
131135
#define WIRE_INTERFACES_COUNT 2
132136

133137
// "external" public i2c interface
134-
#define PIN_WIRE_SDA (19u)
135-
#define PIN_WIRE_SCL (31u)
138+
#define PIN_WIRE_SDA (2u)
139+
#define PIN_WIRE_SCL (3u)
136140
#define PERIPH_WIRE sercom5
137141
#define WIRE_IT_HANDLER SERCOM5_Handler
138142
static const uint8_t SDA = PIN_WIRE_SDA;
139143
static const uint8_t SCL = PIN_WIRE_SCL;
140144

141145
// "internal" lis3dh i2c interface
142-
#define PIN_WIRE1_SDA (49u)
143-
#define PIN_WIRE1_SCL (50u)
146+
#define PIN_WIRE1_SDA (30u)
147+
#define PIN_WIRE1_SCL (31u)
144148
#define PERIPH_WIRE1 sercom1
145149
#define WIRE1_IT_HANDLER SERCOM1_Handler
146150
static const uint8_t SDA1 = PIN_WIRE1_SDA;
147151
static const uint8_t SCL1 = PIN_WIRE1_SCL;
148152

149-
150153
// USB
151154
// ---
152-
#define PIN_USB_HOST_ENABLE (27ul)
153-
#define PIN_USB_DM (28ul)
154-
#define PIN_USB_DP (29ul)
155+
#define PIN_USB_HOST_ENABLE (26ul)
156+
#define PIN_USB_DM (27ul)
157+
#define PIN_USB_DP (28ul)
155158

156159
// I2S Interfaces
157160
// --------------
158-
#define I2S_INTERFACES_COUNT 1
161+
#define I2S_INTERFACES_COUNT 0
159162

160163
#define I2S_DEVICE 0
161164
#define I2S_CLOCK_GENERATOR 3
@@ -180,8 +183,8 @@ extern SERCOM sercom5;
180183

181184
// Serial1
182185
extern Uart Serial1;
183-
#define PIN_SERIAL1_RX (16ul)
184-
#define PIN_SERIAL1_TX (15ul)
186+
#define PIN_SERIAL1_RX (0ul)
187+
#define PIN_SERIAL1_TX (1ul)
185188
#define PAD_SERIAL1_TX (UART_TX_PAD_0)
186189
#define PAD_SERIAL1_RX (SERCOM_RX_PAD_1)
187190
#endif // __cplusplus

0 commit comments

Comments
 (0)