From 23d8570953fb662f53a6e1030ff5377aec172460 Mon Sep 17 00:00:00 2001 From: Oleg Kokorin Date: Thu, 1 May 2025 20:06:25 +0200 Subject: [PATCH] boards: quail: MikroBUS boards: mikroe: Add quail board Signed-off-by: Oleg Kokorin --- boards/mikroe/quail/Kconfig.defconfig | 10 + boards/mikroe/quail/Kconfig.mikroe_quail | 5 + boards/mikroe/quail/board.cmake | 7 + boards/mikroe/quail/board.yml | 6 + boards/mikroe/quail/doc/img/mikroe_quail.webp | Bin 0 -> 59078 bytes boards/mikroe/quail/doc/mikroe_quail.rst | 99 ++++++++ boards/mikroe/quail/mikroe_quail.dts | 240 ++++++++++++++++++ boards/mikroe/quail/mikroe_quail.yaml | 17 ++ boards/mikroe/quail/mikroe_quail_defconfig | 11 + 9 files changed, 395 insertions(+) create mode 100644 boards/mikroe/quail/Kconfig.defconfig create mode 100644 boards/mikroe/quail/Kconfig.mikroe_quail create mode 100644 boards/mikroe/quail/board.cmake create mode 100644 boards/mikroe/quail/board.yml create mode 100644 boards/mikroe/quail/doc/img/mikroe_quail.webp create mode 100644 boards/mikroe/quail/doc/mikroe_quail.rst create mode 100644 boards/mikroe/quail/mikroe_quail.dts create mode 100644 boards/mikroe/quail/mikroe_quail.yaml create mode 100644 boards/mikroe/quail/mikroe_quail_defconfig diff --git a/boards/mikroe/quail/Kconfig.defconfig b/boards/mikroe/quail/Kconfig.defconfig new file mode 100644 index 000000000000..ea45af09da97 --- /dev/null +++ b/boards/mikroe/quail/Kconfig.defconfig @@ -0,0 +1,10 @@ +# MikroE Quail board configuration + +# Copyright (c) 2025 ThoseBoards +# SPDX-License-Identifier: Apache-2.0 + +source "boards/common/usb/Kconfig.cdc_acm_serial.defconfig" + +config SPI_STM32_INTERRUPT + default y + depends on SPI diff --git a/boards/mikroe/quail/Kconfig.mikroe_quail b/boards/mikroe/quail/Kconfig.mikroe_quail new file mode 100644 index 000000000000..f711abe5738e --- /dev/null +++ b/boards/mikroe/quail/Kconfig.mikroe_quail @@ -0,0 +1,5 @@ +# Copyright (c) 2025 ThoseBoards +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_MIKROE_QUAIL + select SOC_STM32F427XX diff --git a/boards/mikroe/quail/board.cmake b/boards/mikroe/quail/board.cmake new file mode 100644 index 000000000000..7718f87e84a9 --- /dev/null +++ b/boards/mikroe/quail/board.cmake @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse") +board_runner_args(jlink "--device=STM32F427VIT6" "--speed=4000") + +include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/mikroe/quail/board.yml b/boards/mikroe/quail/board.yml new file mode 100644 index 000000000000..b363f83059c7 --- /dev/null +++ b/boards/mikroe/quail/board.yml @@ -0,0 +1,6 @@ +board: + name: mikroe_quail + full_name: MikroE Quail + vendor: mikroe + socs: + - name: stm32f427xx diff --git a/boards/mikroe/quail/doc/img/mikroe_quail.webp b/boards/mikroe/quail/doc/img/mikroe_quail.webp new file mode 100644 index 0000000000000000000000000000000000000000..801b29d3a485bb4a9253be2b2d5e81c273cb9e55 GIT binary patch literal 59078 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 literal 0 HcmV?d00001 diff --git a/boards/mikroe/quail/doc/mikroe_quail.rst b/boards/mikroe/quail/doc/mikroe_quail.rst new file mode 100644 index 000000000000..66fbb7619828 --- /dev/null +++ b/boards/mikroe/quail/doc/mikroe_quail.rst @@ -0,0 +1,99 @@ +.. zephyr:board:: mikroe_quail + +Overview +******** +MikroE Quail for STM32 is a development board containing an `STM32F427`_ +microcontroller. It is equipped with four mikrobus sockets. +The edges of the board are lined with screw terminals and USB ports for +additional connectivity. + +Hardware +******** +The Quail board contains the following connections: + + - Four MikroBUS connectors + - lined with 32 screw terminals and USB ports for + +Furthermore the board contains three LEDs that are connected +to the microcontroller. + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Connections and IOs +=================== + +The four mikroBUS interfaces are aliased in the device tree so that their +peripherals can be accessed using ``mikrobus_N_INTERFACE`` so e.g. the spi on +bus 2 can be found by the alias ``mikrobus_2_spi``. The counting corresponds +with the marking on the board. + +For connections on the edge connectors, please refer to `Quail for STM32 User Manual`_. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Applications for the ``mikroe_quail`` board can be built and flashed in the usual way +(see :ref:`build_an_application` and :ref:`application_run` for more details). + + +Flashing +======== +The initial state of the board is set to lock. +When you flash, it will fail with the message: + +.. code-block:: console + + Error: stm32x device protected + +Unlocking with openocd makes it possible to flash. + +.. code-block:: console + + $ openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg \ + -f /usr/share/openocd/scripts/target/stm32f4x.cfg -c init\ + -c "reset halt" -c "stm32f4x unlock 0" -c "reset run" -c shutdown + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: mikroe_quail + :goals: build flash + +You should see the following message on the console: + +.. code-block:: console + + Hello World! mikroe_quail + + +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: mikroe_quail + :maybe-skip-config: + :goals: debug + +References +********** + +.. target-notes:: + +.. _Quail website: + https://www.mikroe.com/quail +.. _Quail for STM32 User Manual: + https://download.mikroe.com/documents/starter-boards/other/quail/quail-board-manual-v100.pdf +.. _STM32F427VIT6 Website: + https://www.st.com/en/microcontrollers-microprocessors/stm32f427vi.html +.. _STM32F427: + https://www.st.com/resource/en/datasheet/stm32f427vg.pdf diff --git a/boards/mikroe/quail/mikroe_quail.dts b/boards/mikroe/quail/mikroe_quail.dts new file mode 100644 index 000000000000..96666d430339 --- /dev/null +++ b/boards/mikroe/quail/mikroe_quail.dts @@ -0,0 +1,240 @@ +/* + * Copyright (c) 2025 ThoseBoards + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; +#include +#include +#include + +/ { + model = "MikroE Quail for STM32"; + compatible = "mikroe,stm32-e427", "st,stm32f427"; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,flash-controller = &flash1; + zephyr,ccm = &ccm0; + }; + + leds { + compatible = "gpio-leds"; + + ld1: led_1 { + gpios = <&gpioe 15 GPIO_ACTIVE_HIGH>; + label = "User LD1"; + }; + + ld2: led_2 { + gpios = <&gpioe 10 GPIO_ACTIVE_HIGH>; + label = "User LD2"; + }; + + ld3: led_3 { + gpios = <&gpioc 3 GPIO_ACTIVE_HIGH>; + label = "User LD3"; + }; + }; + + zephyr,user { + io-channels = <&adc1 0>, <&adc1 1>, <&adc2 0>, <&adc2 1>; + }; + + aliases { + led0 = &ld1; + led1 = &ld2; + led2 = &ld3; + volt-sensor0 = &vref; + volt-sensor1 = &vbat; + }; + + skd1: socket_1_adc { + status = "okay"; + io-channels = <&adc2 0>; + }; + + skd2: socket_2_adc { + status = "okay"; + io-channels = <&adc1 0>; + }; + + skd3: socket_3_adc { + status = "okay"; + io-channels = <&adc2 1>; + }; + + skd4: socket_4_adc { + status = "okay"; + io-channels = <&adc1 1>; + }; +}; + +&clk_lsi { + status = "okay"; +}; + +&clk_hsi { + clock-frequency = ; + status = "okay"; +}; + +&pll { + div-m = <8>; + mul-n = <96>; + div-p = <2>; + div-q = <4>; + clocks = <&clk_hsi>; + status = "okay"; +}; + +&rcc { + clocks = <&pll>; + clock-frequency = ; + ahb-prescaler = <1>; + apb1-prescaler = <4>; + apb2-prescaler = <2>; +}; + +&usart1 { + pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart2 { + pinctrl-0 = <&usart2_tx_pd5 &usart2_rx_pd6>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart3 { + pinctrl-0 = <&usart3_tx_pd8 &usart3_rx_pd9>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&usart6 { + pinctrl-0 = <&usart6_tx_pc6 &usart6_rx_pc7>; + pinctrl-names = "default"; + current-speed = <115200>; + status = "okay"; +}; + +&rtc { + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>, + <&rcc STM32_SRC_LSI RTC_SEL(2)>; + status = "okay"; +}; + +zephyr_udc0: &usbotg_fs { + pinctrl-0 = <&usb_otg_fs_dm_pa11 &usb_otg_fs_dp_pa12>; + pinctrl-names = "default"; + status = "okay"; +}; + +#include <../boards/common/usb/cdc_acm_serial.dtsi> + +&spi1 { + pinctrl-0 = <&spi1_sck_pb3 &spi1_miso_pb4 &spi1_mosi_pb5>; + pinctrl-names = "default"; + cs-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>, <&gpioe 0 GPIO_ACTIVE_LOW>; + status = "okay"; +}; + +&spi3 { + status = "okay"; + pinctrl-0 = <&spi3_sck_pc10 &spi3_miso_pc11 &spi3_mosi_pc12>; + pinctrl-names = "default"; + + cs-gpios = + <&gpiod 11 GPIO_ACTIVE_LOW>, // CS0 + <&gpiod 1 GPIO_ACTIVE_LOW>, // CS1 + <&gpioa 13 GPIO_ACTIVE_LOW>; // CS2 +}; + +/* Flash chip 1 (extra flash connected to CS2) */ +&spi3 { + flash1: flash@2 { + compatible = "jedec,spi-nor"; // Typical flash chip compatibility string + reg = <2>; // The CS0 pin on the SPI bus + // S25FL164K flash's actual JEDEC: Device ID = 16h, Device Type = 40h, + // Capacity = 17h + //jedec-id = [16 40 17]; + jedec-id = [01 60 17]; + spi-max-frequency = <50000000>; // Max frequency for the flash chip (e.g., 50 MHz) + size = <0x800000>; // Flash memory size (16MB example) + page-size = <256>; // Flash page size (usually 256 or 512 bytes) + //sector-size = <4096>; // Flash sector size (4KB typically) + //erase-block-size = <4096>; // Erase block size (typically 4KB) + //label = "flash1"; + status = "okay"; + }; +}; + +&i2c1 { + pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>; + pinctrl-names = "default"; + status = "okay"; +}; + +&adc1 { + status ="okay"; + pinctrl-0 = <&adc1_in4_pa4 &adc1_in5_pa5>; + pinctrl-names = "default"; + st,adc-clock-source = "SYNC"; + st,adc-prescaler = <2>; +}; + +&adc2 { + status ="okay"; + pinctrl-0 = <&adc2_in6_pa6 &adc2_in7_pa7>; + pinctrl-names = "default"; + st,adc-clock-source = "SYNC"; + st,adc-prescaler = <2>; +}; + +&vref { + status = "okay"; +}; + +&vbat { + status = "okay"; +}; + +mikrobus_1_adc: &skd1 {}; + +mikrobus_1_i2c: &i2c1 {}; + +mikrobus_1_spi: &spi1 {}; + +mikrobus_1_uart: &usart3 {}; + +mikrobus_2_adc: &skd2 {}; + +mikrobus_2_i2c: &i2c1 {}; + +mikrobus_2_spi: &spi1 {}; + +mikrobus_2_uart: &usart2 {}; + +mikrobus_3_adc: &skd3 {}; + +mikrobus_3_i2c: &i2c1 {}; + +mikrobus_3_spi: &spi3 {}; + +mikrobus_3_uart: &usart6 {}; + +mikrobus_4_adc: &skd4 {}; + +mikrobus_4_i2c: &i2c1 {}; + +mikrobus_4_spi: &spi3 {}; + +mikrobus_4_uart: &usart1 {}; diff --git a/boards/mikroe/quail/mikroe_quail.yaml b/boards/mikroe/quail/mikroe_quail.yaml new file mode 100644 index 000000000000..f114861f6bc7 --- /dev/null +++ b/boards/mikroe/quail/mikroe_quail.yaml @@ -0,0 +1,17 @@ +identifier: mikroe_quail +name: MikroE Quail for STM32 +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb +ram: 256 +flash: 2048 +supported: + - spi + - i2c + - uart + - adc + - gpio + - flash +vendor: mikroe diff --git a/boards/mikroe/quail/mikroe_quail_defconfig b/boards/mikroe/quail/mikroe_quail_defconfig new file mode 100644 index 000000000000..e5819cf79508 --- /dev/null +++ b/boards/mikroe/quail/mikroe_quail_defconfig @@ -0,0 +1,11 @@ +# Enable MPU +CONFIG_ARM_MPU=y + +CONFIG_SERIAL=y + +# Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +# Enable GPIO +CONFIG_GPIO=y