PrettyPins PDF on GitHub.
- USB C connector - This is used for power and data. Connect to your computer via a USB C cable to update firmware and edit code.
- LiPoly Battery connector - This 2-pin JST PH connector allows you to plug in LiPoly batteries to power the Feather. The Feather is also capable of charging batteries plugged into this port via USB.
- chg LED - This small LED is located below the USB C connector. This indicates the charge status of a connected LiPoly battery when charging over USB. Note, it's normal for this LED to flicker when no battery is in place, that's the charge circuitry trying to detect whether a battery is there or not.
- GND - This is the common ground for all power and logic.
- Bat - This is the positive voltage to/from the 2-pin JST PH jack for the optional LiPoly battery.
- USB - This is the positive voltage to/from the USB C connector, if USB is connected.
- EN - This is the 3.3V regulator's enable pin. It's pulled up, so connect to ground to disable the 3.3V regulator.
- 3.3V - These pins are the output from the 3.3V regulator, they can supply 500mA peak.
On the back of the Feather is a jumper labeled CHG. If you cut this jumper, you'll disable the LiPoly battery charging circuit. This means that you could use the JST-PH battery port with non-LiPoly batteries, such as AA or AAA battery packs.
On some boards the narrow jumper between the CHG pads may not be immediately visible because it is covered with solder mask.
UART, I2C and SPI on RP2350
The RP2350 is capable of handling I2C, SPI and UART on many pins. However, there are really only two peripherals each of I2C, SPI and UART: I2C0 and I2C1, SPI0 and SPI1, and UART0 and UART1. So while many pins are capable of I2C, SPI and UART, you can only do two at a time, and only on separate peripherals, 0 and 1. I2C, SPI and UART peripherals are included and numbered below.
PWM on RP2350
The RP2350 supports PWM on all pins. However, it is not capable of PWM on all pins at the same time. There are 8 PWM "slices", each with two outputs, A and B. Each pin on the Feather is assigned a PWM slice and output. For example, A0 is PWM5 A, which means it is the first output of the fifth slice. You can have up to 16 PWM objects on this Feather. The important thing to know is that you cannot use the same slice and output more than once at the same time. So, if you have a PWM object on pin A0, you cannot also put a PWM object on D10, because they are both PWM5 A. The PWM slices and outputs are indicated below.
Analog Pins
The RP22350 has four ADCs. These pins are the only pins capable of handling analog, and they can also do digital.
- A0/GPIO26 - This pin is ADC0. It is also SPI1 SCK, I2C1 SDA and PWM5 A.
- A1/GPIO27 - This pin is ADC1. It is also SPI1 MOSI, I2C1 SCL and PWM5 B.
- A2/GPIO28 - This pin is ADC2. It is also SPI1 MISO, I2C0 SDA and PWM6 A.
- A3/GPIO29 - This pin is ADC3. It is also SPI1 CS, I2C0 SCL and PWM6 B.
Digital Pins
These are the digital I/O pins. They all have multiple capabilities.
- D24/GPIO24 - Digital I/O pin 24. It is also UART1 TX, I2C0 SDA, and PWM4 A.
- D25/GPIO25 - Digital I/O pin 25. It is also UART1 RX, I2C0 SCL, and PWM4 B.
- SCK/GPIO22 - The main SPI0 SCK. It is also I2C1 SDA, and PWM3 A.
- MO/GPIO23 - The main SPI0 MOSI. It is also I2C1 SCL, and PWM3 B.
- MI/GPIO20 - The main SPI0 MISO. It is also UART1 TX, I2C0 SDA, and PWM2 A.
- RX/GPIO1 - The main UART0 RX pin. It is also I2C0 SDA, SPI0 CS and PWM0 B.
- TX/GPIO0 - The main UART0 TX pin. It is also I2C0 SCL, SPI0 MISO and PWM0 A.
- D13/GPIO7 - Digital I/O pin 7. It is also SPI0 MOSI, I2C1 SCL and PWM3 B.
- D12/GPIO4 - Digital I/O pin 4. It is also SPI0 MISO, TX1, SDA0 and PWM2 A.
- D11/GPIO11 - Digital I/O pin 11. It is also SPI1 MOSI, I2C1 SCL and PWM5 B.
- D10/GPIO10 - Digital I/O pin 10. It is also SPI1 SCK, I2C1 SDA and PWM5 A.
- D9/GPIO9 - Digital I/O pin 9. It is also SPI1 CS, UART1 RX, I2C0 SCL and PWM4 B.
- D6/GPIO6 - Digital I/O pin 6. It is also SPI0 SCK, I2C1 SDA, and PWM3 A.
- D5/GPIO5 - Digital I/O pin 5. It is also SPI0 CS, UART1 RX, I2C0 SCL, and PWM2 B.
- D4/GPIO4 - Digital I/O pin 4. It is also RX0, TX1, I2C0 SDA0 and PWM2 A.
- SCL/GPIO3 - The main I2C1 clock pin. It is also SPI0 MOSI, I2C1 SCL and PWM1 B.
- SDA/GPIO2 - The main I2C1 data pin. It is also SPI0 SCK, I2C1 SDA and PWM1 A.
CircuitPython I2C, SPI and UART
Note that in CircuitPython, there is a board object each for STEMMA QT, I2C, SPI and UART that use the connector and pins labeled on the Feather. You can use these objects to initialize these peripherals in your code.
-
board.STEMMA_I2C()
uses the STEMMA QT connector (in this case, SCL/SDA pins) -
board.I2C()
uses SCL/SDA pins (GPIO2 and GPIO3) -
board.SPI()
uses SCK/MO/MI pins (GPIO22, GPIO23 and GPIO20) -
board.UART()
uses RX/TX pins (GPIO0 and GPIO1)
Arduino I2C, SPI and UART
I2C, SPI and UART can be accessed with these objects in Arduino:
-
Wire
is used for the default I2C and STEMMA QT connector (GPIO2 and GPIO3). -
SPI
is used for the default SPI pins (GPIO22, GPIO23 and GPIO20). -
Serial1
is used for the default UART pins (GPIO0 and GPIO1).
The peripheral order is defined in the board support definition for Arduino. For example, you'll notice that even though the default I2C (GPIO2 and GPIO3) is located on I2C1, it is defined as Wire
rather than Wire1
.
RP2350 A2 E9 Erratum
The Adafruit Feather RP2350 HSTX comes with the A2 version of the RP2350, which is affected by the E9 erratum. This errata affects some uses of GPIO and PIO such as high-impedance inputs and the internal pulldowns. A pin can read as high even when driven or pulled low, if the input signal is high impedance or if an attached pull-down resistor is too weak (has too high a value). You may need to use 8.2K or smaller resistors if pull-downs are required.
The large square towards the middle is the RP2350 microcontroller, the "brains" of this Feather board. It has dual M33 cores with 150 MHz clock rate. It has 520KB of SRAM and 8KB OTP memory, which means that MicroPython/CircuitPython runs great and also IoT projects that need a lot of memory buffer space will run better. Other features include 3 PIO blocks, a TrustZone secure boot, and a special High Speed Transmit (HSTX) peripheral that drives 4 lanes of differential data transmission such as DVI output without needing to overclock or use PIO.
The square towards the top-middle is the 8 MB QSPI Flash. It is connected to 6 pins that are not brought out on the GPIO pads. It is used for storing files and MicroPython/CircuitPython code storage.
Between the flash chip and the HSTX connector is a spot for soldering optional SOIC PSRAM chip to the Feather. To keep costs down the PSRAM isn't populated, but advanced hackers can solder their own onto the board. The chip select line for the PSRAM is broken out and is labeled PCS on the board silk. It is attached to GPIO8.
The RP2350 has a new built-in peripheral called the High Speed Transmit (HSTX) peripheral. It can drive 4 lanes of differential data transmission such as DVI output without needing to overclock or use PIO. On the back of the Feather is a 22-pin port for accessing the 8 consecutive HSTX peripheral pins (GPIO12-19), a few additional GPIO, 3.3V power and GND. The following pins are available via the HSTX port:
- 3.3V - output from the 3.3V regulator, it can supply 500mA peak.
- GND - common ground for power and logic.
- SCL/GPIO3 - The main I2C1 clock pin. It is also SPI0 MOSI, I2C1 SCL and PWM1 B.
- SDA/GPIO2 - The main I2C1 data pin. It is also SPI0 SCK, I2C1 SDA and PWM1 A.
- D11/GPIO11 - Digital I/O pin 11. It is also SPI1 MOSI, I2C1 SCL and PWM5 B.
- D10/GPIO10 - Digital I/O pin 10. It is also SPI1 SCK, I2C1 SDA and PWM5 A.
- D0N/GPIO19 - Digital I/O pin 19 and one of the 8 HSTX peripheral pins. It is also SPI0 MOSI, I2C1 SCL and PWM1 B.
- D0P/GPIO18 - Digital I/O pin 18 and one of the 8 HSTX peripheral pins. It is also SPI0 SCK, I2C1 SDA and PWM1 A.
- D1N/GPIO17 - Digital I/O pin 17 and one of the 8 HSTX peripheral pins. It is also SPI0 CS, UART0 RX, I2C0 SCL and PWM0 B.
- D1P/GPIO16 - Digital I/O pin 16 and one of the 8 HSTX peripheral pins. It is also SPI0 MISO, UART0 TX, I2C0 SDA and PWM0 A.
- CKN/GPIO15 - Digital I/O pin 15 and one of the 8 HSTX peripheral pins. It is also SPI1 MOSI, I2C1 SCL and PWM7 B.
- CKP/GPIO14 - Digital I/O pin 14 and one of the 8 HSTX peripheral pins. It is also SPI1 SCK, I2C1 SDA and PWM7 A.
- D2N/GPIO13 - Digital I/O pin 13 and one of the 8 HSTX peripheral pins. It is also SPI1 CS, UART0 RX, I2C0 SCL and PWM6 B.
- D2P/GPIO12 - Digital I/O pin 12 and one of the 8 HSTX peripheral pins. It is also SPI1 MISO, UART0 TX, I2C0 SDA and PWM6 A.
The Boot button is the button on the right. It is used to enter the bootloader. To enter the bootloader, press and hold Boot and then power up the board (either by plugging it into USB or pressing Reset). The bootloader is used to install/update CircuitPython.
The Reset button is on the left. It restarts the board and helps enter the bootloader. You can click it to reset the board without unplugging the USB cable or battery.
The Rst pin can be used to reset the board. Tie to ground manually to reset the board.
Above the silkscreen label for pin SCK is the status NeoPixel LED. It is connected to GPIO21. In CircuitPython, the NeoPixel is available at board.NEOPIXEL
and the library for it is available in the bundle. In Arduino, it is accessible at PIN_NEOPIXEL
. The NeoPixel is powered by the 3.3V power supply but that hasn't shown to make a big difference in brightness or color. In CircuitPython, the LED is used to indicate the runtime status.
Above the USB C connector is the #7 LED, connected to GPIO7. This little red LED is controllable in CircuitPython code using board.LED
, and in Arduino as PIN_LED
.
In the middle of the board, to the left of the HSTX port, is the STEMMA QT connector! This means you can connect up all sorts of I2C sensors and breakouts, no soldering required! This connector uses the SCL and SDA pins for I2C, which end up being the RP2350's I2C1 peripheral. In CircuitPython, you can initialize the STEMMA connector with board.STEMMA_I2C()
(as well as with board.SCL
board.SDA
). In Arduino it is Wire
.
Below the STEMMA QT port is the JST SH 3-pin Debug port for SWD debugging. This port matches the Raspberry Pi 3-pin Debug Connector Specification for use with the Debug Probe Kit. It breaks out the following serial debug pins:
- Pin 1: SWCLK (serial clock)
- Pin 2: GND
- Pin 3: SWDIO (bidirectional serial data)
Text editor powered by tinymce.