From 31f581951f227a9151edb5dc3a31a348564349f6 Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen Date: Sat, 4 Jan 2025 20:51:32 +0000 Subject: [PATCH] boards: others: add support for the CANbardo USB to CAN adapter board Add support for the open hardware CANbardo Universal Serial Bus (USB) to Controller Area Network (CAN) adapter board. Signed-off-by: Henrik Brix Andersen --- boards/others/canbardo/Kconfig.canbardo | 5 + boards/others/canbardo/board.cmake | 6 + boards/others/canbardo/board.yml | 6 + boards/others/canbardo/canbardo-pinctrl.dtsi | 29 ++++ boards/others/canbardo/canbardo.dts | 160 +++++++++++++++++++ boards/others/canbardo/canbardo.yaml | 18 +++ boards/others/canbardo/canbardo_defconfig | 10 ++ boards/others/canbardo/doc/canbardo.webp | Bin 0 -> 36308 bytes boards/others/canbardo/doc/index.rst | 67 ++++++++ 9 files changed, 301 insertions(+) create mode 100644 boards/others/canbardo/Kconfig.canbardo create mode 100644 boards/others/canbardo/board.cmake create mode 100644 boards/others/canbardo/board.yml create mode 100644 boards/others/canbardo/canbardo-pinctrl.dtsi create mode 100644 boards/others/canbardo/canbardo.dts create mode 100644 boards/others/canbardo/canbardo.yaml create mode 100644 boards/others/canbardo/canbardo_defconfig create mode 100644 boards/others/canbardo/doc/canbardo.webp create mode 100644 boards/others/canbardo/doc/index.rst diff --git a/boards/others/canbardo/Kconfig.canbardo b/boards/others/canbardo/Kconfig.canbardo new file mode 100644 index 00000000000..dd82cb29466 --- /dev/null +++ b/boards/others/canbardo/Kconfig.canbardo @@ -0,0 +1,5 @@ +# Copyright (c) 2024-2025 Henrik Brix Andersen +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_CANBARDO + select SOC_SAME70N20B diff --git a/boards/others/canbardo/board.cmake b/boards/others/canbardo/board.cmake new file mode 100644 index 00000000000..470cf0a5322 --- /dev/null +++ b/boards/others/canbardo/board.cmake @@ -0,0 +1,6 @@ +# Copyright (c) 2024-2025 Henrik Brix Andersen +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=ATSAME70N20B") + +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/others/canbardo/board.yml b/boards/others/canbardo/board.yml new file mode 100644 index 00000000000..096e332f896 --- /dev/null +++ b/boards/others/canbardo/board.yml @@ -0,0 +1,6 @@ +board: + name: canbardo + full_name: CANbardo + vendor: others + socs: + - name: same70n20b diff --git a/boards/others/canbardo/canbardo-pinctrl.dtsi b/boards/others/canbardo/canbardo-pinctrl.dtsi new file mode 100644 index 00000000000..18a4cb01c72 --- /dev/null +++ b/boards/others/canbardo/canbardo-pinctrl.dtsi @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024-2025 Henrik Brix Andersen + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + uart1_default: uart1_default { + group1 { + pinmux = , + ; + }; + }; + + can0_default: can0_default { + group1 { + pinmux = , + ; + }; + }; + + can1_default: can1_default { + group1 { + pinmux = , + ; + }; + }; +}; diff --git a/boards/others/canbardo/canbardo.dts b/boards/others/canbardo/canbardo.dts new file mode 100644 index 00000000000..294365c7a95 --- /dev/null +++ b/boards/others/canbardo/canbardo.dts @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2024-2025 Henrik Brix Andersen + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include +#include + +#include "canbardo-pinctrl.dtsi" + +/ { + model = "CANbardo board"; + compatible = "canbardo", "atmel,same70n20b", "atmel,same70b"; + + chosen { + zephyr,console = &uart1; + zephyr,shell-uart = &uart1; + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,code-partition = &slot0_partition; + zephyr,canbus = &can0; + }; + + aliases { + led0 = &dfu_led; + sw0 = &sw; + mcuboot-led0 = &dfu_led; + mcuboot-button0 = &sw; + }; + + leds { + compatible = "gpio-leds"; + + dfu_led: dfu_led { + gpios = <&piod 9 GPIO_ACTIVE_LOW>; + label = "DFU LED"; + }; + + can_0_ledr: can_0_ledr { + gpios = <&piod 25 GPIO_ACTIVE_LOW>; + label = "CAN0 LED ERR"; + }; + + can_0_ledg: can_0_ledg { + gpios = <&piod 22 GPIO_ACTIVE_LOW>; + label = "CAN0 LED RDY"; + }; + + can_0_ledy: can_0_ledy { + gpios = <&piod 24 GPIO_ACTIVE_LOW>; + label = "CAN0 LED ACT"; + }; + + can_1_ledr: can_1_ledr { + gpios = <&piod 19 GPIO_ACTIVE_LOW>; + label = "CAN1 LED ERR"; + }; + + can_1_ledg: can_1_ledg { + gpios = <&piod 17 GPIO_ACTIVE_LOW>; + label = "CAN1 LED RDY"; + }; + + can_1_ledy: can_1_ledy { + gpios = <&piod 18 GPIO_ACTIVE_LOW>; + label = "CAN1 LED ACT"; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + + sw: sw { + label = "SW"; + gpios = <&piod 15 GPIO_ACTIVE_LOW>; + zephyr,code = ; + }; + }; + + transceiver0: can-phy0 { + compatible = "microchip,mcp2558fd", "can-transceiver-gpio"; + enable-gpios = <&piod 26 GPIO_ACTIVE_LOW>; + max-bitrate = <8000000>; + #phy-cells = <0>; + }; + + transceiver1: can-phy1 { + compatible = "microchip,mcp2558fd", "can-transceiver-gpio"; + enable-gpios = <&piod 20 GPIO_ACTIVE_LOW>; + max-bitrate = <8000000>; + #phy-cells = <0>; + }; +}; + +&cpu0 { + clock-frequency = ; +}; + +&uart1 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&uart1_default>; + pinctrl-names = "default"; +}; + +zephyr_udc0: &usbhs { + status = "okay"; +}; + +&can0 { + status = "okay"; + pinctrl-0 = <&can0_default>; + pinctrl-names = "default"; + phys = <&transceiver0>; +}; + +&can1 { + status = "okay"; + pinctrl-0 = <&can1_default>; + pinctrl-names = "default"; + phys = <&transceiver1>; +}; + +&flash0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* First half of sector 0 */ + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x0 DT_SIZE_K(64)>; + read-only; + }; + + /* From sector 1 to sector 3 (included) */ + slot0_partition: partition@20000 { + label = "image-0"; + reg = <0x00020000 DT_SIZE_K(384)>; + }; + + /* From sector 4 to sector 6 (included) */ + slot1_partition: partition@80000 { + label = "image-1"; + reg = <0x00080000 DT_SIZE_K(384)>; + }; + + /* Sector 7 */ + storage_partition: partition@e0000 { + label = "storage"; + reg = <0x000e0000 DT_SIZE_K(128)>; + }; + }; +}; diff --git a/boards/others/canbardo/canbardo.yaml b/boards/others/canbardo/canbardo.yaml new file mode 100644 index 00000000000..fab283bb573 --- /dev/null +++ b/boards/others/canbardo/canbardo.yaml @@ -0,0 +1,18 @@ +# Copyright (c) 2024-2025 Henrik Brix Andersen +# SPDX-License-Identifier: Apache-2.0 + +identifier: canbardo/same70n20b +name: CANbardo +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb +flash: 1024 +ram: 384 +supported: + - can + - gpio + - usb + - usb_device +vendor: others diff --git a/boards/others/canbardo/canbardo_defconfig b/boards/others/canbardo/canbardo_defconfig new file mode 100644 index 00000000000..9f4016571d2 --- /dev/null +++ b/boards/others/canbardo/canbardo_defconfig @@ -0,0 +1,10 @@ +# Copyright (c) 2024-2025 Henrik Brix Andersen +# SPDX-License-Identifier: Apache-2.0 + +CONFIG_ARM_MPU=y +CONFIG_CACHE_MANAGEMENT=y +CONFIG_HW_STACK_PROTECTION=y + +CONFIG_CONSOLE=y +CONFIG_SERIAL=y +CONFIG_UART_CONSOLE=y diff --git a/boards/others/canbardo/doc/canbardo.webp b/boards/others/canbardo/doc/canbardo.webp new file mode 100644 index 0000000000000000000000000000000000000000..48ec716406109d18c5d7d64619639d945af014f4 GIT binary patch literal 36308 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