Skip to content

Commit 9d0df9c

Browse files
committed
DM: update feather variant
1 parent f9d6f69 commit 9d0df9c

File tree

3 files changed

+39
-33
lines changed

3 files changed

+39
-33
lines changed

boards.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ adafruit_itsybitsy_m4.menu.cache.off.build.cache_flags=
352352
#adafruit_feather_m4.pid.0=0x8022
353353
#adafruit_feather_m4.vid.1=0x239A
354354
#adafruit_feather_m4.pid.1=0x0022
355-
#adafruit_feather_m4.upload.tool=bossac
355+
#adafruit_feather_m4.upload.tool=bossac18
356356
#adafruit_feather_m4.upload.protocol=sam-ba
357357
#adafruit_feather_m4.upload.maximum_size=507904
358358
#adafruit_feather_m4.upload.offset=0x4000
@@ -365,7 +365,7 @@ adafruit_itsybitsy_m4.menu.cache.off.build.cache_flags=
365365
#adafruit_feather_m4.build.usb_manufacturer="Adafruit LLC"
366366
#adafruit_feather_m4.build.board=FEATHER_M4
367367
#adafruit_feather_m4.build.core=arduino
368-
#adafruit_feather_m4.build.extra_flags=-D__SAMD51G19A__ -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
368+
#adafruit_feather_m4.build.extra_flags=-D__SAMD51J19A__ -D__SAMD51__ {build.usb_flags} -D__FPU_PRESENT -DARM_MATH_CM4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
369369
#adafruit_feather_m4.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
370370
#adafruit_feather_m4.build.openocdscript=openocd_scripts/arduino_zero.cfg
371371
#adafruit_feather_m4.build.variant=feather_m4

variants/feather_m4/variant.cpp

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,47 +26,47 @@ const PinDescription g_APinDescription[]=
2626
// 0..13 - Digital pins
2727
// ----------------------
2828
// 0/1 - SERCOM/UART (Serial1)
29-
{ PORTA, 7, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_Channel8, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 }, // RX: SERCOM0/PAD[0]
30-
{ PORTA, 4, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_Channel9, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 }, // TX: SERCOM0/PAD[3]
29+
{ PORTB, 17, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH5, TCC0_CH5, EXTERNAL_INT_1 }, // RX: SERCOM5/PAD[1]
30+
{ PORTB, 16, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_0 }, // TX: SERCOM5/PAD[0]
3131

