This commit is contained in:
lady ada 2021-05-02 11:48:15 -04:00
parent f4e373b59d
commit b469cb9cfb
5 changed files with 2780 additions and 0 deletions

BIN
Adafruit Feather RP2040.zip Normal file

Binary file not shown.

1996
breadboard.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 206 KiB

128
parser.py Normal file
View file

@ -0,0 +1,128 @@
#!/usr/bin/python3
import click
import xml.etree.ElementTree as ET
from xml.dom import minidom
import xmltodict
import svgutils.transform as sg
import sys
import re
MM_TO_PX = 96 / 25.4
PX_TO_MM = 25.4 / 96
FONT_HEIGHT_PX = 10.5
FONT_CHAR_W = 4
@click.argument('circuitpydef')
@click.argument('SVG')
@click.argument('FZP')
@click.command()
def parse(fzp, svg, circuitpydef):
click.echo("HI! THIS IS A MISTAKE!")
connections = []
f = open(fzp)
xmldict = xmltodict.parse(f.read())
for c in xmldict['module']['connectors']['connector']:
c_name = c['@name']
c_svg = c['views']['breadboardView']['p']['@svgId']
d = {'name': c_name, 'svgid': c_svg}
connections.append(d)
print(connections)
# open and paste the SVG into a new file
bb_sg = sg.fromfile(svg)
bb_root = bb_sg.getroot()
w = bb_sg.width
h = bb_sg.height
if "in" in w:
w = 25.4 * float(w[:-2])
else:
raise RuntimeError("Dont know units of width!", w)
if "in" in h:
h = 25.4 * float(h[:-2])
else:
raise RuntimeError("Dont know units of width!", h)
print("Width, Height in mm: ", w, h)
newsvg = sg.SVGFigure()
newsvg.set_size(("%dpx" % (w * MM_TO_PX), "%dpx" % (h * MM_TO_PX)))
print(newsvg.get_size())
#bb_root.rotate(90)
#bb_root.moveto(h * MM_TO_PX, 0, 1.33)
newsvg.append(bb_root)
newsvg.save("rotated.svg")
# ok now we can open said new file as an xml
xmldoc = minidom.parse("rotated.svg")
# Find all circle/pads
circlelist = xmldoc.getElementsByTagName('circle')
for c in circlelist:
try:
idval = c.attributes['id'].value
cx = c.attributes['cx'].value
cy = c.attributes['cy'].value
for d in connections:
if d['svgid'] == c.attributes['id'].value:
d['cx'] = float(cx)
d['cy'] = float(cy)
except KeyError:
pass
# sometimes pads are ellipses, note they're often transformed!
ellipselist = xmldoc.getElementsByTagName('ellipse')
for c in ellipselist:
try:
idval = c.attributes['id'].value
cx = c.attributes['cx'].value
cy = c.attributes['cy'].value
for d in connections:
if d['svgid'] == c.attributes['id'].value:
d['cx'] = float(cx)
d['cy'] = float(cy)
except KeyError:
pass
# now check the circuitpython definition file
pyvar = open(circuitpydef).readlines()
for line in pyvar:
#print(line)
matches = re.match(r'.*MP_ROM_QSTR\(MP_QSTR_(.*)\),\s+MP_ROM_PTR\(&pin_(.*)\)', line)
if not matches:
continue
#print(matches.group(1), matches.group(2))
for d in connections:
if d['name'] == matches.group(1):
if not 'aliases' in d:
d['aliases'] = []
d['aliases'].append(matches.group(2))
# add text labels!
for c in connections:
print(c)
is_top = c['cy'] < h/2
label = c['name']
if 'aliases' in c:
for a in c['aliases']:
if is_top:
label += "/" + a
else:
label = a + "/" + label
txt = sg.TextElement(0, 0, label, font="Courier New", weight="bold", color='red', size=6)
txt.rotate(270)
if is_top:
txt.moveto(c['cx'] + FONT_HEIGHT_PX/5, c['cy']-FONT_CHAR_W)
else:
txt.moveto(c['cx'] + FONT_HEIGHT_PX/5, c['cy']+(FONT_CHAR_W*len(label)))
newsvg.append(txt)
newsvg.save("rotated.svg")
if __name__ == '__main__':
parse()

