add samd51

This commit is contained in:
ladyada 2022-04-25 16:40:10 -04:00
parent 5f8b53d31f
commit f39c3dd279
3 changed files with 104 additions and 7 deletions

View file

@ -98,3 +98,7 @@ RP2040 does not have official Arduino support (yet).
```python3 parser.py "Adafruit ItsyBitsy nRF52840.fzpz" path/to/circuitpython/ports/nrf/boards/itsybitsy_nrf52840_express/pins.c nrf52840pins.csv -a ~/Library/Arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/itsybitsy_nrf52840_express```
```python3 parser.py "Adafruit nRF52840 CLUE.fzpz" path/to/circuitpython/ports/nrf/boards/clue_nrf52840_express/pins.c nrf52840pins.csv -a ~/Library/Arduino15/packages/adafruit/hardware/nrf52/0.20.5/variants/clue_nrf52840```
#### SAMD21:
```python3 parser.py "Adafruit Feather M0 Express.fzpz" path/to/circuitpython/ports/atmel-samd/boards/feather_m0_express/pins.c samd21pins.csv -a ~/Library/Arduino15/packages/adafruit/hardware/samd/variants/feather_m0```

View file

@ -336,8 +336,11 @@ int main(void) {
#define DAC_Channel0 0
""")
for define in ("NOT_ON_TIMER", "NOT_ON_PWM", "No_ADC_Channel",
"EXTERNAL_INT_NONE", "PIN_ATTR_NONE"):
outfilecpp.write("#define %s -1\n" % define)
"EXTERNAL_INT_NONE", "PIN_ATTR_NONE",
"PIN_ATTR_PWM_E", "PIN_ATTR_PWM_F", "PIN_ATTR_PWM_G",
"DAC_Channel1", "TCC_INST_NUM", "TC_INST_NUM",
"NOT_A_PORT", "PIO_NOT_A_PIN"):
outfilecpp.write("#define %s 10\n" % define)
for adc in range(0, 32):
outfilecpp.write("#define ADC_Channel%d %d\n" % (adc, adc))
for irq in range(0, 32):
@ -347,14 +350,18 @@ int main(void) {
outfilecpp.write("#define TCC0_CH%d %d\n" % (tcc, tcc))
outfilecpp.write("#define PWM1_CH%d %d\n" % (tcc, tcc))
outfilecpp.write("#define TCC1_CH%d %d\n" % (tcc, tcc))
for tc in range(0, 2):
outfilecpp.write("#define TCC%d_GCLK_ID %d\n" % (tcc, tcc))
for tc in range(0, 8):
outfilecpp.write("#define PWM2_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TCC2_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define PWM3_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC3_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define PWM4_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC4_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC2_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC1_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC0_CH%d %d\n" % (tc, tc))
outfilecpp.write("#define TC%d_GCLK_ID %d\n" % (tc, tc))
outfilecpp.write("""
typedef struct _PinDescription
{
@ -475,7 +482,7 @@ int main(void) {
if 'arduinopin' in conn:
continue
conn['arduinopin'] = arduinopin
#print(arduinopin, pinname, conn)
print(arduinopin, pinname, conn)
longest_arduinopin = max(longest_arduinopin, len(arduinopin))
return connections
@ -998,8 +1005,6 @@ def parse(fzpz, circuitpydef, pinoutcsv, arduinovariantfolder, substitute):
if not arduinovariantfolder and pinoutcsv == "attiny8xpins.csv":
arduinovariantfolder = "attiny8x"
connections = get_arduino_mapping(connections, arduinovariantfolder)
#print(connections)
# open and parse the pinout mapper CSV
pinarray = get_chip_pinout(connections, pinoutcsv)
#print(pinarray)

88
samd51pins.csv Normal file
View file

@ -0,0 +1,88 @@
GPIO,INT,DAC/AREF,ADC,Touch,SERCOM,SERCOM Alt,Timer,Timer Alt,Special
PA00,0,,,,,S1.0,TCC2[0],,
PA01,1,,,,,S1.1,TCC2[1],,
PA02,2,VOUT,AIN0,Y0,,,,,
PA03,3,VREFA,AIN1,Y1,,,,,
PA04,4,VREFB,AIN4,Y2,,S0.0,TCC0[0],,
PA05,5,,AIN5,Y3,,S0.1,TCC0[1],,
PA06,6,,AIN6,Y4,,S0.2,TCC1[0],,
PA07,7,,AIN7,Y5,,S0.3,TCC1[1],,I2S/SD0
PA08,NMI,,AIN16,,S0.0,S2.0,TCC0[0],TCC1[2],I2S/SD1
PA09,9,,AIN17,,S0.1,S2.0,TCC0[1],TCC1[3],I2S/MCK0
PA10,10,,AIN18,,S0.2,S2.2,TCC1[0],TCC0[2],I2S/SCK0
PA11,11,,AIN19,,S0.3,S2.3,TCC1[1],TCC0[3],I2S/FS0
PA12,12,,,,S2.0,S4.0,TCC2[0],TCC0[6],
PA13,13,,,,S2.1,S4.1,TCC2[1],TCC0[7],
PA14,14,,,,S2.2,S4.2,TC3[0],TCC0[4],
PA15,15,,,,S2.3,S4.3,TC3[1],TCC0[5],
PA16,0,,,,S1.0,S3.0,TCC2[0],TCC0[6],
PA17,1,,,,S1.1,S3.1,TCC2[1],TCC0[7],
PA18,2,,,,S1.2,S3.2,TC3[0],TCC0[2],
PA19,3,,,,S1.3,S3.3,TC3[1],TCC0[3],I2S/SD0
PA20,4,,,,S5.2,S3.2,TC7[0],TCC0[6],I2S/SCK0
PA21,5,,,,S5.3,S3.3,TC7[1],TCC0[7],I2S/FS0
PA22,6,,,,S3.0,S5.0,TC4[0],TCC0[4],
PA23,7,,,,S3.1,S5.1,TC4[1],TCC0[5],
PA24,12,,,,S3.2,S5.2,TC5[0],TCC1[2],USB D-
PA25,13,,,,S3.3,S5.3,TC5[1],TCC1[3],USB D+
PA27,15,,,,,,,,
PA28,8,,,,,,,,
PA30,10,,,,,S1.2,TCC1[0],,SWCLK
PA31,11,,,,,S1.3,TCC1[1],,SWDIO
PB00,0,,AIN8,Y6,,S5.2,TC7[0],,
PB01,1,,AIN9,Y7,,S5.3,TC7[1],,
PB02,2,,AIN10,Y8,,S5.0,TC6[0],,
PB03,3,,AIN11,Y9,,S5.1,TC6[1],,
PB04,4,,AIN12,Y10,,,,,
PB05,5,,AIN13,Y11,,,,,
PB06,6,,AIN14,Y12,,,,,
PB07,7,,AIN15,Y13,,,,,
PB08,8,,AIN2,Y14,,S4.0,TC4[0],,
PB09,9,,AIN3,Y15,,S4.1,TC4[1],,
PB10,10,,,,,S4.2,TC5[0],TCC0[4],I2S/MCK1
PB11,11,,,,,S4.3,TC5[1],TCC0[5],I2S/SCK1
PB12,12,,,,S4.0,,TC4[0],TCC0[6],I2S/FS1
PB13,13,,,,S4.1,,TC4[1],TCC0[7],
PB14,14,,,,S4.2,,TC5[0],,
PB15,15,,,,S4.3,,TC5[1],,
PB16,0,,,,S5.0,,TC6[0],TCC0[4],I2S/SD1
PB17,1,,,,S5.1,,TC6[1],TCC0[5],I2S/MCK0
PB22,6,,,,,S5.2,TC7[0],,
PB23,7,,,,,S5.3,TC7[1],,
PB30,14,,,,,S5.0,TCC0[0],TCC1[2],
PB31,15,,,,,S5.1,TCC0[1],TCC1[3],
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DESCRIPTION,"The Microchip (nee Atmel) SAMD21 is an ARM Cortex-M0+ running at 48 MHz with 32kB on-chip SRAM, 256KB Flash memory and built in USB. All GPIO is 3.3V in/out max unless otherwise stated. SERCOMs can be used as UART (TX on SERCOM pad 0 or 2, RX on any pad), I2C (SDA on pad 0, SCL on pad 1), or SPI (SCK on pad 1 or 3, MOSI on pad 0 or 3 (SCK on pad 1) or pad 0 or 2 (SCK on pad 3), MISO on any pad remaining) ",,,,,,,,
1 GPIO INT DAC/AREF ADC Touch SERCOM SERCOM Alt Timer Timer Alt Special
2 PA00 0 S1.0 TCC2[0]
3 PA01 1 S1.1 TCC2[1]
4 PA02 2 VOUT AIN0 Y0
5 PA03 3 VREFA AIN1 Y1
6 PA04 4 VREFB AIN4 Y2 S0.0 TCC0[0]
7 PA05 5 AIN5 Y3 S0.1 TCC0[1]
8 PA06 6 AIN6 Y4 S0.2 TCC1[0]
9 PA07 7 AIN7 Y5 S0.3 TCC1[1] I2S/SD0
10 PA08 NMI AIN16 S0.0 S2.0 TCC0[0] TCC1[2] I2S/SD1
11 PA09 9 AIN17 S0.1 S2.0 TCC0[1] TCC1[3] I2S/MCK0
12 PA10 10 AIN18 S0.2 S2.2 TCC1[0] TCC0[2] I2S/SCK0
13 PA11 11 AIN19 S0.3 S2.3 TCC1[1] TCC0[3] I2S/FS0
14 PA12 12 S2.0 S4.0 TCC2[0] TCC0[6]
15 PA13 13 S2.1 S4.1 TCC2[1] TCC0[7]
16 PA14 14 S2.2 S4.2 TC3[0] TCC0[4]
17 PA15 15 S2.3 S4.3 TC3[1] TCC0[5]
18 PA16 0 S1.0 S3.0 TCC2[0] TCC0[6]
19 PA17 1 S1.1 S3.1 TCC2[1] TCC0[7]
20 PA18 2 S1.2 S3.2 TC3[0] TCC0[2]
21 PA19 3 S1.3 S3.3 TC3[1] TCC0[3] I2S/SD0
22 PA20 4 S5.2 S3.2 TC7[0] TCC0[6] I2S/SCK0
23 PA21 5 S5.3 S3.3 TC7[1] TCC0[7] I2S/FS0
24 PA22 6 S3.0 S5.0 TC4[0] TCC0[4]
25 PA23 7 S3.1 S5.1 TC4[1] TCC0[5]
26 PA24 12 S3.2 S5.2 TC5[0] TCC1[2] USB D-
27 PA25 13 S3.3 S5.3 TC5[1] TCC1[3] USB D+
28 PA27 15
29 PA28 8
30 PA30 10 S1.2 TCC1[0] SWCLK
31 PA31 11 S1.3 TCC1[1] SWDIO
32 PB00 0 AIN8 Y6 S5.2 TC7[0]
33 PB01 1 AIN9 Y7 S5.3 TC7[1]
34 PB02 2 AIN10 Y8 S5.0 TC6[0]
35 PB03 3 AIN11 Y9 S5.1 TC6[1]
36 PB04 4 AIN12 Y10
37 PB05 5 AIN13 Y11
38 PB06 6 AIN14 Y12
39 PB07 7 AIN15 Y13
40 PB08 8 AIN2 Y14 S4.0 TC4[0]
41 PB09 9 AIN3 Y15 S4.1 TC4[1]
42 PB10 10 S4.2 TC5[0] TCC0[4] I2S/MCK1
43 PB11 11 S4.3 TC5[1] TCC0[5] I2S/SCK1
44 PB12 12 S4.0 TC4[0] TCC0[6] I2S/FS1
45 PB13 13 S4.1 TC4[1] TCC0[7]
46 PB14 14 S4.2 TC5[0]
47 PB15 15 S4.3 TC5[1]
48 PB16 0 S5.0 TC6[0] TCC0[4] I2S/SD1
49 PB17 1 S5.1 TC6[1] TCC0[5] I2S/MCK0
50 PB22 6 S5.2 TC7[0]
51 PB23 7 S5.3 TC7[1]
52 PB30 14 S5.0 TCC0[0] TCC1[2]
53 PB31 15 S5.1 TCC0[1] TCC1[3]
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 DESCRIPTION The Microchip (nee Atmel) SAMD21 is an ARM Cortex-M0+ running at 48 MHz with 32kB on-chip SRAM, 256KB Flash memory and built in USB. All GPIO is 3.3V in/out max unless otherwise stated. SERCOMs can be used as UART (TX on SERCOM pad 0 or 2, RX on any pad), I2C (SDA on pad 0, SCL on pad 1), or SPI (SCK on pad 1 or 3, MOSI on pad 0 or 3 (SCK on pad 1) or pad 0 or 2 (SCK on pad 3), MISO on any pad remaining)