The Feather STM32F405 is chock-full of microcontroller goodness. There's also a lot of pins and ports. We'll take you a tour of them now!
- GND - this is the common ground for all power and logic
- BAT - this is the positive voltage to/from the JST jack for the optional Lipoly battery
- USB - this is the positive voltage to/from the USB C jack if 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
- 3V - this is the output from the 3.3V regulator, it can supply 500mA peak
This is the general purpose I/O pin set for the microcontroller.
All logic is 3.3V, nearly all pins are 5V compliant
Many pins can do PWM output
All pins can be interrupt inputs
-
RX / GPIO 0 / PB11
Receive (input) pin for Serial3. Hardware USART3
PWM out on TIM2_CH4
Alternate uses: I2C2 SDA -
TX / GPIO 1 / PB10
Transmit (output) pin for Serial3. Hardware USART3
PWM out on TIM2_CH3
Alternate uses: I2C2 SCL -
SDA / GPIO 14 / PB7
The I2C (Wire) data pin, this has a 10K pullup to 3.3V. Hardware I2C1
PWM out on TIM4_CH2
Alternate uses: USART1 RX
-
SCL / GPIO 15 / PB6
the I2C (Wire) clock pin, this has a 10K pullup to 3.3V. Hardware I2C1
PWM out on TIM4_CH1
Alternate uses: USART1 TX, CAN2 TX
-
GPIO 5 / PC7
PWM out on TIM3_CH2
Alternate uses: USART6 RX, I2S3 MCK -
GPIO 6 / PC6
PWM out on TIM3_CH1
Alternate uses: USART6 TX, I2S2 MCK -
GPIO 9 / PB8
PWM out on TIM4_CH3
Alternate uses: CAN1 RX, I2C1 SCL -
GPIO 10 / PB9
PWM out on TIM4_CH4
Alternate uses: CAN1 TX, I2C1 SDA -
GPIO 11 / PC3
No PWM
Alternate uses: I2S2 SD, SPI2 MOSI -
GPIO 12 / PC2
No PWM
Alternate uses: I2S2ext SD, SPI2 MISO
-
GPIO 13 / PC1
Connected to the red LED next to the USB jack
No PWM or alternate uses -
SCK / GPIO23 / PB13
The SPI bus clock pin. Hardware SPI2
PWM out on TIM1_CH1N (available in Arduino, not CircuitPython)
Alternate uses: I2S2 Clock, CAN2 TX -
MISO / GPIO24 / PB14
The SPI bus input data pin. Hardware SPI2
PWM out on TIM1_CH2N
Alternate uses: I2S2ext SD -
MOSI / GPIO25 / PB15
The SPI bus output data pin. Hardware SPI2
PWM out on TIM1_CH3N
Alternate uses: I2S2 SD
Analog Pins:
-
A0 / GPIO 16 / PA4
This pin is analog input A0 (ADC12 IN4)
Analog output (DAC OUT1) due to having a DAC (digital-to-analog converter). You can set the raw voltage to anything from 0 to 3.3V, unlike PWM outputs this is a true analog output
No PWM or alternate uses -
A1 / GPIO 17 / PA5
This pin is analog input A1 (ADC12 IN5)
Analog output (DAC OUT2) due to having a DAC (digital-to-analog converter). This is the second DAC, and is 'independent' of A0. You can set the raw voltage to anything from 0 to 3.3V, unlike PWM outputs this is a true analog output.
Alternative uses: SPI1 SCK -
A2 / GPIO18 / PA6
This pin is analog input A2 (ADC12 IN6)
Alternative uses: SPI1 MISO
PWM out on TIM3_CH1 -
A3 / GPIO19 / PA7
This pin is analog input A3 (ADC12 IN7)
Alternative uses: SPI1 MOSI
PWM out on TIM3_CH2 -
A4 / GPIO20 / PC4
This pin is analog input A4 (ADC12 IN14) -
A5 / GPIO21 / PC5
This pin is analog input A5 (ADC12 IN15)
A6 is also available for reading the battery voltage, see the Power Management page for instructions how
I2S Pins:
-
#1/Tx - I2S2
bit_clock
pin. -
#6 - I2S2
master clock
pin -
#10 - I2S2
word_select
pin. -
#11 - I2S2
data
pin.
Note at this time we have not tested I2S in Arduino or MicroPython. There is no support yet in CircuitPython.
CAN Pins:
- #9 - CAN1 RX
- #10 - CAN1 TX
CircuitPython has CAN support via the canio
module. MicroPython also supports CAN. Arduino has an open issue, no support.
On the bottom of the PCB is a micro SD card slot. Unlike other Feathers, this is connected to the SDIO port (PC8 thru PC12 plus PD2).
In Arduino, SDIO is well supported via the STM32SD library .CircuitPython and MicroPython support SDIO. In CircuitPython use the sdioio
module.
The SD detect pin is on PB12 a.k.a D32.
Rev B of this PCB has an error where SD detect is not usable, we will fix in rev C!
BAT Pins
The bottom has a test point named BAT near the center of the board. You can use it to keep the STM32's real-time clock, backup registers, and backup SRAM running while the rest of the chip is powered down.
SWD Port
On the bottom there is also a 2x5 connector pad that can be used to connect an SWD debug port for advanced uses. We don't solder the connector in place because it would take up space and make it hard to insert into a breadboard. However, you can pick up a 2x5 connector and solder it yourself! Pinout matches any/all JLink/SWD programmers with 2x5 connectors.
SPI Flash, STEMMA and NeoPixel
As part of the 'Express' series of boards, the Feather STM32F405 Express is designed for use with CircuitPython. To make that easy, we have added two extra parts to this Feather: a mini NeoPixel (RGB LED) and a 2 MB SPI Flash chip.
The NeoPixel is connected to pin #8 in Arduino, so just use our NeoPixel library and set it up as a single-LED strand on pin 8.
CircuitPython, the NeoPixel is board.NEOPIXEL
and the library for it is here and in the bundle. The NeoPixel is powered by the 3.3V power supply but that hasn't shown to make a big difference in brightness or color. The NeoPixel is not used by the built in STM32 bootloader! This is different than our M0/M4/nRF52840 boards
The SPI Flash is connected to SPI bus 1 pins that are not brought out on the GPIO pads. This way you don't have to worry about the SPI flash colliding with other devices on the main SPI connection.
We give the SPI Flash the 'faster' SPI port 1 because there is no QSPI support, and reading fast from the SPI is important if you want to stream audio clips or GIFs.
In CircuitPython the SPI flash is automatically used as the filesystem exposed over USB.
In Arduino you can access SPI flash with our library and adding this definition to the top of your sketch to instantiate the SPI flash. SPIClass SPI_FLASH(PIN_SPI1_MOSI, PIN_SPI1_MISO, PIN_SPI1_SCK, PIN_SPI1_SS);
Adafruit_FlashTransport_SPI flashTransport(PIN_SPI1_SS, &SPI_FLASH);
Note that our SPI flash library cannot be used at the same time as the SDIO library because they have colliding File definitions.
The Qwiic / STEMMA QT port is a JST SH 1.0mm pitch connector that gives a plug-and-play connection to 3.3V, GND, SDA and SCL. Perfect for attaching a wide variety of sensors. Check out our wide range of cables and devices that can be chained together just like this mini GPS module:
In CircuitPython, you can use the STEMMA connector with board.SCL
and board.SDA
, or board.STEMMA_I2C()
.
Page last edited March 14, 2024
Text editor powered by tinymce.