Pinout

The female headers (X0 and X1) on the board are connected to the pins of the STM32 and GPIO pins on the Raspberry Pi. X0 is the top 2x25 female header, and X1 is the bottom 1x25 female header.

The board also contains dual row male headers to choose power options, and directly connect suitable pins from the STM32 to the Raspberry Pi.

All GPIO is 3.3 Volt logic, but a lot of the STM32 GPIO pins are 5 Volt tolerant. Look for the red 'no' or the green 'yes' in the '5V' column of the table below to see if a particular pin is 5 volt tolerant or not.

X0 Header (RPI)

All of the Raspberry Pi GPIO pins are broken out to this header (except for GPIO16, see BOOT1 Header).

For a detailed description of these pins, see: http://elinux.org/RPi_BCM2835_GPIOs

Pin Type 5V Pull Default Remap
TX.14RPINOlowGPIO14USART_TXD
RX.15RPINOlowGPIO15USART_RXD
SCL.3RPINOhighGPIO3I2C1_SCL
SDA.2RPINOhighGPIO2I2C1_SDA
MOSI.10RPINOlowGPIO10SPI0_MOSI
MISO.9RPINOlowGPIO9SPI0_MISO
SCK.11RPINOlowGPIO11SPI0_SCK
CE0.8RPINOhighGPIO8SPI0_CE0
CE1.7RPINOhighGPIO7SPI0_CE1
GPIO4RPINOhighGPIO4GPCLK0
GPIO17RPINOlowGPIO17GPIO_GEN0
GPIO18RPINOlowGPIO18GPIO_GEN1
GPIO27RPINOlowGPIO27GPIO_GEN2
GPIO22RPINOlowGPIO22GPIO_GEN3
GPIO23RPINOlowGPIO23GPIO_GEN4
GPIO24RPINOlowGPIO24GPIO_GEN5
GPIO25RPINOlowGPIO25GPIO_GEN6
GPIO5RPINOhighGPIO5CAM_CLK
GPIO6RPINOhighGPIO6LAN_RUN
GPIO12RPINOlowGPIO12PWM0
GPIO19RPINOlowGPIO19-
GPIO20RPINOlowGPIO20-
GPIO21RPINOlowGPIO21GPCLK1
GPIO26RPINOlowGPIO26-
 

X0 Header (STM32)

Part of the STM32 GPIO pins are broken out on this header. Some of them are probably connected to Raspberry Pi pins to program the STM32 (see CONN header).

Don't put 5V on STM32 pins that are also connected to the Raspberry Pi, even though they're 5V tolerant. The corresponding Raspberry Pi pins aren't so tolerant and you'll break stuff.

Pin Type 5V Startup Default Remap
PA10I/OYESPA10USART1_RX/TIM1_CH3 
PA9I/OYESPA9USART1_TX/TIM1_CH2 
PB8I/OYESPB8TIM4_CH3/SDIO_D4I2C1_SCL/CAN_RX
PB9I/OYESPB9TIM4_CH4/SDIO_D5I2C1_SDA/CAN_TX
PB15I/OYESPB15SPI2_MOSI/I2S2_SD/TIM1_CH3N 
PB14I/OYESPB14SPI2_MISO/TIM1_CH2N/USART3_RTS 
PB13I/OYESPB13SPI2_SCK/I2S2_CK/USART3_CTS/TIM1_CH1N 
PB12I/OYESPB12SPI2_NSS/I2S2_WS/I2C2_SMBA/USART3_CK/TIM1_BKIN 
BOOT0INOBOOT0  
NRSTI/ONONRST  
PB11I/OYESPB11I2C2_SDA/USART3_RXTIM2_CH4
PB10I/OYESPB10I2C2_SCL/USART3_TXTIM2_CH3
PB1I/ONOPB1ADC12_IN9/TIM3_CH4/TIM8_CH3NTIM1_CH3N
PB0I/ONOPB0ADC12_IN8/TIM3_CH3/TIM8_CH2NTIM1_CH2N
PA7I/ONOPA7SPI1_MOSI/TIM8_CH1N/ADC12_IN7/TIM3_CH2TIM1_CH1N
PA6I/ONOPA6SPI1_MISO/TIM8_BKIN/ADC12_IN6/TIM3_CH1TIM1_BKIN
PA5I/ONOPA5SPI1_SCK/DAC_OUT2/ADC12_IN5 
PA4I/ONOPA4SPI1_NSS/USART2_CK/DAC_OUT1/ADC12_IN4 
PA3I/ONOPA3USART2_RX/TIM5_CH4/ADC123_IN3/TIM2_CH4 
PA2I/ONOPA2USART2_TX/TIM5_CH3/ADC123_IN2/TIM2_CH3 
PA1I/ONOPA1USART2_RTS/ADC123_IN1/TIM5_CH2/TIM2_CH2 
PA0I/ONOPA0WKUP/USART2_CTS/ADC123_IN0/TIM2_CH1_ETR/TIM5_CH1/TIM8_ETR 
VINPWRYES-External (PWR)5V from RPI or USB
VCCPWRNOVCC (3V3)  
GNDPWRNOGND (VSS)  
 

