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…
Add table
Add a link
Reference in a new issue