From 216a1d95edd63f35765417f686f076d35bb2795a Mon Sep 17 00:00:00 2001 From: Tim Lovett Date: Sun, 21 Apr 2024 09:44:51 -0400 Subject: [PATCH] boards: seeed: Add xiao_rp2040 board Adds xiao_rp2040 board built off rpi_pico Currently only uf2 flash supported Signed-off-by: Tim Lovett --- boards/seeed/xiao_rp2040/Kconfig.defconfig | 19 ++ boards/seeed/xiao_rp2040/Kconfig.xiao_rp2040 | 7 + boards/seeed/xiao_rp2040/board.cmake | 5 + boards/seeed/xiao_rp2040/board.yml | 5 + .../xiao_rp2040/doc/img/xiao_rp2040.webp | Bin 0 -> 35230 bytes .../doc/img/xiao_rp2040_pinout.webp | Bin 0 -> 30844 bytes boards/seeed/xiao_rp2040/doc/index.rst | 138 ++++++++++++++ .../xiao_rp2040/seeed_xiao_connector.dtsi | 34 ++++ .../xiao_rp2040/xiao_rp2040-pinctrl.dtsi | 68 +++++++ boards/seeed/xiao_rp2040/xiao_rp2040.dts | 174 ++++++++++++++++++ boards/seeed/xiao_rp2040/xiao_rp2040.yaml | 24 +++ .../seeed/xiao_rp2040/xiao_rp2040_defconfig | 21 +++ .../blinky_pwm/boards/xiao_rp2040.overlay | 13 ++ .../basic/fade_led/boards/xiao_rp2040.overlay | 4 + .../drivers/led_strip/boards/xiao_rp2040.conf | 2 + .../adc/adc_api/boards/xiao_rp2040.overlay | 32 ++++ 16 files changed, 546 insertions(+) create mode 100644 boards/seeed/xiao_rp2040/Kconfig.defconfig create mode 100644 boards/seeed/xiao_rp2040/Kconfig.xiao_rp2040 create mode 100644 boards/seeed/xiao_rp2040/board.cmake create mode 100644 boards/seeed/xiao_rp2040/board.yml create mode 100644 boards/seeed/xiao_rp2040/doc/img/xiao_rp2040.webp create mode 100644 boards/seeed/xiao_rp2040/doc/img/xiao_rp2040_pinout.webp create mode 100644 boards/seeed/xiao_rp2040/doc/index.rst create mode 100644 boards/seeed/xiao_rp2040/seeed_xiao_connector.dtsi create mode 100644 boards/seeed/xiao_rp2040/xiao_rp2040-pinctrl.dtsi create mode 100644 boards/seeed/xiao_rp2040/xiao_rp2040.dts create mode 100644 boards/seeed/xiao_rp2040/xiao_rp2040.yaml create mode 100644 boards/seeed/xiao_rp2040/xiao_rp2040_defconfig create mode 100644 samples/basic/blinky_pwm/boards/xiao_rp2040.overlay create mode 100644 samples/basic/fade_led/boards/xiao_rp2040.overlay create mode 100644 samples/drivers/led_strip/boards/xiao_rp2040.conf create mode 100644 tests/drivers/adc/adc_api/boards/xiao_rp2040.overlay diff --git a/boards/seeed/xiao_rp2040/Kconfig.defconfig b/boards/seeed/xiao_rp2040/Kconfig.defconfig new file mode 100644 index 00000000000..e2af832cdca --- /dev/null +++ b/boards/seeed/xiao_rp2040/Kconfig.defconfig @@ -0,0 +1,19 @@ +# Copyright (c) 2023 Seeed Studio inc. +# SPDX-License-Identifier: Apache-2.0 + +if BOARD_XIAO_RP2040 + +config RP2_FLASH_W25Q080 + default y + +if I2C_DW + +config I2C_DW_CLOCK_SPEED + default 125 + +endif # I2C_DW + +config USB_SELF_POWERED + default n + +endif # BOARD_XIAO_RP2040 diff --git a/boards/seeed/xiao_rp2040/Kconfig.xiao_rp2040 b/boards/seeed/xiao_rp2040/Kconfig.xiao_rp2040 new file mode 100644 index 00000000000..8bd3d0d2d15 --- /dev/null +++ b/boards/seeed/xiao_rp2040/Kconfig.xiao_rp2040 @@ -0,0 +1,7 @@ +# XIAO RP2040 board configuration + +# Copyright (c) 2023 Seeed Studio inc. +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_XIAO_RP2040 + select SOC_RP2040 diff --git a/boards/seeed/xiao_rp2040/board.cmake b/boards/seeed/xiao_rp2040/board.cmake new file mode 100644 index 00000000000..4103e36e635 --- /dev/null +++ b/boards/seeed/xiao_rp2040/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(uf2 "--board-id=RPI-RP2") + +include(${ZEPHYR_BASE}/boards/common/uf2.board.cmake) diff --git a/boards/seeed/xiao_rp2040/board.yml b/boards/seeed/xiao_rp2040/board.yml new file mode 100644 index 00000000000..7eaca915972 --- /dev/null +++ b/boards/seeed/xiao_rp2040/board.yml @@ -0,0 +1,5 @@ +board: + name: xiao_rp2040 + vendor: seeed + socs: + - name: rp2040 diff --git a/boards/seeed/xiao_rp2040/doc/img/xiao_rp2040.webp b/boards/seeed/xiao_rp2040/doc/img/xiao_rp2040.webp new file mode 100644 index 0000000000000000000000000000000000000000..5233046000ae6f6103f4a896fa8ac08140ed41cf GIT binary patch literal 35230 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 literal 0 HcmV?d00001 diff --git a/boards/seeed/xiao_rp2040/doc/img/xiao_rp2040_pinout.webp b/boards/seeed/xiao_rp2040/doc/img/xiao_rp2040_pinout.webp new file mode 100644 index 0000000000000000000000000000000000000000..cb295b073d46b2bcb71b200bd10959aa33aab8a4 GIT binary patch literal 30844 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 R000000000000000002!9SBd}t literal 0 HcmV?d00001 diff --git a/boards/seeed/xiao_rp2040/doc/index.rst b/boards/seeed/xiao_rp2040/doc/index.rst new file mode 100644 index 00000000000..7206e9be07f --- /dev/null +++ b/boards/seeed/xiao_rp2040/doc/index.rst @@ -0,0 +1,138 @@ +.. _xiao_rp2040: + +XIAO RP2040 +########### + +Overview +******** + +The XIAO RP2040 is an IoT mini development board from Seeed Studio. +It is equipped with an RP2040 SoC, an on-board WS2812 addressable +LED, and USB connector. The USB bootloader allows it +to be flashed without any adapter, in a drag-and-drop manner. + +For more details see the `Seeed Studio XIAO RP2040`_ wiki page. + +.. figure:: img/xiao_rp2040.webp + :align: center + :alt: XIAO RP2040 + + XIAO RP2040 + +Hardware +******** + +The Seeed Studio XIAO RP2040 is a low-power microcontroller that +carries the powerful Dual-core RP2040 processor with a flexible +clock running up to 133 MHz. There is also 264KB of SRAM, and 2MB of +on-board Flash memory. + +There are 14 GPIO PINs on Seeed Studio XIAO RP2040, on which there +are 11 digital pins, 4 analog pins, 11 PWM Pins,1 I2C interface, +1 UART interface, 1 SPI interface, 1 SWD Bonding pad interface. + +Supported Features +================== + +The ``xiao_rp2040`` board target supports the following hardware +features: + +.. list-table:: + :header-rows: 1 + + * - Peripheral + - Kconfig option + - Devicetree compatible + * - NVIC + - N/A + - :dtcompatible:`arm,v6m-nvic` + * - UART + - :kconfig:option:`CONFIG_SERIAL` + - :dtcompatible:`raspberrypi,pico-uart` + * - GPIO + - :kconfig:option:`CONFIG_GPIO` + - :dtcompatible:`raspberrypi,pico-gpio` + * - ADC + - :kconfig:option:`CONFIG_ADC` + - :dtcompatible:`raspberrypi,pico-adc` + * - I2C + - :kconfig:option:`CONFIG_I2C` + - :dtcompatible:`snps,designware-i2c` + * - SPI + - :kconfig:option:`CONFIG_SPI` + - :dtcompatible:`raspberrypi,pico-spi` + * - USB Device + - :kconfig:option:`CONFIG_USB_DEVICE_STACK` + - :dtcompatible:`raspberrypi,pico-usbd` + * - HWINFO + - :kconfig:option:`CONFIG_HWINFO` + - N/A + * - Watchdog Timer (WDT) + - :kconfig:option:`CONFIG_WATCHDOG` + - :dtcompatible:`raspberrypi,pico-watchdog` + * - PWM + - :kconfig:option:`CONFIG_PWM` + - :dtcompatible:`raspberrypi,pico-pwm` + * - Flash + - :kconfig:option:`CONFIG_FLASH` + - :dtcompatible:`raspberrypi,pico-flash-controller` + * - Clock controller + - :kconfig:option:`CONFIG_CLOCK_CONTROL` + - :dtcompatible:`raspberrypi,pico-clock-controller` + * - UART (PIO) + - :kconfig:option:`CONFIG_SERIAL` + - :dtcompatible:`raspberrypi,pico-uart-pio` + +Pin Mapping +=========== + +The peripherals of the RP2040 SoC can be routed to various pins on the board. +The configuration of these routes can be modified through DTS. Please refer to +the datasheet to see the possible routings for each peripheral. + +Default Zephyr Peripheral Mapping: +---------------------------------- + +.. rst-class:: rst-columns + +- UART0_TX : P0 +- UART0_RX : P1 +- I2C1_SDA : P6 +- I2C1_SCL : P7 +- SPI0_RX : P4 +- SPI0_SCK : P2 +- SPI0_TX : P3 + +Connections and IOs +=================== + +The board uses a standard XIAO pinout, the default pin mapping is the following: + +.. figure:: img/xiao_rp2040_pinout.webp + :align: center + :alt: XIAO RP2040 Pinout + + XIAO RP2040 Pinout + +Programming and Debugging +************************* + +Flashing +======== + +Using UF2 +--------- + +You can flash the Xiao RP2040 with a UF2 file. +By default, building an app for this board will generate a +:file:`build/zephyr/zephyr.uf2` file. If the Xiao RP2040 is powered on with +the ``BOOTSEL`` button pressed, it will appear on the host as a mass storage +device. The UF2 file should be copied to the device, which will +flash the Xiao RP2040. + +References +********** + +.. target-notes:: + +.. _`Seeed Studio XIAO RP2040`: https://wiki.seeedstudio.com/XIAO-RP2040/ diff --git a/boards/seeed/xiao_rp2040/seeed_xiao_connector.dtsi b/boards/seeed/xiao_rp2040/seeed_xiao_connector.dtsi new file mode 100644 index 00000000000..d0e9152cefd --- /dev/null +++ b/boards/seeed/xiao_rp2040/seeed_xiao_connector.dtsi @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023 Seeed Studio inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + xiao_d: connector { + compatible = "seeed,xiao-gpio"; + #gpio-cells = <2>; + gpio-map-mask = <0xffffffff 0xffffffc0>; + gpio-map-pass-thru = <0 0x3f>; + gpio-map + = <0 0 &gpio0 26 0> /* D0 */ + , <1 0 &gpio0 27 0> /* D1 */ + , <2 0 &gpio0 28 0> /* D2 */ + , <3 0 &gpio0 29 0> /* D3 */ + , <4 0 &gpio0 6 0> /* D4 */ + , <5 0 &gpio0 7 0> /* D5 */ + , <6 0 &gpio0 0 0> /* D6 */ + , <7 0 &gpio0 1 0> /* D7 */ + , <8 0 &gpio0 2 0> /* D8 */ + , <9 0 &gpio0 4 0> /* D9 */ + , <10 0 &gpio0 3 0> /* D10 */ + ; + }; +}; + +xiao_i2c: &i2c1 { +}; +xiao_spi: &spi0 { +}; +xiao_serial: &uart0 { +}; diff --git a/boards/seeed/xiao_rp2040/xiao_rp2040-pinctrl.dtsi b/boards/seeed/xiao_rp2040/xiao_rp2040-pinctrl.dtsi new file mode 100644 index 00000000000..0e235884bf2 --- /dev/null +++ b/boards/seeed/xiao_rp2040/xiao_rp2040-pinctrl.dtsi @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2021 Yonatan Schachter + * Copyright (c) 2023 Seeed Studio inc. + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + uart0_default: uart0_default { + group1 { + pinmux = ; + }; + group2 { + pinmux = ; + input-enable; + }; + }; + + i2c1_default: i2c1_default { + group1 { + pinmux = ; + input-enable; + }; + group2 { + pinmux = ; + input-enable; + }; + }; + + pwm_ch4b_default: pwm_ch4b_default { + group1 { + pinmux = ; + }; + }; + + spi0_default: spi0_default { + group1 { + pinmux = ; + }; + group2 { + pinmux = ; + input-enable; + }; + group3 { + pinmux = ; + }; + }; + + adc_default: adc_default { + group1 { + pinmux = , + , + , + ; + input-enable; + }; + }; + + clocks_default: clocks_default { + }; + + ws2812_pio0_default: ws2812_pio0_default { + ws2812 { + pinmux = ; + }; + }; +}; diff --git a/boards/seeed/xiao_rp2040/xiao_rp2040.dts b/boards/seeed/xiao_rp2040/xiao_rp2040.dts new file mode 100644 index 00000000000..0a52f47d672 --- /dev/null +++ b/boards/seeed/xiao_rp2040/xiao_rp2040.dts @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2021 Yonatan Schachter + * Copyright (c) 2023 Seeed Studio inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include "xiao_rp2040-pinctrl.dtsi" +#include "seeed_xiao_connector.dtsi" +#include +#include +#include + +/ { + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,flash-controller = &ssi; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,code-partition = &code_partition; + }; + + aliases { + watchdog0 = &wdt0; + led-strip = &ws2812; + pwm-led0 = &pwm_led0; + led0 = &blue_led; + led1 = &green_led; + led2 = &red_led; + }; + + pwm_leds { + compatible = "pwm-leds"; + status = "disabled"; + pwm_led0: pwm_led_0 { + pwms = <&pwm 9 PWM_MSEC(20) PWM_POLARITY_INVERTED>; + label = "PWM_LED"; + }; + }; + + leds { + compatible = "gpio-leds"; + + blue_led: blue_led { + gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; + label = "BLUE_LED"; + }; + + green_led: green_led { + gpios = <&gpio0 16 GPIO_ACTIVE_LOW>; + label = "GREEN_LED"; + }; + + red_led: red_led { + gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; + label = "RED_LED"; + }; + }; +}; + +&pwm { + pinctrl-0 = <&pwm_ch4b_default>; + pinctrl-names = "default"; + divider-int-0 = <255>; +}; + +&flash0 { + /* + * 2MB of flash minus the 0x100 used for the second stage bootloader + */ + reg = <0x10000000 DT_SIZE_M(2)>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + code_partition: partition@100 { + label = "code"; + reg = <0x100 (DT_SIZE_M(2) - 0x100)>; + read-only; + }; + }; +}; + +&clocks { + pinctrl-0 = <&clocks_default>; + pinctrl-names = "default"; +}; + +&timer { + status = "okay"; +}; + +&uart0 { + current-speed = <115200>; + status = "okay"; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; + +&i2c1 { + status = "okay"; + pinctrl-0 = <&i2c1_default>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&spi0 { + status = "okay"; + pinctrl-0 = <&spi0_default>; + pinctrl-names = "default"; + clock-frequency = ; +}; + +&gpio0 { + status = "okay"; + + /* + * The neopixel on this board has its positive side hooked up to a GPIO pin + * rather than a positive voltage rail to save on power. This will enable + * the LED on board initialization. + */ + neopixel-power-enable { + gpio-hog; + gpios = <11 GPIO_ACTIVE_HIGH>; + output-high; + }; +}; + +&wdt0 { + status = "okay"; +}; + +&adc { + status = "okay"; + pinctrl-0 = <&adc_default>; + pinctrl-names = "default"; +}; + +&pio0 { + status = "okay"; + + pio-ws2812 { + compatible = "worldsemi,ws2812-rpi_pico-pio"; + status = "okay"; + pinctrl-0 = <&ws2812_pio0_default>; + pinctrl-names = "default"; + bit-waveform = <3>, <3>, <4>; + + ws2812: ws2812 { + status = "okay"; + gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; + chain-length = <1>; + color-mapping = ; + reset-delay = <280>; + frequency = <800000>; + }; + }; +}; + +zephyr_udc0: &usbd { + status = "okay"; +}; + +&vreg { + regulator-always-on; + regulator-allowed-modes = ; +}; diff --git a/boards/seeed/xiao_rp2040/xiao_rp2040.yaml b/boards/seeed/xiao_rp2040/xiao_rp2040.yaml new file mode 100644 index 00000000000..b2852757aa3 --- /dev/null +++ b/boards/seeed/xiao_rp2040/xiao_rp2040.yaml @@ -0,0 +1,24 @@ +identifier: xiao_rp2040 +name: XIAO RP2040 +type: mcu +arch: arm +flash: 2048 +ram: 256 +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - uart + - gpio + - adc + - i2c + - spi + - hwinfo + - watchdog + - pwm + - flash + - dma + - counter + - clock +vendor: seeed diff --git a/boards/seeed/xiao_rp2040/xiao_rp2040_defconfig b/boards/seeed/xiao_rp2040/xiao_rp2040_defconfig new file mode 100644 index 00000000000..ef4e863884a --- /dev/null +++ b/boards/seeed/xiao_rp2040/xiao_rp2040_defconfig @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 +CONFIG_RESET=y + +# Enable UART driver +CONFIG_SERIAL=y +CONFIG_UART_INTERRUPT_DRIVEN=y + +# Enable console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable clock control by default +CONFIG_CLOCK_CONTROL=y + +# Code partition needed to target the correct flash range +CONFIG_USE_DT_CODE_PARTITION=y + +# Output UF2 by default, native bootloader supports it. +CONFIG_BUILD_OUTPUT_UF2=y diff --git a/samples/basic/blinky_pwm/boards/xiao_rp2040.overlay b/samples/basic/blinky_pwm/boards/xiao_rp2040.overlay new file mode 100644 index 00000000000..43e054ede94 --- /dev/null +++ b/samples/basic/blinky_pwm/boards/xiao_rp2040.overlay @@ -0,0 +1,13 @@ +&{/pwm_leds} { + status = "okay"; +}; + +&pwm_led0 { + status = "okay"; +}; + +&pwm { + status = "okay"; + divider-frac-4 = <15>; + divider-int-4 = <255>; +}; diff --git a/samples/basic/fade_led/boards/xiao_rp2040.overlay b/samples/basic/fade_led/boards/xiao_rp2040.overlay new file mode 100644 index 00000000000..62c3a142cd4 --- /dev/null +++ b/samples/basic/fade_led/boards/xiao_rp2040.overlay @@ -0,0 +1,4 @@ +&pwm { + status = "okay"; + divider-int-4 = <255>; +}; diff --git a/samples/drivers/led_strip/boards/xiao_rp2040.conf b/samples/drivers/led_strip/boards/xiao_rp2040.conf new file mode 100644 index 00000000000..8230eb9896b --- /dev/null +++ b/samples/drivers/led_strip/boards/xiao_rp2040.conf @@ -0,0 +1,2 @@ +CONFIG_GPIO=y +CONFIG_GPIO_HOGS=y diff --git a/tests/drivers/adc/adc_api/boards/xiao_rp2040.overlay b/tests/drivers/adc/adc_api/boards/xiao_rp2040.overlay new file mode 100644 index 00000000000..2bd79f9f4f1 --- /dev/null +++ b/tests/drivers/adc/adc_api/boards/xiao_rp2040.overlay @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023 Benjamin Björnsson + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + zephyr,user { + io-channels = <&adc 0>, <&adc 1>; + }; +}; + +&adc { + #address-cells = <1>; + #size-cells = <0>; + + channel@0 { + reg = <0>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_INTERNAL"; + zephyr,acquisition-time = ; + zephyr,resolution = <12>; + }; + + channel@1 { + reg = <1>; + zephyr,gain = "ADC_GAIN_1"; + zephyr,reference = "ADC_REF_INTERNAL"; + zephyr,acquisition-time = ; + zephyr,resolution = <12>; + }; +};