From 235ff25db735ea0b1cf2dcd3df415b3c4b9a65de Mon Sep 17 00:00:00 2001 From: Dave Rensberger Date: Wed, 10 May 2023 10:12:21 -0400 Subject: [PATCH] boards: Board definition for the Raspberry Pi Pico W. Effort has been made to abstract the features that are common to both the Pico and Pico W into a shared file when possible. This commit does not include the addition of bluetooth or wifi drivers for the W's Infineon module. Signed-off-by: Dave Rensberger --- boards/arm/rpi_pico/Kconfig.board | 4 + boards/arm/rpi_pico/Kconfig.defconfig | 7 +- boards/arm/rpi_pico/doc/img/rpi_pico_w.jpg | Bin 0 -> 18034 bytes boards/arm/rpi_pico/doc/index.rst | 26 +++- boards/arm/rpi_pico/rpi_pico-common.dtsi | 112 ++++++++++++++++++ boards/arm/rpi_pico/rpi_pico.dts | 101 +--------------- boards/arm/rpi_pico/rpi_pico_defconfig | 1 + boards/arm/rpi_pico/rpi_pico_w.dts | 9 ++ boards/arm/rpi_pico/rpi_pico_w.yaml | 21 ++++ boards/arm/rpi_pico/rpi_pico_w_defconfig | 13 ++ .../adc/adc_api/boards/rpi_pico_w.overlay | 32 +++++ 11 files changed, 217 insertions(+), 109 deletions(-) create mode 100644 boards/arm/rpi_pico/doc/img/rpi_pico_w.jpg create mode 100644 boards/arm/rpi_pico/rpi_pico-common.dtsi create mode 100644 boards/arm/rpi_pico/rpi_pico_w.dts create mode 100644 boards/arm/rpi_pico/rpi_pico_w.yaml create mode 100644 boards/arm/rpi_pico/rpi_pico_w_defconfig create mode 100644 tests/drivers/adc/adc_api/boards/rpi_pico_w.overlay diff --git a/boards/arm/rpi_pico/Kconfig.board b/boards/arm/rpi_pico/Kconfig.board index ac9d9661bbfe4..e2c1318db67bc 100644 --- a/boards/arm/rpi_pico/Kconfig.board +++ b/boards/arm/rpi_pico/Kconfig.board @@ -4,3 +4,7 @@ config BOARD_RPI_PICO bool "Raspberry Pi Pico Board" depends on SOC_RP2040 + +config BOARD_RPI_PICO_W + bool "Raspberry Pi Pico W Board" + depends on SOC_RP2040 diff --git a/boards/arm/rpi_pico/Kconfig.defconfig b/boards/arm/rpi_pico/Kconfig.defconfig index 4a7dd9f7f98ec..898b8abe04bcb 100644 --- a/boards/arm/rpi_pico/Kconfig.defconfig +++ b/boards/arm/rpi_pico/Kconfig.defconfig @@ -1,10 +1,11 @@ # Copyright (c) 2021 Yonatan Schachter # SPDX-License-Identifier: Apache-2.0 -if BOARD_RPI_PICO +if BOARD_RPI_PICO || BOARD_RPI_PICO_W config BOARD - default "rpi_pico" + default "rpi_pico" if BOARD_RPI_PICO + default "rpi_pico_w" if BOARD_RPI_PICO_W config RP2_FLASH_W25Q080 default y @@ -16,4 +17,4 @@ config I2C_DW_CLOCK_SPEED endif #I2C_DW -endif # BOARD_RPI_PICO +endif # BOARD_RPI_PICO || BOARD_RPI_PICO_W diff --git a/boards/arm/rpi_pico/doc/img/rpi_pico_w.jpg b/boards/arm/rpi_pico/doc/img/rpi_pico_w.jpg new file mode 100644 index 0000000000000000000000000000000000000000..426a088a3380965e6143cf4f9ebbc335199ddcba GIT binary patch literal 18034 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 X+E+Y?!?c$ph>IE?+0L8GM_&FPho(t` literal 0 HcmV?d00001 diff --git a/boards/arm/rpi_pico/doc/index.rst b/boards/arm/rpi_pico/doc/index.rst index 6dda3cbfdc96c..074de00d81792 100644 --- a/boards/arm/rpi_pico/doc/index.rst +++ b/boards/arm/rpi_pico/doc/index.rst @@ -6,11 +6,12 @@ Raspberry Pi Pico Overview ******** -The Raspberry Pi Pico is a small, low-cost, versatile board from -Raspberry Pi. It is equipped with an RP2040 SoC, an on-board LED, -a USB connector, and an SWD interface. The USB bootloader allows it -to be flashed without any adapter, in a drag-and-drop manner. -It is also possible to flash and debug the Pico with its SWD interface, +The Raspberry Pi Pico and Pico W are small, low-cost, versatile boards from +Raspberry Pi. They are equipped with an RP2040 SoC, an on-board LED, +a USB connector, and an SWD interface. The Pico W additionally contains an +Infineon CYW43439 2.4 GHz Wi-Fi/Bluetoth module. The USB bootloader allows the +ability to flash without any adapter, in a drag-and-drop manner. +It is also possible to flash and debug the boards with their SWD interface, using an external adapter. Hardware @@ -28,13 +29,20 @@ Hardware - 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) .. figure:: img/rpi_pico.jpg :align: center :alt: Raspberry Pi Pico - Raspberry Pi Pico (Image courtesy of Raspberry Pi) + +.. figure:: img/rpi_pico_w.jpg + :align: center + :alt: Raspberry Pi Pico W + + Raspberry Pi Pico (above) and Pico W (below) + (Images courtesy of Raspberry Pi) Supported Features ================== @@ -92,6 +100,12 @@ 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. +External pin mapping on the Pico W is identical to the Pico, but note that internal +RP2040 GPIO lines 23, 24, 25, and 29 are routed to the Infineon module on the W. +Since GPIO 25 is routed to the on-board LED on the Pico, but to the Infineon module +on the Pico W, the "blinky" sample program does not work on the W (use hello_world for +a simple test program instead). + Default Zephyr Peripheral Mapping: ---------------------------------- diff --git a/boards/arm/rpi_pico/rpi_pico-common.dtsi b/boards/arm/rpi_pico/rpi_pico-common.dtsi new file mode 100644 index 0000000000000..9ad33f1993a27 --- /dev/null +++ b/boards/arm/rpi_pico/rpi_pico-common.dtsi @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2021 Yonatan Schachter + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +#include +#include "rpi_pico-pinctrl.dtsi" +#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; + }; + + xtal_clk: xtal-clk { + compatible = "fixed-clock"; + clock-frequency = <12000000>; + #clock-cells = <0>; + }; + + aliases { + watchdog0 = &wdt0; + }; +}; + +&flash0 { + reg = <0x10000000 DT_SIZE_M(2)>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* Reserved memory for the second stage bootloader */ + second_stage_bootloader: partition@0 { + label = "second_stage_bootloader"; + reg = <0x00000000 0x100>; + read-only; + }; + + /* + * Usable flash. Starts at 0x100, after the bootloader. The partition + * size is 2MB minus the 0x100 bytes taken by the bootloader. + */ + code_partition: partition@100 { + label = "code-partition"; + reg = <0x100 (DT_SIZE_M(2) - 0x100)>; + read-only; + }; + }; +}; + +&uart0 { + current-speed = <115200>; + status = "okay"; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; +}; + +&gpio0 { + status = "okay"; +}; + +&i2c0 { + clock-frequency = ; + status = "okay"; + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; +}; + +&spi0 { + clock-frequency = ; + status = "okay"; + pinctrl-0 = <&spi0_default>; + pinctrl-names = "default"; +}; + +&wdt0 { + status = "okay"; +}; + +&adc { + status = "okay"; + pinctrl-0 = <&adc_default>; + pinctrl-names = "default"; +}; + +zephyr_udc0: &usbd { + status = "okay"; +}; + +&pwm { + pinctrl-0 = <&pwm_ch4b_default>; + pinctrl-names = "default"; + divider-int-0 = <255>; +}; + +&vreg { + regulator-always-on; + regulator-allowed-modes = ; +}; diff --git a/boards/arm/rpi_pico/rpi_pico.dts b/boards/arm/rpi_pico/rpi_pico.dts index 0b2754d29bc25..97d721024d749 100644 --- a/boards/arm/rpi_pico/rpi_pico.dts +++ b/boards/arm/rpi_pico/rpi_pico.dts @@ -6,24 +6,9 @@ /dts-v1/; -#include - -#include -#include "rpi_pico-pinctrl.dtsi" -#include - -#include +#include "rpi_pico-common.dtsi" / { - chosen { - zephyr,sram = &sram0; - zephyr,flash = &flash0; - zephyr,flash-controller = &ssi; - zephyr,console = &uart0; - zephyr,shell-uart = &uart0; - zephyr,code-partition = &code_partition; - }; - leds { compatible = "gpio-leds"; led0: led_0 { @@ -32,12 +17,6 @@ }; }; - xtal_clk: xtal-clk { - compatible = "fixed-clock"; - clock-frequency = <12000000>; - #clock-cells = <0>; - }; - pwm_leds { compatible = "pwm-leds"; status = "disabled"; @@ -49,84 +28,6 @@ aliases { led0 = &led0; - watchdog0 = &wdt0; pwm-led0 = &pwm_led0; }; }; - -&flash0 { - reg = <0x10000000 DT_SIZE_M(2)>; - - partitions { - compatible = "fixed-partitions"; - #address-cells = <1>; - #size-cells = <1>; - - /* Reserved memory for the second stage bootloader */ - second_stage_bootloader: partition@0 { - label = "second_stage_bootloader"; - reg = <0x00000000 0x100>; - read-only; - }; - - /* - * Usable flash. Starts at 0x100, after the bootloader. The partition - * size is 2MB minus the 0x100 bytes taken by the bootloader. - */ - code_partition: partition@100 { - label = "code-partition"; - reg = <0x100 (DT_SIZE_M(2) - 0x100)>; - read-only; - }; - }; -}; - -&uart0 { - current-speed = <115200>; - status = "okay"; - pinctrl-0 = <&uart0_default>; - pinctrl-names = "default"; -}; - -&gpio0 { - status = "okay"; -}; - -&i2c0 { - clock-frequency = ; - status = "okay"; - pinctrl-0 = <&i2c0_default>; - pinctrl-names = "default"; -}; - -&spi0 { - clock-frequency = ; - status = "okay"; - pinctrl-0 = <&spi0_default>; - pinctrl-names = "default"; -}; - -&wdt0 { - status = "okay"; -}; - -&adc { - status = "okay"; - pinctrl-0 = <&adc_default>; - pinctrl-names = "default"; -}; - -zephyr_udc0: &usbd { - status = "okay"; -}; - -&pwm { - pinctrl-0 = <&pwm_ch4b_default>; - pinctrl-names = "default"; - divider-int-0 = <255>; -}; - -&vreg { - regulator-always-on; - regulator-allowed-modes = ; -}; diff --git a/boards/arm/rpi_pico/rpi_pico_defconfig b/boards/arm/rpi_pico/rpi_pico_defconfig index 939e92d10efed..2a276892119f1 100644 --- a/boards/arm/rpi_pico/rpi_pico_defconfig +++ b/boards/arm/rpi_pico/rpi_pico_defconfig @@ -1,5 +1,6 @@ CONFIG_SOC_SERIES_RP2XXX=y CONFIG_SOC_RP2040=y +CONFIG_BOARD_RPI_PICO=y CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 CONFIG_SERIAL=y CONFIG_CONSOLE=y diff --git a/boards/arm/rpi_pico/rpi_pico_w.dts b/boards/arm/rpi_pico/rpi_pico_w.dts new file mode 100644 index 0000000000000..ae01f15d69784 --- /dev/null +++ b/boards/arm/rpi_pico/rpi_pico_w.dts @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2023 Dave Rensberger - Beechwoods Software + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include "rpi_pico-common.dtsi" diff --git a/boards/arm/rpi_pico/rpi_pico_w.yaml b/boards/arm/rpi_pico/rpi_pico_w.yaml new file mode 100644 index 0000000000000..adc102da73176 --- /dev/null +++ b/boards/arm/rpi_pico/rpi_pico_w.yaml @@ -0,0 +1,21 @@ +identifier: rpi_pico_w +name: RaspberryPi-Pico-w +type: mcu +arch: arm +flash: 2048 +ram: 264 +toolchain: + - zephyr + - gnuarmemb + - xtools +supported: + - uart + - gpio + - adc + - i2c + - spi + - hwinfo + - watchdog + - pwm + - flash + - dma diff --git a/boards/arm/rpi_pico/rpi_pico_w_defconfig b/boards/arm/rpi_pico/rpi_pico_w_defconfig new file mode 100644 index 0000000000000..a03556141970f --- /dev/null +++ b/boards/arm/rpi_pico/rpi_pico_w_defconfig @@ -0,0 +1,13 @@ +CONFIG_SOC_SERIES_RP2XXX=y +CONFIG_SOC_RP2040=y +CONFIG_BOARD_RPI_PICO_W=y +CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=125000000 +CONFIG_SERIAL=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y +CONFIG_GPIO=y +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_BUILD_OUTPUT_HEX=y +CONFIG_UART_INTERRUPT_DRIVEN=y +CONFIG_RESET=y diff --git a/tests/drivers/adc/adc_api/boards/rpi_pico_w.overlay b/tests/drivers/adc/adc_api/boards/rpi_pico_w.overlay new file mode 100644 index 0000000000000..c904836fef06c --- /dev/null +++ b/tests/drivers/adc/adc_api/boards/rpi_pico_w.overlay @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2023 Dave Rensberger - Beechwoods Software + * + * 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>; + }; +};