CONN Header

The CONN header is a 1:1 duplicate of the first 2x10 pins of header X0.

On this header, you can make direct connections from the STM32 to the RPI (USART, I2C, SPI, BOOT0, RST) using jumpers.

To program the STM32 using the bootloader, put jumpers on PA10/GPIO14, PA9/GPIO15, BOOT0/GPIO7(CE1) and NRST/GPIO4. In other words, at least 4 jumpers: 2 jumpers on the far left, and 2 jumpers on the far right of the CONN header.

After programming is done you can do with the pins as you please (see X0 header). It might make sense to just leave the jumpers on there though. You can use the UART connection to communicate between the STM32 and the Raspberry Pi.

You'll probably want to always keep BOOT0/GPIO7 and NRST/GPIO4 pins jumpered too, because they're not extremely useful for other things. They're available on the X0 header if you do need them.

For faster communication than UART, jumper the appropriate pins and use the STM32 as an I2C or SPI slave (the Raspberry Pi can only be master).

Pin Type 5V Function With Jumper Info
A10-IO14I/ONOUARTConnects STM32 RX (PA10) to RPI TX (GPIO14)jumper for bootloader
A9-IO15I/ONOUARTConnects STM32 TX (PA9) to RPI RX (GPIO15)jumper for bootloader
B8-IO3I/ONOI2CConnects STM32 SCL (PB8) to RPI SCL (GPIO3) 
B9-IO2I/ONOI2CConnects STM32 SDA (PB8) to RPI SDA (GPIO2) 
B15-IO10I/ONOSPIConnects STM32 MOSI (PB15) to RPI MOSI (GPIO10) 
B14-IO9I/ONOSPIConnects STM32 MISO (PB14) to RPI MISO (GPIO9) 
B13-IO11I/ONOSPIConnects STM32 SCK (PB13) to RPI SCK (GPIO11) 
B12-IO8I/ONOSPIConnects STM32 NSS (PB12) to RPI CE0 (GPIO8) 
BT0-IO7I/ONOBOOT0Connects STM32 BOOT0 (BOOT0) to RPI CE1 (GPIO7)jumper for bootloader
RST-IO4I/ONONRSTConnects STM32 NRST (NRST) to RPI GPIO4jumper for bootloader
 

BOOT1 Header

Both PB2/BOOT1 (STM32) and GPIO16 (RPI) are broken out to this header.

Optionally solder a 1x2 male pinheader here and install a jumper to upload firmware to the STM32 SRAM section (or pull BOOT1 high some other way). The default (without a jumper) is to upload to STM32 Flash memory.

One reason to upload your firmware to SRAM might be to save wear on the Flash memory. The Flash memory is rated for anywhere between 10 kilocycles to 100 kilocycles rewrites. If you think about that for a moment, you may come to the conclusion it's not worth the hassle. It's here if you need it.

