From 7b4938122707ce031823b994c82a74a94e3dbce2 Mon Sep 17 00:00:00 2001 From: Ishraq Ibne Ashraf Date: Sun, 29 Jun 2025 21:52:27 +0200 Subject: [PATCH] boards: nxp: frdm_k32l2b3: Add initial support Adding initial support for NXP FRDM K32L2B3 board. Signed-off-by: Ishraq Ibne Ashraf dts: arm: nxp: Fix SRAM node name Fix address part of the SRAM node name. Change the SRAM start address definition to lower case hexadecimal to be consistent. Signed-off-by: Ishraq Ibne Ashraf --- boards/nxp/frdm_k32l2b3/Kconfig.frdm_k32l2b3 | 9 + boards/nxp/frdm_k32l2b3/board.cmake | 11 ++ boards/nxp/frdm_k32l2b3/board.yml | 6 + boards/nxp/frdm_k32l2b3/doc/frdm_k32l2b3.webp | Bin 0 -> 55924 bytes boards/nxp/frdm_k32l2b3/doc/index.rst | 178 ++++++++++++++++++ .../frdm_k32l2b3/frdm_k32l2b3-pinctrl.dtsi | 30 +++ boards/nxp/frdm_k32l2b3/frdm_k32l2b3.dts | 121 ++++++++++++ boards/nxp/frdm_k32l2b3/frdm_k32l2b3.yaml | 25 +++ .../nxp/frdm_k32l2b3/frdm_k32l2b3_defconfig | 10 + dts/arm/nxp/nxp_k32l2b3.dtsi | 4 +- 10 files changed, 392 insertions(+), 2 deletions(-) create mode 100644 boards/nxp/frdm_k32l2b3/Kconfig.frdm_k32l2b3 create mode 100644 boards/nxp/frdm_k32l2b3/board.cmake create mode 100644 boards/nxp/frdm_k32l2b3/board.yml create mode 100644 boards/nxp/frdm_k32l2b3/doc/frdm_k32l2b3.webp create mode 100644 boards/nxp/frdm_k32l2b3/doc/index.rst create mode 100644 boards/nxp/frdm_k32l2b3/frdm_k32l2b3-pinctrl.dtsi create mode 100644 boards/nxp/frdm_k32l2b3/frdm_k32l2b3.dts create mode 100644 boards/nxp/frdm_k32l2b3/frdm_k32l2b3.yaml create mode 100644 boards/nxp/frdm_k32l2b3/frdm_k32l2b3_defconfig diff --git a/boards/nxp/frdm_k32l2b3/Kconfig.frdm_k32l2b3 b/boards/nxp/frdm_k32l2b3/Kconfig.frdm_k32l2b3 new file mode 100644 index 00000000000..5618a43edf9 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/Kconfig.frdm_k32l2b3 @@ -0,0 +1,9 @@ +# +# Copyright (c) 2025 Ishraq Ibne Ashraf +# +# SPDX-License-Identifier: Apache-2.0 +# + +config BOARD_FRDM_K32L2B3 + select SOC_K32L2B31A + select SOC_PART_NUMBER_K32L2B31VLH0A diff --git a/boards/nxp/frdm_k32l2b3/board.cmake b/boards/nxp/frdm_k32l2b3/board.cmake new file mode 100644 index 00000000000..314fac15850 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/board.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) 2025 Ishraq Ibne Ashraf +# +# SPDX-License-Identifier: Apache-2.0 +# + +board_runner_args(linkserver "--device=K32L2B31A:FRDM-K32L2B") +board_runner_args(pyocd "--target=k32l2b3") + +include(${ZEPHYR_BASE}/boards/common/linkserver.board.cmake) +include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) diff --git a/boards/nxp/frdm_k32l2b3/board.yml b/boards/nxp/frdm_k32l2b3/board.yml new file mode 100644 index 00000000000..b972cebef63 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/board.yml @@ -0,0 +1,6 @@ +board: + name: frdm_k32l2b3 + full_name: FRDM-K32L2B3 + vendor: nxp + socs: + - name: k32l2b31a diff --git a/boards/nxp/frdm_k32l2b3/doc/frdm_k32l2b3.webp b/boards/nxp/frdm_k32l2b3/doc/frdm_k32l2b3.webp new file mode 100644 index 0000000000000000000000000000000000000000..fa1ee57a7b0145a08bc07386cb4e5b904d8eb517 GIT binary patch literal 55924 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 WXM_L%0000000000000000000noQeDZ literal 0 HcmV?d00001 diff --git a/boards/nxp/frdm_k32l2b3/doc/index.rst b/boards/nxp/frdm_k32l2b3/doc/index.rst new file mode 100644 index 00000000000..30307e325c8 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/doc/index.rst @@ -0,0 +1,178 @@ +.. zephyr:board:: frdm_k32l2b3 + +Overview +******** + +The FRDM-K32L2B3 FRDM development board provides a platform for evaluation and +development of the K32 L2B SoC Family. The board provides easy Access to K32 L2B +SoC I/O. + +Hardware +******** + +- K32L2B31VLH0A SoC running at up to 48 MHz, 256 kB flash memory, 32 kB SRAM memory. +- Full-speed USB port with micro A/B connector for device functionality. +- NXP FXOS8700CQ digital sensor, 3D accelerometer (±2g/±4g/±8g) + 3D magnetometer. +- On-board segment LCD. +- Form factor compatible with Arduino® Rev3 pin layout. +- OpenSDA debug interface. + +For more information about the K32L2B31VLH0A SoC and FRDM-K32L2B3 board: + +- `FRDM-KL32L2B3 Website`_ +- `KL32-L2 Website`_ + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Connections and IOs +=================== + +The K32L2B31VLH0A SoC has five pairs of pinmux/gpio controllers, and all are currently +enabled (PORTA/GPIOA, PORTB/GPIOB, PORTC/GPIOC, PORTD/GPIOD, and PORTE/GPIOE) for the +FRDM-K32L2B3 board. + ++-------+-------------+---------------------------+ +| Name | Function | Usage | ++=======+=============+===========================+ +| PTD5 | GPIO | Green LED | ++-------+-------------+---------------------------+ +| PTE31 | GPIO | Red LED | ++-------+-------------+---------------------------+ +| PTA4 | GPIO | User Button 1 (SW1) | ++-------+-------------+---------------------------+ +| PTC3 | GPIO | User Button 2 (SW2) | ++-------+-------------+---------------------------+ +| PTA1 | LPUART0_RX | UART Console | ++-------+-------------+---------------------------+ +| PTA2 | LPUART0_TX | UART Console | ++-------+-------------+---------------------------+ +| PTE24 | I2C0_SCL | I2C Accelerometer | ++-------+-------------+---------------------------+ +| PTE25 | I2C0_SDA | I2C Accelerometer | ++-------+-------------+---------------------------+ + +System Clock +============ + +The K32L2B31VLH0A SoC is configured to use the 32.768 kHz external +oscillator on the board to generate a 48 MHz system clock. + +Serial Port +=========== + +The K32L2B31VLH0A LPUART0 is used for the console. + +Programming and Debugging +************************* + +.. zephyr:board-supported-runners:: + +Build and flash applications as usual (see :ref:`build_an_application` and +:ref:`application_run` for more details). + +Configuring a Debug Probe +========================= + +A debug probe is used for both flashing and debugging the board. This board is +configured by default to use the :ref:`opensda-daplink-onboard-debug-probe`. + +For more information about OpenSDA and firmware applications check `OpenSDA FRDM-K32L2B3`_. + +Using LinkServer +---------------- + +Install the :ref:`linkserver-debug-host-tools` and make sure they are in your +search path. LinkServer works with the CMSIS-DAP firmware. Please follow the +instructions on :ref:`opensda-daplink-onboard-debug-probe` and select the latest +revision of the firmware image. + +LinkServer is the default for this board, ``west flash`` and ``west debug`` will +call the linkserver runner. + +.. code-block:: console + + west flash + west debug + +Using pyOCD +----------- + +Install the :ref:`pyocd-debug-host-tools` and make sure they are in your search +path. pyOCD works with the CMSIS-DAP firmware. + +Add the arguments ``-DBOARD_FLASH_RUNNER=pyocd`` and +``-DBOARD_DEBUG_RUNNER=pyocd`` when you invoke ``west build`` to override the +default runner from linkserver to pyocd: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: frdm_k32l2b3 + :gen-args: -DBOARD_FLASH_RUNNER=pyocd -DBOARD_DEBUG_RUNNER=pyocd + :goals: build + +Configuring a Console +===================== + +Regardless of your choice in debug probe, we will use the OpenSDA +microcontroller as a usb-to-serial adapter for the serial console. + +Connect a USB cable from your PC to J13. + +Use the following settings with your serial terminal of choice +(minicom, putty, etc.): + +- Speed: 115200 +- Data: 8 bits +- Parity: None +- Stop bits: 1 + +Flashing +======== + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: frdm_k32l2b3 + :goals: flash + +Open a serial terminal, reset the board (press the SW2 button), and you should +see the following message in the terminal: + +.. code-block:: console + + *** Booting Zephyr OS build v4.1.0-7032-g3198db1b1229 *** + Hello World! frdm_k32l2b3/k32l2b31a + +Debugging +========= + +Here is an example for the :zephyr:code-sample:`hello_world` application. + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: frdm_k32l2b3 + :goals: debug + +Open a serial terminal, step through the application in your debugger, and you +should see the following message in the terminal: + +.. code-block:: console + + *** Booting Zephyr OS build v4.1.0-7032-g3198db1b1229 *** + Hello World! frdm_k32l2b3/k32l2b31a + +.. include:: ../../common/board-footer.rst + :start-after: nxp-board-footer + +.. _KL32-L2 Website: + https://www.nxp.com/products/K32-L2 + +.. _FRDM-KL32L2B3 Website: + https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/nxp-frdm-development-platform-for-k32-l2b-mcus:FRDM-K32L2B3 + +.. _OpenSDA FRDM-K32L2B3: + https://www.nxp.com/design/design-center/development-boards-and-designs/OPENSDA#FRDM-K32L2B3 diff --git a/boards/nxp/frdm_k32l2b3/frdm_k32l2b3-pinctrl.dtsi b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3-pinctrl.dtsi new file mode 100644 index 00000000000..61778ea31ab --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3-pinctrl.dtsi @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2025 Ishraq Ibne Ashraf + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + lpuart0_default: lpuart0_default { + group0 { + pinmux = + , + ; + slew-rate = "slow"; + drive-strength = "low"; + }; + }; + + i2c0_default: i2c0_default { + group0 { + pinmux = + , + ; + bias-pull-up; + slew-rate = "fast"; + drive-strength = "low"; + }; + }; +}; diff --git a/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.dts b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.dts new file mode 100644 index 00000000000..7db15c8f12f --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.dts @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2025 Ishraq Ibne Ashraf + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include + +#include "frdm_k32l2b3-pinctrl.dtsi" + +/ { + model = "NXP FRDM-K32L2B3 board"; + compatible = "nxp,k32l2b3", "nxp,k32lx"; + + aliases { + led0 = &led_green; + led1 = &led_red; + sw0 = &sw_1; + sw1 = &sw_3; + magn0 = &fxos8700; + accel0 = &fxos8700; + }; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &lpuart0; + zephyr,shell-uart = &lpuart0; + }; + + leds { + compatible = "gpio-leds"; + + led_green: led_1 { + label = "Green LED"; + gpios = <&gpiod 5 GPIO_ACTIVE_LOW>; + }; + + led_red: led_2 { + label = "Red LED"; + gpios = <&gpioe 31 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + + sw_1: button_1 { + label = "User Button 1 (SW1)"; + zephyr,code = ; + gpios = <&gpioa 4 GPIO_ACTIVE_LOW>; + }; + + sw_3: button_2 { + label = "User Button 2 (SW3)"; + zephyr,code = ; + gpios = <&gpioc 3 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&cpu0 { + clock-frequency = <48000000>; +}; + +&sim { + er32k-select = ; + pllfll-select = ; +}; + +&osc { + mode = "low-power"; + clock-frequency = <32768>; +}; + +&ftfa { + status = "okay"; +}; + +&gpioa { + status = "okay"; +}; + +&gpiob { + status = "okay"; +}; + +&gpioc { + status = "okay"; +}; + +&gpiod { + status = "okay"; +}; + +&gpioe { + status = "okay"; +}; + +&lpuart0 { + status = "okay"; + current-speed = <115200>; + pinctrl-0 = <&lpuart0_default>; + pinctrl-names = "default"; +}; + +&i2c0 { + status = "okay"; + pinctrl-0 = <&i2c0_default>; + pinctrl-names = "default"; + + fxos8700: fxos8700@1c { + compatible = "nxp,fxos8700"; + reg = <0x1c>; + int1-gpios = <&gpiod 1 GPIO_ACTIVE_LOW>; + reset-gpios = <&gpioe 1 GPIO_ACTIVE_HIGH>; + }; +}; diff --git a/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.yaml b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.yaml new file mode 100644 index 00000000000..4a133a43d36 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3.yaml @@ -0,0 +1,25 @@ +# +# Copyright (c) 2025 Ishraq Ibne Ashraf +# +# SPDX-License-Identifier: Apache-2.0 +# + +identifier: frdm_k32l2b3 +name: NXP FRDM-K32L2B3 +type: mcu +arch: arm +ram: 32 +flash: 256 +toolchain: + - zephyr + - gnuarmemb +supported: + - led + - i2c + - gpio + - sram + - flash + - lpuart + - button + - pinctrl +vendor: nxp diff --git a/boards/nxp/frdm_k32l2b3/frdm_k32l2b3_defconfig b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3_defconfig new file mode 100644 index 00000000000..0aff032ec37 --- /dev/null +++ b/boards/nxp/frdm_k32l2b3/frdm_k32l2b3_defconfig @@ -0,0 +1,10 @@ +# +# Copyright (c) 2025 Ishraq Ibne Ashraf +# +# SPDX-License-Identifier: Apache-2.0 +# + +CONFIG_GPIO=y +CONFIG_SERIAL=y +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y diff --git a/dts/arm/nxp/nxp_k32l2b3.dtsi b/dts/arm/nxp/nxp_k32l2b3.dtsi index a6d604a0fae..01c6adf31db 100644 --- a/dts/arm/nxp/nxp_k32l2b3.dtsi +++ b/dts/arm/nxp/nxp_k32l2b3.dtsi @@ -29,7 +29,7 @@ }; }; - sram0: memory@1FFFF000 { + sram0: memory@1fffe000 { compatible = "mmio-sram"; }; @@ -329,7 +329,7 @@ }; &sram0 { - reg = <0x1FFFE000 DT_SIZE_K(32)>; + reg = <0x1fffe000 DT_SIZE_K(32)>; }; &flash0 {