Browse Source
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>pull/81536/head
9 changed files with 301 additions and 0 deletions
@ -0,0 +1,5 @@
@@ -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 |
@ -0,0 +1,6 @@
@@ -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) |
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
board: |
||||
name: canbardo |
||||
full_name: CANbardo |
||||
vendor: others |
||||
socs: |
||||
- name: same70n20b |
@ -0,0 +1,29 @@
@@ -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>; |
||||
}; |
||||
}; |
||||
}; |
@ -0,0 +1,160 @@
@@ -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)>; |
||||
}; |
||||
}; |
||||
}; |
@ -0,0 +1,18 @@
@@ -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 |
@ -0,0 +1,10 @@
@@ -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 |
After Width: | Height: | Size: 36 KiB |
@ -0,0 +1,67 @@
@@ -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 new issue