This page documents the GPIO pin assignments for both NanoVNA-H (STM32F072) and NanoVNA-H4 (STM32F303) hardware platforms.
| Pin | F072 Function | F303 Function | Mode | Notes |
|---|
| PA0 | BUTTON (unused) | BUTTON | Input | Not used in firmware |
| PA1 | LEVER1 | LEVER1 | Input | Jog wheel encoder A |
| PA2 | PUSH | PUSH | Input | Jog wheel push button |
| PA3 | LEVER2 | LEVER2 | Input | Jog wheel encoder B |
| PA4 | - | VBUS | Input | USB VBUS detect (H4) |
| PA5 | DAC2 | DAC2 | Analog | LCD backlight control |
| PA6 | XP | XP | Analog | Touch panel X+ |
| PA7 | YP | YP | Analog | Touch panel Y+ |
| PA8 | MCO | MCO | AF0 | Master clock output |
| PA9 | USART1_TX | USART1_TX | AF1/AF7 | Serial console TX |
| PA10 | USART1_RX | USART1_RX | AF1/AF7 | Serial console RX |
| PA11 | USB_DM | USB_DM | AF14 | USB D- |
| PA12 | USB_DP | USB_DP | AF14 | USB D+ |
| PA13 | SWDIO | SWDIO | AF0 | Debug interface |
| PA14 | SWCLK | SWCLK | AF0 | Debug interface |
| PA15 | LCD_RESET | LCD_RESET | Output | LCD reset signal |
| Pin | F072 Function | F303 Function | Mode | Notes |
|---|
| PB0 | XN | XN | Analog | Touch panel X- |
| PB1 | YN | YN | Analog | Touch panel Y- |
| PB2 | SD_GP1 | SD_GP1 | Output | SD card GPIO |
| PB3 | SPI_SCLK | SPI_SCLK | AF0/AF5 | SPI clock |
| PB4 | SPI_MISO | SPI_MISO | AF0/AF5 | SPI data in |
| PB5 | SPI_MOSI | SPI_MOSI | AF0/AF5 | SPI data out |
| PB6 | LCD_CS | LCD_CS | Output | LCD chip select |
| PB7 | LCD_CD | LCD_CD | Output | LCD data/command |
| PB8 | I2C1_SCL | I2C1_SCL | AF1/AF4 | I2C clock (Si5351) |
| PB9 | I2C1_SDA | I2C1_SDA | AF1/AF4 | I2C data (Si5351) |
| PB10 | SD_GP2 | SD_GP2 | Output | SD card GPIO |
| PB11 | SD_CS | SD_CS | Output | SD card chip select |
| PB12 | I2S2_WCLK | I2S2_WCLK | AF0/AF5 | I2S word clock |
| PB13 | I2S2_BCLK | I2S2_BCLK | AF0/AF5 | I2S bit clock |
| PB14 | - | I2S2_MISO | AF0/AF5 | I2S data in (H4) |
| PB15 | I2S2_MOSI | I2S2_MOSI | AF0/AF5 | I2S data out |
| Pin | F072 Function | F303 Function | Mode | Notes |
|---|
| PC0-12 | - | - | Input | Unused |
| PC13 | LED | LED | Output | Status LED |
| PC14 | OSC32_IN | OSC32_IN | Input | 32.768 kHz crystal |
| PC15 | OSC32_OUT | OSC32_OUT | Input | 32.768 kHz crystal |
| Pin | Function | Mode | Notes |
|---|
| PF0 | OSC_IN | Input | 8 MHz crystal input |
| PF1 | OSC_OUT | Output | 8 MHz crystal output |
Si5351 Address: 0x60 (7-bit)
TLV320AIC3204 Address: 0x18 (7-bit)
WCLK -> PB12 (Word select / LRCLK)
MOSI -> PB15 (Data to codec)
MISO -> PB14 (Data from codec, H4 only)
VBUS -> PA4 (H4 detection)
VID: 0x0483 (STMicroelectronics)
PID: 0x5740 (Virtual COM Port)
Input Mode: Pull-down resistors enabled
X+ -> PA6 (ADC channel 6)
Y+ -> PA7 (ADC channel 7)
| Oscillator | Frequency | Pins | Notes |
|---|
| HSE | 8 MHz | PF0/PF1 | Main system clock source |
| LSE | 32.768 kHz | PC14/PC15 | RTC clock (optional) |
| Target | SYSCLK | HCLK | APB |
|---|
| F072 | 48 MHz | 48 MHz | 48 MHz |
| F303 | 72 MHz | 72 MHz | 72 MHz |
PA8 can output a clock signal (used for audio codec reference):
#define AUDIO_CLOCK_REF 8000000U // 8 MHz to codec
| DMA Channel | Function | Source/Dest |
|---|
| DMA1_CH4 | I2S RX | Audio samples from codec |
| DMA1_CH5 | SPI TX | Display data (if DMA enabled) |
| AF | Function | Pins |
|---|
| AF0 | MCO, SPI1, I2S2, SWDIO | Multiple |
| AF1 | USART1, I2C1 | PA9/PA10, PB8/PB9 |
| AF14 | USB | PA11/PA12 |
| AF | Function | Pins |
|---|
| AF0 | MCO, SWDIO | PA8, PA13/PA14 |
| AF4 | I2C1 | PB8/PB9 |
| AF5 | SPI1, I2S2 | PB3-5, PB12-15 |
| AF7 | USART1 | PA9/PA10 |
| AF14 | USB | PA11/PA12 |
Use with OpenOCD + CMSIS-DAP adapter:
openocd -f NanoVNA_DAP.cfg
To enter DFU bootloader:
- Hardware method: Short BOOT0 to VCC during power-on
- Software method: Menu
CONFIG > EXPERT SETTINGS > DFU
- Shell command:
reset dfu
DFU uses USB in bootloader mode (built into STM32 ROM).
Pin definitions are located in:
- F072 pins:
NANOVNA_STM32_F072/board.h lines 48-88
- F303 pins:
NANOVNA_STM32_F303/board.h lines 48-90
- ADC channels:
hardware.h lines 31-36