Waveshare RP2040-Zero

The Waveshare RP2040-Zero is a tiny development board based on the Raspberry Pi RP2040 microcontroller.

Interfaces

Interface Hardware Supported TinyGo Support
GPIO YES YES
UART YES YES
SPI YES YES
I2C YES YES
ADC YES YES
PWM YES YES
USBDevice YES YES

Pins

Pin Hardware pin Alternative names I2C PWM
D0 GPIO0 GP0, I2C0_SDA_PIN, UART0_TX_PIN, UART_TX_PIN I2C0 (SDA) PWM0 (channel A)
D1 GPIO1 GP1, I2C0_SCL_PIN, UART0_RX_PIN, UART_RX_PIN I2C0 (SCL) PWM0 (channel B)
D2 GPIO2 GP2, I2C1_SDA_PIN I2C1 (SDA) PWM1 (channel A)
D3 GPIO3 GP3, I2C1_SCL_PIN, SPI0_SDO_PIN I2C1 (SCL) PWM1 (channel B)
D4 GPIO4 GP4, SPI0_SDI_PIN I2C0 (SDA) PWM2 (channel A)
D5 GPIO5 GP5 I2C0 (SCL) PWM2 (channel B)
D6 GPIO6 GP6, SPI0_SCK_PIN I2C1 (SDA) PWM3 (channel A)
D7 GPIO7 GP7 I2C1 (SCL) PWM3 (channel B)
D8 GPIO8 GP8, UART1_TX_PIN I2C0 (SDA) PWM4 (channel A)
D9 GPIO9 GP9, UART1_RX_PIN I2C0 (SCL) PWM4 (channel B)
D10 GPIO10 GP10, SPI1_SCK_PIN I2C1 (SDA) PWM5 (channel A)
D11 GPIO11 GP11, SPI1_SDO_PIN I2C1 (SCL) PWM5 (channel B)
D12 GPIO12 GP12, SPI1_SDI_PIN I2C0 (SDA) PWM6 (channel A)
D13 GPIO13 GP13 I2C0 (SCL) PWM6 (channel B)
D14 GPIO14 GP14 I2C1 (SDA) PWM7 (channel A)
D15 GPIO15 GP15 I2C1 (SCL) PWM7 (channel B)
D16 GPIO16 GP16, NEOPIXEL, WS2812 I2C0 (SDA) PWM0 (channel A)
D17 GPIO17 GP17 I2C0 (SCL) PWM0 (channel B)
D18 GPIO18 GP18 I2C1 (SDA) PWM1 (channel A)
D19 GPIO19 GP19 I2C1 (SCL) PWM1 (channel B)
D20 GPIO20 GP20 I2C0 (SDA) PWM2 (channel A)
D21 GPIO21 GP21 I2C0 (SCL) PWM2 (channel B)
D22 GPIO22 GP22 PWM3 (channel A)
D23 GPIO23 GP23 PWM3 (channel B)
D24 GPIO24 GP24 PWM4 (channel A)
D25 GPIO25 GP25 PWM4 (channel B)
D26 GPIO26 GP26, A0, ADC0 I2C1 (SDA) PWM5 (channel A)
D27 GPIO27 GP27, A1, ADC1 I2C1 (SCL) PWM5 (channel B)
D28 GPIO28 GP28, A2, ADC2 PWM6 (channel A)
D29 GPIO29 GP29, A3, ADC3 PWM6 (channel B)

Machine Package Docs

Documentation for the machine package for the Waveshare RP2040-Zero

Flashing

UF2

The Waveshare RP2040-Zero comes with the UF2 bootloader already installed.

CLI Flashing

  • Flash your TinyGo program to the board using this command:

    tinygo flash -target=waveshare-rp2040-zero [PATH TO YOUR PROGRAM]
    
  • The Waveshare RP2040-Zero board should restart and then begin running your program.

Troubleshooting

Any troubleshooting tips go here.

Notes

You can use the USB port to the Waveshare RP2040-Zero as a serial port.

TinyGo has support for the RP2040’s on-board Programmable Input/Output (PIO) block.

For more informantion, see https://github.com/tinygo-org/pio