boards: makerbase: mks_canable_v20: add new board MKS CANable V2.0
A cheap and affordable stm32g4 based simple CAN and CAN-FD to usb adapter board Signed-off-by: Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
This commit is contained in:
parent
4212b52b46
commit
e642b3bfe4
10 changed files with 310 additions and 0 deletions
10
boards/makerbase/index.rst
Normal file
10
boards/makerbase/index.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
.. _boards-makerbase:
|
||||
|
||||
Makerbase
|
||||
#########
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:glob:
|
||||
|
||||
**/*
|
||||
5
boards/makerbase/mks_canable_v20/Kconfig.mks_canable_v20
Normal file
5
boards/makerbase/mks_canable_v20/Kconfig.mks_canable_v20
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) 2024 Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_MKS_CANABLE_V20
|
||||
select SOC_STM32G431XX
|
||||
6
boards/makerbase/mks_canable_v20/board.cmake
Normal file
6
boards/makerbase/mks_canable_v20/board.cmake
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# Copyright (c) 2024 Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_runner_args(openocd "--config=${BOARD_DIR}/support/openocd.cfg")
|
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
|
||||
6
boards/makerbase/mks_canable_v20/board.yml
Normal file
6
boards/makerbase/mks_canable_v20/board.yml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
board:
|
||||
name: mks_canable_v20
|
||||
full_name: MKS CANable V2.0
|
||||
vendor: makerbase
|
||||
socs:
|
||||
- name: stm32g431xx
|
||||
BIN
boards/makerbase/mks_canable_v20/doc/img/mks_canable_v20.webp
Normal file
BIN
boards/makerbase/mks_canable_v20/doc/img/mks_canable_v20.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
170
boards/makerbase/mks_canable_v20/doc/index.rst
Normal file
170
boards/makerbase/mks_canable_v20/doc/index.rst
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
.. zephyr:board:: mks_canable_v20
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The Makerbase MKS CANable V2.0 board features an ARM Cortex-M4 based STM32G431C8 MCU
|
||||
with a CAN, USB and debugger connections.
|
||||
Here are some highlights of the MKS CANable V2.0 board:
|
||||
|
||||
- STM32 microcontroller in LQFP48 package
|
||||
- USB Type-C connector (J1)
|
||||
- CAN-Bus connector (J2)
|
||||
- ST-LINK/V3E debugger/programmer header (J4)
|
||||
- USB VBUS power supply (5 V)
|
||||
- Three LEDs: red/power_led (D1), blue/stat_led (D2), green/word_led (D3)
|
||||
- One push-button for RESET
|
||||
- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell.
|
||||
|
||||
The LED red/power_led (D1) is connected directly to on-board 3.3 V and not controllable by the MCU.
|
||||
|
||||
More information about the board can be found at the `MKS CANable V2.0 website`_.
|
||||
It is very advisable to take a look in on user manual `MKS CANable V2.0 User Manual`_ and
|
||||
schematic `MKS CANable V2.0 schematic`_ before start.
|
||||
|
||||
More information about STM32G431KB can be found here:
|
||||
|
||||
- `STM32G431C8 on www.st.com`_
|
||||
- `STM32G4 reference manual`_
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The Zephyr ``mks_canable_v20`` board target supports the following hardware features:
|
||||
|
||||
+-----------+------------+-------------------------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+=====================================+
|
||||
| NVIC | on-chip | nested vector interrupt controller |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| USB | on-chip | universal-serial-bus |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| PINMUX | on-chip | pinmux |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| GPIO | on-chip | gpio |
|
||||
+-----------+------------+-------------------------------------+
|
||||
| FDCAN | on-chip | can |
|
||||
+-----------+------------+-------------------------------------+
|
||||
|
||||
Other hardware features are not yet supported on this Zephyr port.
|
||||
|
||||
The default configuration can be found in the defconfig file:
|
||||
:zephyr_file:`boards/makerbase/mks_canable_v20/mks_canable_v20_defconfig`
|
||||
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
Default Zephyr Peripheral Mapping:
|
||||
----------------------------------
|
||||
|
||||
.. rst-class:: rst-columns
|
||||
|
||||
- CAN_RX/BOOT0 : PB8
|
||||
- CAN_TX : PB9
|
||||
- D2 : PA15
|
||||
- D3 : PA0
|
||||
- USB_DN : PA11
|
||||
- USB_DP : PA12
|
||||
- SWDIO : PA13
|
||||
- SWCLK : PA14
|
||||
- NRST : PG10
|
||||
|
||||
For more details please refer to `MKS CANable V2.0 schematic`_.
|
||||
|
||||
System Clock
|
||||
------------
|
||||
|
||||
The MKS CANable V2.0 system clock is driven by internal high speed oscillator.
|
||||
By default system clock is driven by PLL clock at 160 MHz,
|
||||
the PLL is driven by the 16 MHz high speed internal oscillator.
|
||||
|
||||
The FDCAN1 peripheral is driven by PLLQ, which has 80 MHz frequency.
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
MKS CANable V2.0 board includes an SWDIO debug connector header J4.
|
||||
|
||||
.. note::
|
||||
|
||||
The debugger is not the part of the board!
|
||||
|
||||
Applications for the ``mks_canable_v20`` board target can be built and
|
||||
flashed in the usual way (see :ref:`build_an_application` and
|
||||
:ref:`application_run` for more details).
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
The board could be flashed using west.
|
||||
|
||||
Flashing an application to MKS CANable V2.0
|
||||
-------------------------------------------
|
||||
|
||||
The debugger shall be wired to MKS CANable V2.0 board's J4 connector
|
||||
according `MKS CANable V2.0 schematic`_.
|
||||
|
||||
Build and flash an application. Here is an example for
|
||||
:zephyr:code-sample:`hello_world`.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: mks_canable_v20
|
||||
:goals: build flash
|
||||
:west-args: -S rtt-console
|
||||
:compact:
|
||||
|
||||
The argument ``-S rtt-console`` is needed for debug purposes with SEGGER RTT protocol.
|
||||
This option is optional and may be omitted. Omitting it frees up RAM space but prevents RTT usage.
|
||||
|
||||
If option ``-S rtt-console`` is selected, the connection to the target can be established as follows:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ telnet localhost 9090
|
||||
|
||||
You should see the following message on the console:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ Hello World! mks_canable_v20/stm32g431xx
|
||||
|
||||
.. note::
|
||||
|
||||
Current OpenOCD config will skip Segger RTT for OpenOCD under 0.12.0.
|
||||
|
||||
Debugging
|
||||
=========
|
||||
|
||||
You can debug an application in the usual way. Here is an example for the
|
||||
:zephyr:code-sample:`hello_world` application.
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/hello_world
|
||||
:board: mks_canable_v20
|
||||
:maybe-skip-config:
|
||||
:goals: debug
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _MKS CANable V2.0 website:
|
||||
https://github.com/makerbase-mks/CANable-MKS
|
||||
|
||||
.. _MKS CANable V2.0 User Manual:
|
||||
https://github.com/makerbase-mks/CANable-MKS/blob/main/User%20Manual/CANable%20V2.0/Makerbase%20CANable%20V2.0%20Use%20Manual.pdf
|
||||
|
||||
.. _MKS CANable V2.0 schematic:
|
||||
https://github.com/makerbase-mks/CANable-MKS/blob/main/Hardware/MKS%20CANable%20V2.0/MKS%20CANable%20V2.0_001%20schematic.pdf
|
||||
|
||||
.. _STM32G431C8 on www.st.com:
|
||||
https://www.st.com/en/microcontrollers-microprocessors/stm32g431c8.html
|
||||
|
||||
.. _STM32G4 reference manual:
|
||||
https://www.st.com/resource/en/reference_manual/rm0440-stm32g4-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
|
||||
|
||||
.. _STM32CubeProgrammer:
|
||||
https://www.st.com/en/development-tools/stm32cubeprog.html
|
||||
87
boards/makerbase/mks_canable_v20/mks_canable_v20.dts
Normal file
87
boards/makerbase/mks_canable_v20/mks_canable_v20.dts
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright (c) 2024 Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <st/g4/stm32g431X8.dtsi>
|
||||
#include <st/g4/stm32g431c(6-8-b)tx-pinctrl.dtsi>
|
||||
|
||||
/ {
|
||||
model = "Makerbase MKS CANable V2.0";
|
||||
compatible = "makerbase,mks-canable-v20";
|
||||
|
||||
chosen {
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,canbus = &fdcan1;
|
||||
};
|
||||
|
||||
aliases {
|
||||
led0 = &blue_led;
|
||||
led1 = &green_led;
|
||||
};
|
||||
|
||||
leds: leds {
|
||||
compatible = "gpio-leds";
|
||||
blue_led: led_2 {
|
||||
gpios = <&gpioa 15 GPIO_ACTIVE_LOW>;
|
||||
label = "blue-status D2";
|
||||
};
|
||||
green_led: led_3 {
|
||||
gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
|
||||
label = "green-word D3";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&clk_hsi {
|
||||
/* Internal 16 MHz clock used to drive PLL */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&clk_hsi48 {
|
||||
/* Internal 48 MHz clock used to drive USB */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* Adjust the pll for a SYSTEM Clock of 160 MHz */
|
||||
&pll {
|
||||
div-m = <4>;
|
||||
mul-n = <80>;
|
||||
div-p = <2>;
|
||||
div-q = <4>;
|
||||
div-r = <2>;
|
||||
clocks = <&clk_hsi>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rcc {
|
||||
clocks = <&pll>;
|
||||
clock-frequency = <DT_FREQ_M(160)>;
|
||||
ahb-prescaler = <1>;
|
||||
apb1-prescaler = <1>;
|
||||
apb2-prescaler = <1>;
|
||||
};
|
||||
|
||||
stm32_lp_tick_source: &lptim1 {
|
||||
clocks = <&rcc STM32_CLOCK_BUS_APB1 0x80000000>,
|
||||
<&rcc STM32_SRC_LSE LPTIM1_SEL(3)>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
zephyr_udc0: &usb {
|
||||
pinctrl-0 = <&usb_dm_pa11 &usb_dp_pa12>;
|
||||
pinctrl-names = "default";
|
||||
clocks = <&rcc STM32_CLOCK(APB1, 23U)>,
|
||||
<&rcc STM32_SRC_HSI48 CLK48_SEL(0)>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&fdcan1 {
|
||||
pinctrl-0 = <&fdcan1_rx_pb8 &fdcan1_tx_pb9>;
|
||||
pinctrl-names = "default";
|
||||
clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00001000>,
|
||||
<&rcc STM32_SRC_PLL_Q FDCAN_SEL(1)>;
|
||||
status = "okay";
|
||||
};
|
||||
16
boards/makerbase/mks_canable_v20/mks_canable_v20.yaml
Normal file
16
boards/makerbase/mks_canable_v20/mks_canable_v20.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
identifier: mks_canable_v20
|
||||
name: MKS CANable V2.0
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
ram: 32
|
||||
flash: 64
|
||||
supported:
|
||||
- can
|
||||
- counter
|
||||
- gpio
|
||||
- usb_device
|
||||
- usbd
|
||||
vendor: makerbase
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) 2024 Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_GPIO=y
|
||||
CONFIG_ARM_MPU=y
|
||||
5
boards/makerbase/mks_canable_v20/support/openocd.cfg
Normal file
5
boards/makerbase/mks_canable_v20/support/openocd.cfg
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
# Copyright (c) 2024 Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
source [find interface/stlink.cfg]
|
||||
source [find target/stm32g4x.cfg]
|
||||
Loading…
Reference in a new issue