3232
// 2..12
3333
// Digital Low
3434
{ NOT_A_PORT, PIN_NOT_A_PIN, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
3535
{ NOT_A_PORT, PIN_NOT_A_PIN, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
36-
{ NOT_A_PORT, PIN_NOT_A_PIN, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
37-
{ PORTA, 14, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_14 },
38-
{ PORTA, 15, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_15 },
36+
{ PORTA, 14, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_14 },
37+
{ PORTA, 16, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH4, TCC0_CH4, EXTERNAL_INT_0 },
38+
{ PORTA, 18, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH6, TCC0_CH6, EXTERNAL_INT_2 },
3939
{ NOT_A_PORT, PIN_NOT_A_PIN, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
4040

4141
// Digital High
42-
{ PORTB, 23, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_Channel7, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, //neopix
43-
{ PORTA, 16, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), ADC_Channel6, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_0},
44-
{ PORTA, 20, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_4 },
45-
{ PORTA, 21, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
46-
{ PORTA, 22, PIO_TIMER_ALT, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 },
42+
{ PORTB, 3, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, //neopix
43+
{ PORTA, 19, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH7, TCC0_CH7, EXTERNAL_INT_3 },
44+
{ PORTA, 20, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH0, TCC0_CH0, EXTERNAL_INT_4 },
45+
{ PORTA, 21, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH1, TCC0_CH1, EXTERNAL_INT_5 },
46+
{ PORTA, 22, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH2, TCC0_CH2, EXTERNAL_INT_6 },
4747

4848
// 13 (LED)
49-
{ PORTA, 23, PIO_PWM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 }, // TCC2/WO[1]
49+
{ PORTA, 23, PIO_TCC_PDEC, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM0_CH3, TCC0_CH3, EXTERNAL_INT_7 }, // TCC2/WO[1]
5050

5151
// 14..19 - Analog pins
5252
// --------------------
5353
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 },
5454
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_5 },
5555
{ PORTB, 8, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel2, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 },
5656
{ PORTB, 9, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel3, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_9 },
57-
{ PORTA, 6, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel6, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 },
58-
{ PORTA, 10, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel9, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 },
57+
{ PORTA, 4, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel6, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 },
58+
{ PORTA, 6, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel9, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_10 },
5959

6060
// 20..21 I2C pins (SDA/SCL)
6161
// ----------------------
62-
{ PORTA, 12, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_12 }, // SDA: SERCOM3/PAD[0]
63-
{ PORTA, 13, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_13 }, // SCL: SERCOM3/PAD[1]
62+
{ PORTA, 12, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH2, TCC1_CH2, EXTERNAL_INT_12 }, // SDA: SERCOM2/PAD[0]
63+
{ PORTA, 13, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, PWM1_CH3, TCC1_CH3, EXTERNAL_INT_13 }, // SCL: SERCOM2/PAD[1]
6464

6565
// 22..24 - SPI pins (MISO,MOSI,SCK)
6666
// ----------------------
67-
{ PORTA, 18, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_2 }, // MISO: SERCOM4/PAD[2]
68-
{ PORTA, 19, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_3 }, // MOSI: SERCOM4/PAD[3]
69-
{ PORTA, 17, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_1 }, // SCK: SERCOM4/PAD[1]
67+
{ PORTB, 22, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_6 }, // MISO: SERCOM1/PAD[2]
68+
{ PORTB, 23, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_7 }, // MOSI: SERCOM1/PAD[3]
69+
{ PORTA, 17, PIO_SERCOM, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_1 }, // SCK: SERCOM1/PAD[1]
7070

7171
// 25..26 - RX/TX LEDS -- unused
7272
// --------------------
@@ -75,7 +75,7 @@ const PinDescription g_APinDescription[]=
7575

7676
// 27..29 - USB
7777
// --------------------
78-
{ PORTA, 28, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable DOES NOT EXIST ON THIS BOARD
78+
{ NOT_A_PORT, PIN_NOT_A_PIN, PIO_NOT_A_PIN, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB Host enable DOES NOT EXIST ON THIS BOARD
7979
{ PORTA, 24, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DM
8080
{ PORTA, 27, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // USB/DP
8181

@@ -86,22 +86,24 @@ const PinDescription g_APinDescription[]=
8686
{ PORTA, 22, PIO_SERCOM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // SCK: SERCOM5/PAD[1] (same as d12)
8787

8888
// 33 same as #8 - Internal NeoPixel (to match Metro M0)
89-
{ PORTB, 23, PIO_TIMER, (PIN_ATTR_DIGITAL|PIN_ATTR_PWM), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
89+
{ PORTB, 3, PIO_DIGITAL, (PIN_ATTR_DIGITAL), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
9090

9191
// 34 (AREF)
9292
{ PORTA, 3, PIO_ANALOG, PIN_ATTR_ANALOG, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VREFP
9393

9494
// ----------------------
9595
// 35 - 36 - Alternate use of A0 (DAC output)
9696
{ PORTA, 2, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel0, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VOUT0
97-
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, ADC_Channel5, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VOUT1
97+
{ PORTA, 5, PIO_ANALOG, PIN_ATTR_ANALOG, DAC_Channel1, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // DAC/VOUT1
9898

9999
// ----------------------
100-
// 37 - 40 QSPI (SCK, CS, IO0, IO1)
100+
// 37 - 40 QSPI (SCK, CS, IO0, IO1, IO2, IO3)
101101
{ PORTB, 10, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
102102
{ PORTB, 11, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
103103
{ PORTA, 8, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
104104
{ PORTA, 9, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
105+
{ PORTA, 10, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
106+
{ PORTA, 11, PIO_COM, PIN_ATTR_NONE, No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
105107
} ;
106108

107109
const void* g_apTCInstances[TCC_INST_NUM+TC_INST_NUM]={ TCC0, TCC1, TCC2} ;
@@ -114,21 +116,21 @@ SERCOM sercom3( SERCOM3 ) ;
114116
SERCOM sercom4( SERCOM4 ) ;
115117
SERCOM sercom5( SERCOM5 ) ;
116118

117-
Uart Serial1( &sercom0, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ;
119+
Uart Serial1( &sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX ) ;
118120

119-
void SERCOM0_0_Handler()
121+
void SERCOM5_0_Handler()
120122
{
121123
Serial1.IrqHandler();
122124
}
123-
void SERCOM0_1_Handler()
125+
void SERCOM5_1_Handler()
124126
{
125127
Serial1.IrqHandler();
126128
}
127-
void SERCOM0_2_Handler()
129+
void SERCOM5_2_Handler()
128130
{
129131
Serial1.IrqHandler();
130132
}
131-
void SERCOM0_3_Handler()
133+
void SERCOM5_3_Handler()
132134
{
133135
Serial1.IrqHandler();
134136
}

variants/feather_m4/variant.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ static const uint8_t ATN = PIN_ATN;
128128
// Serial1
129129
#define PIN_SERIAL1_RX (0ul)
130130
#define PIN_SERIAL1_TX (1ul)
131-
#define PAD_SERIAL1_RX (SERCOM_RX_PAD_3)
131+
#define PAD_SERIAL1_RX (SERCOM_RX_PAD_1)
132132
#define PAD_SERIAL1_TX (UART_TX_PAD_0)
133133

134134
/*
@@ -148,6 +148,7 @@ static const uint8_t MOSI = PIN_SPI_MOSI ;
148148
static const uint8_t MISO = PIN_SPI_MISO ;
149149
static const uint8_t SCK = PIN_SPI_SCK ;
150150

151+
//TODO: SPI1
151152
#define PIN_SPI1_MISO (22u)
152153
#define PIN_SPI1_MOSI (23u)
153154
#define PIN_SPI1_SCK (24u)
@@ -189,15 +190,18 @@ static const uint8_t SCL = PIN_WIRE_SCL;
189190
#define I2S_DEVICE 0
190191
#define I2S_CLOCK_GENERATOR 3
191192

192-
#define PIN_I2S_SD (5u)
193-
#define PIN_I2S_SCK (PIN_A2)
194-
#define PIN_I2S_FS (PIN_SPI_MOSI)
193+
#define PIN_I2S_SDO (5u)
194+
#define PIN_I2S_SDI (23u)
195+
#define PIN_I2S_SCK (16u)
196+
#define PIN_I2S_FS (22u)
195197

196198
//QSPI Pins
197199
#define PIN_QSPI_SCK (37u)
198200
#define PIN_QSPI_CS (38u)
199201
#define PIN_QSPI_IO0 (39u)
200202
#define PIN_QSPI_IO1 (40u)
203+
#define PIN_QSPI_IO2 (41u)
204+
#define PIN_QSPI_IO3 (42u)
201205

202206
#ifdef __cplusplus
203207
}

0 commit comments

Comments
 (0)