625
part.fzp Normal file
View file

@ -0,0 +1,625 @@
<?xml version='1.0' encoding='UTF-8'?>
<module fritzingVersion="0.5.2b.02.18.4756" moduleId="adafruit_2a47ed913053991b1303ab3b531a4430_1" referenceFile="Feather RP2040 rev C.fzp">
<version>4</version>
<date>Wed Mar 3 2021</date>
<author>kattni</author>
<description>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
p, li { white-space: pre-wrap; }
&lt;/style>&lt;/head>&lt;body style=" font-family:'.AppleSystemUIFont'; font-size:13pt; font-weight:400; font-style:normal;">
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A new chip means a new Feather, and the Raspberry Pi RP2040 is no exception. When we saw this chip we thought &amp;quot;this chip is going to be awesome when we give it the Feather Treatment&amp;quot; and so we did! This Feather features the &lt;span style=" font-weight:600;">RP2040&lt;/span>, and all niceties you know and love about Feather&lt;/p>
&lt;ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">&lt;li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Measures 2.0&amp;quot; x 0.9&amp;quot; x 0.28&amp;quot; (50.8mm x 22.8mm x 7mm) without headers soldered in&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Light as a (large?) feather - 5 grams&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">RP2040 32-bit Cortex M0+ dual core running at ~125 MHz @ 3.3V logic and power&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">264 KB RAM&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">8 MB SPI FLASH&lt;/span> chip for storing files and CircuitPython/MicroPython code storage. No EEPROM&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Tons of GPIO! 21 x GPIO pins with following capabilities:&lt;/span>&lt;/li>
&lt;ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;">&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Four &lt;/span>12 bit ADCs (one more than Pico)&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Two I2C, Two SPI and two UART peripherals, we label one for the 'main' interface in standard Feather locations&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">16 x PWM outputs - for servos, LEDs, etc&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The 8 digital 'non-ADC/non-peripheral' GPIO are consecutive for maximum PIO compatibility&lt;/li>&lt;/ul>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Built in 200mA lipoly charger&lt;/span> with charging status indicator LED&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Pin #13 red LED &lt;/span>for general purpose blinking&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">RGB NeoPixel &lt;/span>with power pin on GPIO so you can depower it for low power usages.&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On-board &lt;span style=" font-weight:600;">STEMMA QT connector&lt;/span> that lets you quickly connect any Qwiic, STEMMA QT or Grove I2C devices with no soldering!&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Both Reset button and Bootloader select button for quick restarts (no unplugging-replugging to relaunch code) &lt;/span>&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">3.3V Power/enable pin&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;a href="https://www.adafruit.com/product/752">&lt;span style=" text-decoration: underline; color:#0000ff;">Optional SWD debug port can be soldered in for debug access&lt;/span>&lt;/a>&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">4 mounting holes&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">24 MHz crystal for perfect timing.&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">3.3V regulator with 500mA peak current output&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">USB Type C connector &lt;/span>lets you access built-in ROM USB bootloader and serial port debugging&lt;/li>&lt;/ul>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Inside the RP2040 is a 'permanent ROM' USB UF2 bootloader&lt;/span>. What that means is when you want to program new firmware, you can hold down the BOOTSEL button while plugging it into USB (or pulling down the RUN/Reset pin to ground) and it will appear as a USB disk drive you can drag the firmware onto. Folks who have been using Adafruit products will find this very familiar - we use the technique on all our native-USB boards. Just note you don't double-click reset, instead hold down BOOTSEL during boot to enter the bootloader!&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The RP2040 is a powerful chip, which has the clock speed of our M4 (SAMD51), and two cores that are equivalent to our M0 (SAMD21). Since it is an M0 chip, it does not have a floating point unit, or DSP hardware support - so if you're doing something with heavy floating-point math, it will be done in software and thus not as fast as an M4. For many other computational tasks, you'll get close-to-M4 speeds!&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">For peripherals, there are two I2C controllers, two SPI controllers, and two UARTs that are multiplexed across the GPIO - check the pinout for what pins can be set to which. There are 16 PWM channels, each pin has a channel it can be set to (ditto on the pinout).&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You'll note there's no I2S peripheral, or SDIO, or camera, what's up with that? Well instead of having specific hardware support for serial-data-like peripherals like these, the RP2040 comes with the PIO state machine system which is a unique and powerful way to create &lt;span style=" font-style:italic;">custom hardware logic and data processing blocks&lt;/span> that run on their own without taking up a CPU. For example, NeoPixels - often we bitbang the timing-specific protocol for these LEDs. For the RP2040, we instead use PIO object that reads in the data buffer and clocks out the right bitstream with perfect accuracy. &lt;a href="https://github.com/raspberrypi/pico-examples/tree/master/pio">&lt;span style=" text-decoration: underline; color:#0000ff;">Same with I2S audio in or out, LED matrix displays, 8-bit or SPI based TFTs, even VGA&lt;/span>&lt;/a>! In MicroPython and CircuitPython you can create PIO control commands to script the peripheral and load it in at runtime. There are 2 PIO peripherals with 4 state machines each.&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">At the time of launch, there is no Arduino core support for this board. There is great &lt;/span>&lt;a href="https://github.com/raspberrypi/pico-sdk">&lt;span style=" font-weight:600; text-decoration: underline; color:#0000ff;">C/C++ support&lt;/span>&lt;/a>&lt;span style=" font-weight:600;">, an official &lt;/span>&lt;a href="https://github.com/raspberrypi/micropython">&lt;span style=" font-weight:600; text-decoration: underline; color:#0000ff;">MicroPython port&lt;/span>&lt;/a>&lt;span style=" font-weight:600;">, and a &lt;/span>&lt;a href="https://circuitpython.org/downloads">&lt;span style=" font-weight:600; text-decoration: underline; color:#0000ff;">CircuitPython port&lt;/span>&lt;/a>&lt;span style=" font-weight:600;">!&lt;/span> We of course &lt;a href="https://learn.adafruit.com/welcome-to-circuitpython">&lt;span style=" text-decoration: underline; color:#0000ff;">recommend CircuitPython because we think it's the easiest way to get started&lt;/span>&lt;/a> and it has support with most of our drivers, displays, sensors, and more, supported out of the box so you can follow along with our CircuitPython projects and tutorials.&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">While the RP2040 has lots of onboard RAM (264KB), it does not have built-in FLASH memory. Instead, that is provided by the external QSPI flash chip. &lt;span style=" font-weight:600;">On this board there is 8 MB&lt;/span>, which is shared between the program it's running and any file storage used by MicroPython or CircuitPython. When using C/C++ you get the whole flash memory, if using Python you will have about 7 MB remaining for code, files, images, fonts, etc.&lt;/p>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">RP2040 Chip features:&lt;/span>&lt;/p>
&lt;ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">&lt;li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dual ARM Cortex-M0+ @ 133MHz&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">264kB on-chip SRAM in six independent banks&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Support for up to 16MB of off-chip Flash memory via dedicated QSPI bus&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">DMA controller&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fully-connected AHB crossbar&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Interpolator and integer divider peripherals&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On-chip programmable LDO to generate core voltage&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">2 on-chip PLLs to generate USB and core clocks&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">30 GPIO pins, 4 of which can be used as analog inputs&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Peripherals&lt;/li>&lt;/ul>
&lt;ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 2;">&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">2 UARTs&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">2 SPI controllers&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">2 I2C controllers&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">16 PWM channels&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">USB 1.1 controller and PHY, with host and device support&lt;/li>
&lt;li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">8 PIO state machines&lt;/li>&lt;/ul>
&lt;p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Comes fully assembled and tested, with the UF2 USB bootloader. We also toss in some header, so you can solder it in and plug it into a solderless breadboard. &lt;/p>&lt;/body>&lt;/html></description>
<title>Adafruit Feather RP2040</title>
<tags/>
<properties>
<property name="part number">Adafruit #4884</property>
<property name="layer"></property>
<property name="family">Adafruit Feather RP2040</property>
<property name="variant">variant 1</property>
</properties>
<views>
<breadboardView>
<layers image="breadboard/adafruit_2a47ed913053991b1303ab3b531a4430_1_breadboard.svg">
<layer layerId="breadboard"/>
</layers>
</breadboardView>
<schematicView>
<layers image="schematic/adafruit_2a47ed913053991b1303ab3b531a4430_1_schematic.svg">
<layer layerId="schematic"/>
</layers>
</schematicView>
<pcbView>
<layers image="pcb/adafruit_2a47ed913053991b1303ab3b531a4430_1_pcb.svg">
<layer layerId="copper1"/>
<layer layerId="silkscreen"/>
<layer layerId="copper0"/>
</layers>
</pcbView>
<iconView>
<layers image="icon/adafruit_2a47ed913053991b1303ab3b531a4430_1_icon.svg">
<layer layerId="icon"/>
</layers>
</iconView>
</views>
<connectors>
<connector type="male" name="+3V3" id="connector119">
<description>+3V3</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector119pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector119pin" terminalId="connector119terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector119pad"/>
<p layer="copper1" svgId="connector119pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="+3V3" id="connector120">
<description>+3V3</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector120pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector120pin" terminalId="connector120terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector120pad"/>
<p layer="copper1" svgId="connector120pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="+3V3" id="connector42">
<description>+3V3</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector42pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector42pin" terminalId="connector42terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector42pad"/>
<p layer="copper1" svgId="connector42pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="VBAT" id="connector122">
<description>VBAT</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector122pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector122pin" terminalId="connector122terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector122pad"/>
<p layer="copper1" svgId="connector122pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="VBAT" id="connector200">
<description>VBAT</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector200pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector200pin" terminalId="connector200terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector200pad"/>
<p layer="copper1" svgId="connector200pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="VBUS" id="connector124">
<description>VBUS</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector124pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector124pin" terminalId="connector124terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector124pad"/>
<p layer="copper1" svgId="connector124pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="!RESET" id="connector121">
<description>!RESET</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector121pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector121pin" terminalId="connector121terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector121pad"/>
<p layer="copper1" svgId="connector121pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="A0" id="connector117">
<description>A0</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector117pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector117pin" terminalId="connector117terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector117pad"/>
<p layer="copper1" svgId="connector117pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="A1" id="connector116">
<description>A1</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector116pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector116pin" terminalId="connector116terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector116pad"/>
<p layer="copper1" svgId="connector116pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="A2" id="connector115">
<description>A2</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector115pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector115pin" terminalId="connector115terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector115pad"/>
<p layer="copper1" svgId="connector115pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="A3" id="connector114">
<description>A3</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector114pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector114pin" terminalId="connector114terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector114pad"/>
<p layer="copper1" svgId="connector114pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D24" id="connector113">
<description>D24</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector113pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector113pin" terminalId="connector113terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector113pad"/>
<p layer="copper1" svgId="connector113pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D25" id="connector112">
<description>D25</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector112pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector112pin" terminalId="connector112terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector112pad"/>
<p layer="copper1" svgId="connector112pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="SCK" id="connector111">
<description>SCK</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector111pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector111pin" terminalId="connector111terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector111pad"/>
<p layer="copper1" svgId="connector111pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="MOSI" id="connector110">
<description>MOSI</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector110pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector110pin" terminalId="connector110terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector110pad"/>
<p layer="copper1" svgId="connector110pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="MISO" id="connector109">
<description>MISO</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector109pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector109pin" terminalId="connector109terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector109pad"/>
<p layer="copper1" svgId="connector109pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="RX" id="connector108">
<description>RX</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector108pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector108pin" terminalId="connector108terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector108pad"/>
<p layer="copper1" svgId="connector108pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="TX" id="connector107">
<description>TX</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector107pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector107pin" terminalId="connector107terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector107pad"/>
<p layer="copper1" svgId="connector107pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D4" id="connector106">
<description>D4</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector106pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector106pin" terminalId="connector106terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector106pad"/>
<p layer="copper1" svgId="connector106pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="EN" id="connector123">
<description>EN</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector123pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector123pin" terminalId="connector123terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector123pad"/>
<p layer="copper1" svgId="connector123pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D13" id="connector125">
<description>D13</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector125pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector125pin" terminalId="connector125terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector125pad"/>
<p layer="copper1" svgId="connector125pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D12" id="connector126">
<description>D12</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector126pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector126pin" terminalId="connector126terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector126pad"/>
<p layer="copper1" svgId="connector126pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D11" id="connector127">
<description>D11</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector127pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector127pin" terminalId="connector127terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector127pad"/>
<p layer="copper1" svgId="connector127pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D10" id="connector128">
<description>D10</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector128pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector128pin" terminalId="connector128terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector128pad"/>
<p layer="copper1" svgId="connector128pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D9" id="connector129">
<description>D9</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector129pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector129pin" terminalId="connector129terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector129pad"/>
<p layer="copper1" svgId="connector129pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D6" id="connector130">
<description>D6</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector130pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector130pin" terminalId="connector130terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector130pad"/>
<p layer="copper1" svgId="connector130pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="D5" id="connector131">
<description>D5</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector131pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector131pin" terminalId="connector131terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector131pad"/>
<p layer="copper1" svgId="connector131pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="SCL" id="connector132">
<description>SCL</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector132pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector132pin" terminalId="connector132terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector132pad"/>
<p layer="copper1" svgId="connector132pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="SCL" id="connector44">
<description>SCL</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector44pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector44pin" terminalId="connector44terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector44pad"/>
<p layer="copper1" svgId="connector44pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="SDA" id="connector133">
<description>SDA</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector133pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector133pin" terminalId="connector133terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector133pad"/>
<p layer="copper1" svgId="connector133pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="SDA" id="connector43">
<description>SDA</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector43pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector43pin" terminalId="connector43terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector43pad"/>
<p layer="copper1" svgId="connector43pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="GND" id="connector118">
<description>GND</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector118pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector118pin" terminalId="connector118terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector118pad"/>
<p layer="copper1" svgId="connector118pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="GND" id="connector41">
<description>GND</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector41pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector41pin" terminalId="connector41terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector41pad"/>
<p layer="copper1" svgId="connector41pad"/>
</pcbView>
</views>
</connector>
<connector type="male" name="GND" id="connector199">
<description>GND</description>
<views>
<breadboardView>
<p layer="breadboard" svgId="connector199pin"/>
</breadboardView>
<schematicView>
<p layer="schematic" svgId="connector199pin" terminalId="connector199terminal"/>
</schematicView>
<pcbView>
<p layer="copper0" svgId="connector199pad"/>
<p layer="copper1" svgId="connector199pad"/>
</pcbView>
</views>
</connector>
</connectors>
<buses>
<bus id="gnd">
<nodeMember connectorId="connector118"/>
<nodeMember connectorId="connector41"/>
<nodeMember connectorId="connector199"/>
</bus>
<bus id="+3v3">
<nodeMember connectorId="connector119"/>
<nodeMember connectorId="connector120"/>
<nodeMember connectorId="connector42"/>
</bus>
<bus id="scl">
<nodeMember connectorId="connector132"/>
<nodeMember connectorId="connector44"/>
</bus>
<bus id="sda">
<nodeMember connectorId="connector133"/>
<nodeMember connectorId="connector43"/>
</bus>
<bus id="vbat">
<nodeMember connectorId="connector122"/>
<nodeMember connectorId="connector200"/>
</bus>
</buses>
<url>https://www.adafruit.com/product/4884</url>
</module>