PB2/BOOT1 is pulled low with a 10K resistor.

Pin Type 5V Startup Default Remap
PB2I/OYESPB2/BOOT1  
GPIO16RPINOlowGPIO16STATUS_LED_N
 

VIN Header

Put a jumper on either RPI/VIN or USB/VIN, depending on where you want the 5V power from. If you supply power yourself to VIN (max. 5V), leave off the RPI or USB jumper connecting to VIN (seriously!). If you're backpowering 5V to the Raspberry Pi through VIN or otherwise, please take the necessary precautions.

To use the ARMinARM board on the Raspberry Pi, you'll want a jumper connecting the RPI to the VIN pin. To use the board standalone (powered from USB), move the jumper to the USB/VIN pin combination.

Pin Type 5V Startup Default With Jumper
RPIPWRYES-Power from RPI (5V)5V from RPI
VINPWRYES-External (PWR)5V from RPI or USB
USBPWRYES-Power from USB (5V)5V from USB
 

PWR Header

More options to decide how you want to power the board. You'll probably want all 3 jumpers on here (IN/VIN, OUT/VCC, BAT/VCC).

If you're not using a battery, connecting VBAT to VCC is highly recommended. It keeps the RTC running and remembers the content of backup registers.

You can bypass the onboard 3.3V voltage regulator completely by leaving off the IN/VIN and OUT/VCC jumpers (in that case, power VCC with your own 3.3V).

Never connect more than 5 volt to the input of the voltage regulator!

Pin Type 5V Startup Default -
INPWRYES-Connects Voltage Regulator in to VINMax. 5 Volt
OUTPWRNO-Connects Voltage Regulator out to VCC (3V3) 
VBATPWRNO-Connect to VCC 
 

OPT Header

The OPT header contains the pins that define the ARMinARM board.

Jumper PC13 to the USB Disconnect circuitry. You'll need it if you want to program the STM32 as a USB device.

Jumper the USR button to PA0. The USR button is also connected to the BOOT0 pin, and is therefore pulled down to GND. To use PA0 as an analog input (and read values other than 0) you'll want to disconnect it from the USR button.

Note that when you disconnect PA0 from the USR button, it is still possible to use the buttons USR and RST to put the STM32 into bootloader mode.

Jumper the LED pin to PB0 to use the onboard LED. PB0 is a PWM capable pin. If you want to use PB0 for anything else and the LED annoys you, disconnect it.

Pins Type 5V Startup With Jumper -
DSC-PC13I/ONO-Connects DISCONNECT circuitry to PC13 
USR-PA0I/ONO-Connects USR button to PA0 
LED-PB0I/ONO-Connects onboard red LED to PB0 
 

XTAL Header (32.768KHz oscillator)

Footprint to solder a 32.768KHz crystal. Connected to PC14 and PC15 on the STM32. A crystal here does a better job keeping time and date than the internal oscillator.

If you want to use these pins for anything else, it's just a 1x2 pinheader footprint that aligns to the 0.1" grid. You can break them out to a prototyping board.

Be careful though. They can't drive loads, so you can't blink LEDs with them.

Pin Type 5V Startup Default Remap
PC14I/ONOPC14OSC32_IN 
PC15I/ONOPC15OSC32_OUT 
 

X1 Header (STM32)

(Most of) the rest of the STM32 GPIO pins are broken out on this header.

