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/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 |
|
Connections and IOs¶
The connectors remain undocumented for the time being, since the PCB is under active development.
Programming and Debugging¶
The sensor_board_v2 board supports the runners and associated west commands listed below.
| flash | debug | attach | reset | rtt | debugserver | |
|---|---|---|---|---|---|---|
| blackmagicprobe | ✅ | ✅ | ✅ | |||
| jlink | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| openocd | ✅ (default) | ✅ (default) | ✅ | ✅ | ✅ | |
| 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.