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 <henrik@brixandersen.dk>
This commit is contained in:
parent
76fd272652
commit
31f581951f
9 changed files with 301 additions and 0 deletions
5
boards/others/canbardo/Kconfig.canbardo
Normal file
5
boards/others/canbardo/Kconfig.canbardo
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
config BOARD_CANBARDO
|
||||||
|
select SOC_SAME70N20B
|
||||||
6
boards/others/canbardo/board.cmake
Normal file
6
boards/others/canbardo/board.cmake
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
board_runner_args(jlink "--device=ATSAME70N20B")
|
||||||
|
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
||||||
6
boards/others/canbardo/board.yml
Normal file
6
boards/others/canbardo/board.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
board:
|
||||||
|
name: canbardo
|
||||||
|
full_name: CANbardo
|
||||||
|
vendor: others
|
||||||
|
socs:
|
||||||
|
- name: same70n20b
|
||||||
29
boards/others/canbardo/canbardo-pinctrl.dtsi
Normal file
29
boards/others/canbardo/canbardo-pinctrl.dtsi
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dt-bindings/pinctrl/same70n-pinctrl.h>
|
||||||
|
|
||||||
|
&pinctrl {
|
||||||
|
uart1_default: uart1_default {
|
||||||
|
group1 {
|
||||||
|
pinmux = <PA5C_UART1_RXD>,
|
||||||
|
<PA4C_UART1_TXD>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
can0_default: can0_default {
|
||||||
|
group1 {
|
||||||
|
pinmux = <PB3A_CAN0_RX>,
|
||||||
|
<PB2A_CAN0_TX>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
can1_default: can1_default {
|
||||||
|
group1 {
|
||||||
|
pinmux = <PD28B_CAN1_RX>,
|
||||||
|
<PD12B_CAN1_TX>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
160
boards/others/canbardo/canbardo.dts
Normal file
160
boards/others/canbardo/canbardo.dts
Normal file
|
|
@ -0,0 +1,160 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include <freq.h>
|
||||||
|
#include <mem.h>
|
||||||
|
#include <atmel/same70x20b.dtsi>
|
||||||
|
#include <zephyr/dt-bindings/gpio/gpio.h>
|
||||||
|
#include <zephyr/dt-bindings/input/input-event-codes.h>
|
||||||
|
|
||||||
|
#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 = <INPUT_KEY_0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
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 = <DT_FREQ_M(300)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&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)>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
18
boards/others/canbardo/canbardo.yaml
Normal file
18
boards/others/canbardo/canbardo.yaml
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
# 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
|
||||||
10
boards/others/canbardo/canbardo_defconfig
Normal file
10
boards/others/canbardo/canbardo_defconfig
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Copyright (c) 2024-2025 Henrik Brix Andersen <henrik@brixandersen.dk>
|
||||||
|
# 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
|
||||||
BIN
boards/others/canbardo/doc/canbardo.webp
Normal file
BIN
boards/others/canbardo/doc/canbardo.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
67
boards/others/canbardo/doc/index.rst
Normal file
67
boards/others/canbardo/doc/index.rst
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
.. zephyr:board:: canbardo
|
||||||
|
|
||||||
|
Overview
|
||||||
|
********
|
||||||
|
|
||||||
|
CANbardo is an open hardware Universal Serial Bus (USB) to Controller Area Network (CAN) adapter
|
||||||
|
board. It is designed to be compatible with the open source :ref:`external_module_cannectivity`.
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
********
|
||||||
|
|
||||||
|
The CANbardo board is equipped with an Atmel SAME70N20B microcontroller and features an USB-C
|
||||||
|
connector (high-speed USB 2.0), two DB-9M connectors for CAN FD (up to 8 Mbit/s), a number of status
|
||||||
|
LEDs, and a push button. Schematics and component placement drawings are available in the `CANbardo
|
||||||
|
GitHub repository`_.
|
||||||
|
|
||||||
|
Supported Features
|
||||||
|
==================
|
||||||
|
|
||||||
|
The ``canbardo`` board supports the following hardware features:
|
||||||
|
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| Interface | Controller | Driver/Component |
|
||||||
|
+===========+============+=====================================+
|
||||||
|
| NVIC | on-chip | nested vector interrupt controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| PINMUX | on-chip | pinmux |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| FLASH | on-chip | flash memory |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| GPIO | on-chip | gpio |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| USB | on-chip | USB |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| UART1 | on-chip | serial console |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| CAN0 | on-chip | CAN controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| CAN1 | on-chip | CAN controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
|
||||||
|
The default configuration can be found in the defconfig file:
|
||||||
|
:zephyr_file:`boards/others/canbardo/canbardo_defconfig`.
|
||||||
|
|
||||||
|
Other hardware features are not currently supported by the port.
|
||||||
|
|
||||||
|
System Clock
|
||||||
|
============
|
||||||
|
|
||||||
|
The SAME70N20B is driven by a 12 MHz crystal and configured to provide a system clock of 300
|
||||||
|
MHz. The two CAN FD controllers have a core clock frequency of 80 MHz.
|
||||||
|
|
||||||
|
Programming and Debugging
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Build and flash applications as usual (see :ref:`build_an_application` and
|
||||||
|
:ref:`application_run` for more details).
|
||||||
|
|
||||||
|
Here is an example for the :zephyr:code-sample:`blinky` application.
|
||||||
|
|
||||||
|
.. zephyr-app-commands::
|
||||||
|
:zephyr-app: samples/basic/blinky
|
||||||
|
:board: canbardo
|
||||||
|
:Goals: flash
|
||||||
|
|
||||||
|
.. _CANbardo GitHub repository:
|
||||||
|
https://github.com/CANbardo/canbardo
|
||||||
Loading…
Reference in a new issue