Pin Type 5V Startup Default Remap
PC6I/OYESPC6I2S2_MCK/TIM8_CH1/SDIO_D6TIM3_CH1
PC7I/OYESPC7I2S3_MCK/TIM8_CH2/SDIO_D7TIM3_CH2
PC8I/OYESPC8TIM8_CH3/SDIO_D0TIM3_CH3
PC9I/OYESPC9TIM8_CH4/SDIO_D1TIM3_CH4
PA8I/OYESPA8USART1_CK/TIM1_CH1/MCO 
PA13I/OYESJTMS-SWDIO PA13
PA14I/OYESJTCK-SWCLK PA14
PA15I/OYESJTDISPI3_NSS/I2S3_WSTIM2_CH1_ETR/PA15/SPI1_NSS
PC10I/OYESPC10UART4_TX/SDIO_D2USART3_TX
PC11I/OYESPC11UART4_RX/SDIO_D3USART3_RX
PC12I/OYESPC12UART5_TX/SDIO_CKUSART3_CK
PD2I/OYESPD2TIM3_ETR/UART5_RX/SDIO_CMD 
PB3I/OYESJTDOSPI3_SCK/I2S3_CKPB3/TRACESWO/TIM2_CH2/SPI1_SCK
PB4I/OYESNJTRSTSPI3_MISOPB4/TIM3_CH1/SPI1_MISO
PB5I/ONOPB5I2C1_SMBA/SPI3_MOSI/I2S3_SDTIM3_CH2/SPI1_MOSI
PB6I/OYESPB6I2C1_SCL/TIM4_CH1USART1_TX
PB7I/OYESPB7I2C1_SDA/FSMC_NADV/TIM4_CH2USART1_RX
PC0I/ONOPC0ADC123_IN10 
PC1I/ONOPC1ADC123_IN11 
PC2I/ONOPC2ADC123_IN12 
PC3I/ONOPC3ADC123_IN13 
PC4I/ONOPC4ADC12_IN14 
PC5I/ONOPC5ADC12_IN15 
VCCPWRNOVCC (3V3)  
GNDPWRNOGND (VSS)  
 

USB Header

The USB header contains 'everything USB'. Mainly to break out pins PA11 and PA12, the D+ and D- (USB data) pins of the STM32. They're here if you need them for anything else (and having PC13, VUSB and a GND there is of course handy as well).

In emergencies, another STM32 GPIO than PC13 can be routed to the DSC (USB Disconnect circuitry) pin here if you want to make the ARMinARM board hardware compatible with other boards (without recompiling their firmware). Or other unforeseen situations you might encounter. It's here if you're looking for it.

Pin Type 5V Startup Default Remap
DSCI/ONO-DISCONNECT circuitry 
PC13I/ONOPC13TAMPER-RTCUSB Disconnect
PA11I/OYESPA11USART1_CTS/USBDM/CAN_RX/TIM1_CH4 
PA12I/OYESPA12USART1_RTS/USBDP/CAN_TX/TIM1_ETR 
VUSBPWRYESVUSB (5V)  
GNDPWRNOGND (VSS)  
 

JTAG Header

Most of the pins on this header are also on the X1 header right above it. They're pins used for SWD or JTAG in all its incarnations and pin standards. Solder male pins on here and you can easily probe them from the outside without removing any addon boards (caps).

Note that BAT is actually VCC (3.3V) if you have the BAT/VCC jumper on the PWR header. If you want to use a battery, you want that jumper removed. You can connect the battery either on this pin now, or on the BAT pin on the PWR header.

In situations where the RST button is hard to reach, you can temporarily short the 2 right-most pins of this header to reset the board. They're NRST and GND. Think 'conductive material'. Like a paperclip, screwdriver, keys etc.

Pin Type 5V Startup Default Remap
PA13I/OYESJTMS-SWDIO PA13
PA14I/OYESJTCK-SWCLK PA14
PA15I/OYESJTDISPI3_NSS/I2S3_WSTIM2_CH1_ETR/PA15/SPI1_NSS
PB3I/OYESJTDOSPI3_SCK/I2S3_CKPB3/TRACESWO/TIM2_CH2/SPI1_SCK
PB4I/OYESNJTRSTSPI3_MISOPB4/TIM3_CH1/SPI1_MISO
VBATPWRNO-Connect to VCC 
NRSTI/ONONRST  
GNDPWRNOGND (VSS)