Sensor Board V2¶
Overview¶
The Auxspace e.V. sensor_board_v2 PCB is built around the idea to support interchangeable hardware in a stackable rocket avionics system. This version contains a Raspberry Pi Pico with the RP2040 dual core Arm Cortex-M0+ or a Raspberry Pi Pico 2 with the RP2350 dual core RISC-V Hazard3.
Hardware¶
Raspberry Pi Pico variant:¶
Dual core Arm Cortex-M0+ processor running up to 133MHz
264KB on-chip SRAM
2MB on-board QSPI flash with XIP capabilities
26 GPIO pins
3 Analog inputs
2 UART peripherals
2 SPI controllers
2 I2C controllers
16 PWM channels
USB 1.1 controller (host/device)
8 Programmable I/O (PIO) for custom peripherals
On-board LED
1 Watchdog timer peripheral
Infineon CYW43439 2.4 GHz Wi-Fi chip (Pico W only)
Raspberry Pi Pico 2 variant:¶
Dual Cortex-M33 or Hazard3 processors at up to 150MHz
520KB of SRAM, and 4MB of on-board flash memory
USB 1.1 with device and host support
Low-power sleep and dormant modes
Drag-and-drop programming using mass storage over USB
26 multi-function GPIO pins including 3 that can be used for ADC
2 SPI, 2 I2C, 2 UART, 3 12-bit 500ksps Analogue to Digital - Converter (ADC), 24 controllable PWM channels
2 Timer with 4 alarms, 1 AON Timer
Temperature sensor
3 Programmable IO (PIO) blocks, 12 state machines total for custom peripheral support
Infineon CYW43439 2.4 GHz Wi-Fi chip (Pico 2W only)
Flexible, user-programmable high-speed IO
Can emulate interfaces such as SD Card and VGA
Supported Features¶
The sensor_board_v2 board supports the hardware features listed below.
- on-chip / on-board
- Feature integrated in the SoC / present on the board.
- 2 / 2
-
Number of instances that are enabled / disabled.
Click on the label to see the first instance of this feature in the board/SoC DTS files. -
vnd,foo -
Compatible string for the Devicetree binding matching the feature.
Click on the link to view the binding documentation.
sensor_board_v2/rp2040 target¶
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-M0+ CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
Raspberry Pi Pico clock controller node1 |
|
on-chip |
|
||
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
|
|
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
|
|
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
|
|
Counter |
on-chip |
Raspberry Pi Pico timer1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port1 |
|
|
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
ARMv6-M NVIC (Nested Vectored Interrupt Controller) controller1 |
|
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico PIO2 |
|
on-chip |
Raspberry Pi Pico SIO1 |
|
|
MTD |
on-chip |
Flash node1 |
|
on-chip |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
|
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RTC |
on-chip |
Raspberry Pi Pico RTC1 |
|
Sensors |
on-board |
STMicroelectronics LSM6DSO32 6-axis IMU (Inertial Measurement Unit) sensor accessed through I2C bus1 |
|
on-board |
TE Connectivity MS5607 digital pressure and temperature sensor1 |
|
|
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
|
Serial controller |
on-chip |
Raspberry Pi Pico UART2 |
|
SPI |
on-chip |
Raspberry Pi Pico SPI2 |
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
ARMv6-M System Tick1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
|
sensor_board_v2/rp2040/w target¶
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-M0+ CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
Raspberry Pi Pico clock controller node1 |
|
on-chip |
|
||
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
|
|
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
|
|
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
|
|
Counter |
on-chip |
Raspberry Pi Pico timer1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port1 |
|
|
on-board |
Infineon CYW43 GPIO controller1 |
|
|
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
ARMv6-M NVIC (Nested Vectored Interrupt Controller) controller1 |
|
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
|
|
on-chip |
Raspberry Pi Pico SIO1 |
|
|
MTD |
on-chip |
Flash node1 |
|
on-chip |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
|
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RTC |
on-chip |
Raspberry Pi Pico RTC1 |
|
Sensors |
on-board |
STMicroelectronics LSM6DSO32 6-axis IMU (Inertial Measurement Unit) sensor accessed through I2C bus1 |
|
on-board |
TE Connectivity MS5607 digital pressure and temperature sensor1 |
|
|
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
|
Serial controller |
on-chip |
Raspberry Pi Pico UART2 |
|
SPI |
on-chip |
Raspberry Pi Pico SPI2 |
|
on-board |
Raspberry Pi Pico SPI via PIO1 |
|
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
ARMv6-M System Tick1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
|
Wi-Fi |
on-board |
AIROC Wi-Fi Connectivity over SPI1 |
|
sensor_board_v2/rp2350a/hazard3 target¶
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
Generic RISC-V CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
|
|
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
|
|
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
|
|
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
|
|
on-chip |
Raspberry Pi Pico clock controller node1 |
|
|
Counter |
on-chip |
Raspberry Pi Pico timer2 |
|
Cryptographic accelerator |
on-chip |
Raspberry Pi Pico SHA-256 accelerator1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port2 |
|
|
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
Hazard3 interrupt controller1 |
|
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico PIO3 |
|
on-chip |
Raspberry Pi Pico SIO1 |
|
|
MTD |
on-chip |
Flash node1 |
|
on-board |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
|
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RNG |
on-chip |
Raspberry Pi Pico RNG/Entropy1 |
|
Sensors |
on-board |
STMicroelectronics LSM6DSO32 6-axis IMU (Inertial Measurement Unit) sensor accessed through I2C bus1 |
|
on-board |
TE Connectivity MS5607 digital pressure and temperature sensor1 |
|
|
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
|
Serial controller |
on-chip |
Raspberry Pi Pico UART2 |
|
SPI |
on-chip |
Raspberry Pi Pico SPI2 |
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
RISC-V Machine Timer1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
|
sensor_board_v2/rp2350a/m33 target¶
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-M33 CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
|
|
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
|
|
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
|
|
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
|
|
on-chip |
Raspberry Pi Pico clock controller node1 |
|
|
Counter |
on-chip |
Raspberry Pi Pico timer2 |
|
Cryptographic accelerator |
on-chip |
Raspberry Pi Pico SHA-256 accelerator1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port2 |
|
|
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
Raspberry Pi Pico PIO3 |
|
on-chip |
Raspberry Pi Pico SIO1 |
|
|
MTD |
on-chip |
Flash node1 |
|
on-board |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
|
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RNG |
on-chip |
Raspberry Pi Pico RNG/Entropy1 |
|
Sensors |
on-board |
STMicroelectronics LSM6DSO32 6-axis IMU (Inertial Measurement Unit) sensor accessed through I2C bus1 |
|
on-board |
TE Connectivity MS5607 digital pressure and temperature sensor1 |
|
|
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
|
Serial controller |
on-chip |
Raspberry Pi Pico UART2 |
|
SPI |
on-chip |
Raspberry Pi Pico SPI2 |
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
ARMv8-M System Tick1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
|
sensor_board_v2/rp2350a/m33/w target¶
Type |
Location |
Description |
Compatible |
|---|---|---|---|
CPU |
on-chip |
ARM Cortex-M33 CPU2 |
|
ADC |
on-chip |
Raspberry Pi Pico ADC1 |
|
Clock control |
on-chip |
|
|
on-chip |
The representation of Raspberry Pi Pico’s PLL2 |
|
|
on-chip |
The representation of Raspberry Pi Pico ring oscillator1 |
|
|
on-chip |
The representation of Raspberry Pi Pico external oscillator1 |
|
|
on-chip |
Raspberry Pi Pico clock controller node1 |
|
|
Counter |
on-chip |
Raspberry Pi Pico timer2 |
|
Cryptographic accelerator |
on-chip |
Raspberry Pi Pico SHA-256 accelerator1 |
|
DMA |
on-chip |
Raspberry Pi Pico DMA1 |
|
Flash controller |
on-chip |
Raspberry Pi Pico flash controller1 |
|
GPIO & Headers |
on-chip |
Raspberry Pi Pico GPIO1 |
|
on-chip |
Raspberry Pi Pico GPIO Port2 |
|
|
on-board |
Infineon CYW43 GPIO controller1 |
|
|
I2C |
on-chip |
Raspberry Pi Pico I2C2 |
|
Interrupt controller |
on-chip |
ARMv8-M NVIC (Nested Vectored Interrupt Controller)1 |
|
Mailbox |
on-chip |
Raspberry Pi Pico interprocessor mailbox1 |
|
Miscellaneous |
on-chip |
|
|
on-chip |
Raspberry Pi Pico SIO1 |
|
|
MTD |
on-chip |
Flash node1 |
|
on-board |
Fixed partitions of a flash (or other non-volatile storage) memory1 |
|
|
Pin control |
on-chip |
Raspberry Pi Pico Pin Controller1 |
|
PWM |
on-chip |
Raspberry Pi Pico PWM1 |
|
Regulator |
on-chip |
Raspberry Pi Pico core supply regurator1 |
|
Reset controller |
on-chip |
Raspberry Pi Pico Reset Controller1 |
|
RNG |
on-chip |
Raspberry Pi Pico RNG/Entropy1 |
|
Sensors |
on-board |
STMicroelectronics LSM6DSO32 6-axis IMU (Inertial Measurement Unit) sensor accessed through I2C bus1 |
|
on-board |
TE Connectivity MS5607 digital pressure and temperature sensor1 |
|
|
on-chip |
Raspberry Pi Pico family temperature sensor node1 |
|
|
Serial controller |
on-chip |
Raspberry Pi Pico UART2 |
|
SPI |
on-chip |
Raspberry Pi Pico SPI2 |
|
on-board |
Raspberry Pi Pico SPI via PIO1 |
|
|
SRAM |
on-chip |
Generic on-chip SRAM1 |
|
Timer |
on-chip |
ARMv8-M System Tick1 |
|
USB |
on-chip |
Raspberry Pi Pico USB Device Controller1 |
|
Watchdog |
on-chip |
Raspberry Pi Pico Watchdog1 |
|
Wi-Fi |
on-board |
AIROC Wi-Fi Connectivity over SPI1 |
|
Connections and IOs¶
The connectors remain undocumented for the time being, since the PCB is under active development.
Wireless connectivity (_w variants)¶
The _w board variants are fitted with the Infineon CYW43439 combo radio (as
on the Raspberry Pi Pico W / Pico 2 W). It hangs off a PIO-SPI (“gSPI”) bus on
GPIO 23/24/25/29, defined in sensor_board_v2_wifi.dtsi.
Wi-Fi (supported)¶
Wi-Fi works through the upstream infineon,airoc-wifi driver. Enable it with
CONFIG_WIFI=y / CONFIG_WIFI_AIROC=y plus the module selection
(CONFIG_CYW43439=y, CONFIG_CYW43439_MURATA_1YN=y).
Bluetooth / BLE (NOT supported)¶
Warning
There is currently no way to enable Bluetooth on the _w boards through
configuration alone.
The CYW43439’s Bluetooth shares the same PIO-SPI bus as Wi-Fi, and
Zephyr has no HCI transport driver for CYW43439 BT over that shared bus
(verified against the Zephyr 4.4 tree).
Why config-only attempts fail:
The only AIROC Bluetooth HCI driver in Zephyr is
hci_uart_infineon.c(compatible = "infineon,bt-hci-uart"), which requires a dedicated BT UART (see thecy8cproto_062_4343wboard). Every CYW43439 BT Kconfig option (CONFIG_CYW43439, …) gates onBT_H4(UART). The Pico W does not route BT out on a UART; its BT is multiplexed on the Wi-Fi PIO SPI bus.The Zephyr 4.4 migration guide folded the old combo-chip compatible into the UART driver:
infineon,cyw43xxx-bt-hci=>infineon,bt-hci-uart,CONFIG_BT_CYW43XX=>CONFIG_BT_HCI_UART_INFINEON.Upstream
rpi_pico_rp2040_w.dtsdeliberately wires Wi-Fi only — no BT node, nochosen { zephyr,bt-hci }.
Symptom of trying anyway: declaring a bt-hci / infineon,airoc-bt-hci node
plus chosen { zephyr,bt-hci = ... } makes the BT host DEVICE_DT_GET() the
node, but no driver has a matching DT_DRV_COMPAT, so the link fails with
undefined reference to __device_dts_ord_<N> (the node number shifts as the DT
is restructured, but the cause is always “no driver behind the compatible”).
The only code that drives CYW43439 BT over the shared bus is the Pico SDK’s
BTStack transport (hal_rpi_pico/.../pico_cyw43_driver), which is a separate
host stack and is not wired into Zephyr’s Bluetooth subsystem.
Enabling BLE here is therefore a driver-development task (port the BTStack
cyw43 transport to a Zephyr bt-hci driver with Wi-Fi/BT bus arbitration), not
a configuration task.
Programming and Debugging¶
The sensor_board_v2 board supports the runners and associated west commands listed below.
| flash | debug | attach | rtt | debugserver | reset | |
|---|---|---|---|---|---|---|
| blackmagicprobe | ✅ | ✅ | ✅ | |||
| jlink | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| openocd | ✅ (default) | ✅ (default) | ✅ | ✅ | ✅ | |
| probe-rs | ✅ | ✅ | ✅ | ✅ | ||
| pyocd | ✅ | ✅ | ✅ | ✅ | ✅ | |
| uf2 | ✅ |
Warning
If no µSD-Card is inserted, the board will have trouble booting, since the SPI-SDHC driver has no way to detect card presence without a card-detect-pin!
Building¶
RP2040¶
The aurora software for the RP2040 is built with sysbuild since it uses the MCUBoot boot loader:
west build -p -b sensor_board_v2/rp2040 --sysbuild sensor_board
RP2350¶
The aurora software for the RP2350 is built without sysbuild at the moment.
west build -p -b sensor_board_v2/rp2350a/hazard3 sensor_board
Flashing¶
RP2040¶
Flashing the MCUBoot bootloader can not be done with west flash since it does not
install both binary files in the correct location in the flash. Instead the software
can be flashed with picotool allowing flashing via the USB interface. For this
the board needs to be put into bootloader mode by holding the BOOTSEL button while
plugging the board into the computer. Then the following commands can be used to flash the bootloader and the application:
# Flash the bootloader
picotool load build/mcuboot/zephyr/zephyr.uf2
# Flash the application
picotool load build/sensor_board/zephyr/zephyr.signed.bin --offset 0x10010000
# Reboot the board
picotool reboot
Note
picotool can be obtained either by building it from source following the
instructions on the picotool repository or by installing it as a prebuilt binary from the release page of the pico-sdk-tools repository.
RP2350¶
Flashing the RP2350 can be done by copying the generated zephyr.uf2 located in the
build/sensor_board/zephyr directory to the board’s USB mass storage device. The board needs to be put into bootloader mode by holding the BOOTSEL button while plugging the board into the computer.