Skip to content

Commit

Permalink
boards: fysetc: add FYSETC UCAN USB to CAN 2.0B adapter board
Browse files Browse the repository at this point in the history
Add support for the open-source FYSETC UCAN USB to CAN 2.0B board.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
  • Loading branch information
henrikbrixandersen committed Nov 15, 2024
1 parent 8ac456c commit 6399813
Show file tree
Hide file tree
Showing 9 changed files with 212 additions and 0 deletions.
10 changes: 10 additions & 0 deletions boards/fysetc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _boards-fysetc:

FYSETC
######

.. toctree::
:maxdepth: 1
:glob:

**/*
5 changes: 5 additions & 0 deletions boards/fysetc/ucan/Kconfig.ucan
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright (c) 2024 Henrik Brix Andersen <henrik@brixandersen.dk>
# SPDX-License-Identifier: Apache-2.0

config BOARD_UCAN
select SOC_STM32F072XB
8 changes: 8 additions & 0 deletions boards/fysetc/ucan/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2024 Henrik Brix Andersen <henrik@brixandersen.dk>
# SPDX-License-Identifier: Apache-2.0

board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse")
board_runner_args(jlink "--device=STM32F072CB")

include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
6 changes: 6 additions & 0 deletions boards/fysetc/ucan/board.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
board:
name: ucan
full_name: UCAN
vendor: fysetc
socs:
- name: stm32f072xb
71 changes: 71 additions & 0 deletions boards/fysetc/ucan/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
.. zephyr:board:: ucan
Overview
********

The FYSETC UCAN is an open-source USB to CAN 2.0B adapter board. More information can be found on
the `UCAN website`_ and in the `UCAN wiki`_.

Hardware
********

The UCAN board is equipped with a STM32F072CB microcontroller and features an USB-C connector, a
terminal block for connecting to the CAN bus, and two user LEDs. Schematics and component placement
drawings are available in the `UCAN GitHub repository`_.

Supported Features
==================

The ``ucan`` board configuration 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 |
+-----------+------------+-------------------------------------+
| CAN1 | on-chip | CAN controller |
+-----------+------------+-------------------------------------+

The default configuration can be found in the defconfig file:
:zephyr_file:`boards/fysetc/ucan/ucan_defconfig`.

Other hardware features are not currently supported by the port.

System Clock
============

The STM32F072CB PLL is driven by an external crystal oscillator (HSE) running at 8 MHz and
configured to provide a system clock of 48 MHz.

Programming and Debugging
*************************

Build and flash applications as usual (see :ref:`build_an_application` and
:ref:`application_run` for more details).

If flashing via USB DFU, short pins ``B0`` and ``3V3`` when applying power to the UCAN board in
order to enter the built-in DFU mode.

Here is an example for the :zephyr:code-sample:`blinky` application.

.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: ucan
:goals: flash

.. _UCAN website:
https://www.fysetc.com/products/fysetc-ucan-board

.. _UCAN wiki:
https://wiki.fysetc.com/UCAN/

.. _UCAN GitHub repository:
https://github.com/FYSETC/UCAN/
Binary file added boards/fysetc/ucan/doc/ucan.webp
Binary file not shown.
96 changes: 96 additions & 0 deletions boards/fysetc/ucan/ucan.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
/*
* Copyright (c) 2024 Henrik Brix Andersen <henrik@brixandersen.dk>
*
* SPDX-License-Identifier: Apache-2.0
*/

/dts-v1/;

#include <st/f0/stm32f072Xb.dtsi>
#include <st/f0/stm32f072c(8-b)tx-pinctrl.dtsi>

/ {
model = "FYSETC UCAN board";
compatible = "fysetc,ucan";

chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
zephyr,canbus = &can1;
};

aliases {
led0 = &led_rx;
led1 = &led_tx;
};

leds {
compatible = "gpio-leds";
led_rx: led_rx {
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
label = "LED RX";
};
led_tx: led_tx {
gpios = <&gpioa 1 GPIO_ACTIVE_HIGH>;
label = "LED TX";
};
};

transceiver0: can-phy0 {
compatible = "can-transceiver-gpio";
enable-gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
max-bitrate = <1000000>;
#phy-cells = <0>;
};
};

&clk_hse {
status = "okay";
clock-frequency = <DT_FREQ_M(8)>;
};

&pll {
prediv = <1>;
mul = <6>;
clocks = <&clk_hse>;
status = "okay";
};

&rcc {
clocks = <&pll>;
clock-frequency = <DT_FREQ_M(48)>;
ahb-prescaler = <1>;
apb1-prescaler = <1>;
};

zephyr_udc0: &usb {
pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>;
pinctrl-names = "default";
status = "okay";
};

&can1 {
pinctrl-0 = <&can_rx_pb8 &can_tx_pb9>;
pinctrl-names = "default";
phys = <&transceiver0>;
status = "okay";
};

&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 DT_SIZE_K(48)>;
read-only;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000c000 DT_SIZE_K(80)>;
};
};
};
15 changes: 15 additions & 0 deletions boards/fysetc/ucan/ucan.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
identifier: ucan
name: FYSETC UCAN
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
ram: 16
flash: 128
supported:
- can
- gpio
- usb_device
- usbd
vendor: fysetc
1 change: 1 addition & 0 deletions boards/fysetc/ucan/ucan_defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CONFIG_GPIO=y

0 comments on commit 6399813

Please sign in to comment.