31
rp2040pins.csv Normal file
View file

@ -0,0 +1,31 @@
GPIO SPI UART I2C PWM
GPIO0 RX0 TX0 SDA0 PWM0A
GPIO1 CSn0 RX0 SCL0 PWM0B
GPIO2 SCK0 CTS0 SDA1 PWM1A
GPIO3 TX0 RTS0 SCL1 PWM1B
GPIO4 RX0 TX1 SDA0 PWM2A
GPIO5 CSn0 RX1 SCL0 PWM2B
GPIO6 SCK0 CTS1 SDA1 PWM3A
GPIO7 TX0 RTS1 SCL1 PWM3B
GPIO8 RX1 TX1 SDA0 PWM4A
GPIO9 CSn1 RX1 SCL0 PWM4B
GPIO10 SCK1 CTS1 SDA1 PWM5A
GPIO11 TX1 RTS1 SCL1 PWM5B
GPIO12 RX1 TX0 SDA0 PWM6A
GPIO13 CSn1 RX0 SCL0 PWM6B
GPIO14 SCK1 CTS0 SDA1 PWM7A
GPIO15 TX1 RTS0 SCL1 PWM7B
GPIO16 RX0 TX0 SDA0 PWM0A
GPIO17 CSn0 RX0 SCL0 PWM0B
GPIO18 SCK0 CTS0 SDA1 PWM1A
GPIO19 TX0 RTS0 SCL1 PWM1B
GPIO20 RX0 TX1 SDA0 PWM2A
GPIO21 CSn0 RX1 SCL0 PWM2B
GPIO22 SCK0 CTS1 SDA1 PWM3A
GPIO23 TX0 RTS1 SCL1 PWM3B
GPIO24 RX1 TX1 SDA0 PWM4A
GPIO25 CSn1 RX1 SCL0 PWM4B
GPIO26 SCK1 CTS1 SDA1 PWM5A
GPIO27 TX1 RTS1 SCL1 PWM5B
GPIO28 RX1 TX0 SDA0 PWM6A
GPIO29 CSn1 RX0 SCL0 PWM6B
1 GPIO SPI UART I2C PWM
2 GPIO0 RX0 TX0 SDA0 PWM0A
3 GPIO1 CSn0 RX0 SCL0 PWM0B
4 GPIO2 SCK0 CTS0 SDA1 PWM1A
5 GPIO3 TX0 RTS0 SCL1 PWM1B
6 GPIO4 RX0 TX1 SDA0 PWM2A
7 GPIO5 CSn0 RX1 SCL0 PWM2B
8 GPIO6 SCK0 CTS1 SDA1 PWM3A
9 GPIO7 TX0 RTS1 SCL1 PWM3B
10 GPIO8 RX1 TX1 SDA0 PWM4A
11 GPIO9 CSn1 RX1 SCL0 PWM4B
12 GPIO10 SCK1 CTS1 SDA1 PWM5A
13 GPIO11 TX1 RTS1 SCL1 PWM5B
14 GPIO12 RX1 TX0 SDA0 PWM6A
15 GPIO13 CSn1 RX0 SCL0 PWM6B
16 GPIO14 SCK1 CTS0 SDA1 PWM7A
17 GPIO15 TX1 RTS0 SCL1 PWM7B
18 GPIO16 RX0 TX0 SDA0 PWM0A
19 GPIO17 CSn0 RX0 SCL0 PWM0B
20 GPIO18 SCK0 CTS0 SDA1 PWM1A
21 GPIO19 TX0 RTS0 SCL1 PWM1B
22 GPIO20 RX0 TX1 SDA0 PWM2A
23 GPIO21 CSn0 RX1 SCL0 PWM2B
24 GPIO22 SCK0 CTS1 SDA1 PWM3A
25 GPIO23 TX0 RTS1 SCL1 PWM3B
26 GPIO24 RX1 TX1 SDA0 PWM4A
27 GPIO25 CSn1 RX1 SCL0 PWM4B
28 GPIO26 SCK1 CTS1 SDA1 PWM5A
29 GPIO27 TX1 RTS1 SCL1 PWM5B
30 GPIO28 RX1 TX0 SDA0 PWM6A
31 GPIO29 CSn1 RX0 SCL0 PWM6B