diff --git a/boards/ti/lp_mspm0g3507/Kconfig.lp_mspm0g3507 b/boards/ti/lp_mspm0g3507/Kconfig.lp_mspm0g3507 new file mode 100644 index 00000000000..18756994471 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/Kconfig.lp_mspm0g3507 @@ -0,0 +1,5 @@ +# Copyright (c) 2025 Texas Instruments +# SPDX-License-Identifier: Apache-2.0 + +config BOARD_LP_MSPM0G3507 + select SOC_MSPM0G3507 diff --git a/boards/ti/lp_mspm0g3507/board.cmake b/boards/ti/lp_mspm0g3507/board.cmake new file mode 100644 index 00000000000..2b2b64ba4f7 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/board.cmake @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: Apache-2.0 + +board_runner_args(jlink "--device=MSPM0G3507" "--speed=4000") +include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake) +include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/ti/lp_mspm0g3507/board.yml b/boards/ti/lp_mspm0g3507/board.yml new file mode 100644 index 00000000000..f2763be9b23 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/board.yml @@ -0,0 +1,6 @@ +board: + name: lp_mspm0g3507 + full_name: MSPM0G3507 Launchpad + vendor: ti + socs: + - name: mspm0g3507 diff --git a/boards/ti/lp_mspm0g3507/doc/img/lp_mspm0g3507.webp b/boards/ti/lp_mspm0g3507/doc/img/lp_mspm0g3507.webp new file mode 100644 index 00000000000..dba82b8bb91 Binary files /dev/null and b/boards/ti/lp_mspm0g3507/doc/img/lp_mspm0g3507.webp differ diff --git a/boards/ti/lp_mspm0g3507/doc/index.rst b/boards/ti/lp_mspm0g3507/doc/index.rst new file mode 100644 index 00000000000..db58807f21b --- /dev/null +++ b/boards/ti/lp_mspm0g3507/doc/index.rst @@ -0,0 +1,160 @@ +.. zephyr:board:: lp_mspm0g3507 + +Overview +******** + +MSPM0G350x microcontrollers (MCUs) are part of the MSP highly integrated, ultra-low-power 32-bit MCU +family based on the enhanced Arm® Cortex®-M0+ 32-bit core platform operating at up to 80-MHz frequency. +These cost-optimized MCUs offer high-performance analog peripheral integration, support extended temperature +ranges from -40°C to 125°C, and operate with supply voltages ranging from 1.62 V to 3.6 V. + +The MSPM0G350x devices provide up to 128KB embedded flash program memory with built-in error correction +code (ECC) and up to 32KB SRAM with a hardware parity option. These MCUs also incorporate a +memory protection unit, 7-channel DMA, math accelerator, and a variety of peripherals including + +* Analog. + + * Two 12-bit 4-Msps ADCs. + + * Configurable internal shared voltage reference. + + * One 12-bit 1-Msps DAC. + + * Three high speed comparators with built-in reference DACs. + + * Two zero-drift zero-crossover op-amps with programmable gain. + +* Digital. + + * Two 16-bit advanced control timers. + + * Five general-purpose timers. + + * One 16-bit general-purpose timer for QEI interface. + + * One 32-bit high resolution general-purpose timer. + + * Two 16-bit timers with deadband support and up to 12 PWM Channels. + + * Two windowed-watchdog timers. + + * One RTC with alarm and calendar modes. + +* Data Integrity and Encryption. + + * One AES HW accelerator capable of CTR, CBC, and ECB modes. + + * One Cyclic Redundancy Check (CRC) accelerator. + + * One True Random Number Generator (TRNG). + +* Communication. + + * Four UARTs, one with support for advanced modes such as LIN and Manchester. + + * Two I2C supporting SMBUS/PMBUS and speeds up to FM+ (1Mbits/s). + + * Two SPI, one with max speed 32Mbits/s. + + * One CAN interface supporting CAN 2.0 A or B and CAN-FD. + +.. image:: img/lp_mspm0g3507.webp + :align: center + :alt: MSPM0G3507 LaunchPad development board + +Zephyr uses the ``lp_mspm0g3507`` board for building LP_MSPM0G3507 + +Features: +********* + +- Onboard XDS110 debug probe +- EnergyTrace technology available for ultra-low-power debugging +- 2 buttons, 1 LED and 1 RGB LED for user interaction +- Temperature sensor circuit +- Light sensor circuit +- External OPA2365 (default buffer mode) for ADC (up to 4 Msps) evaluation +- Onboard 32.768-kHz and 40-MHz crystals +- RC filter for ADC input (unpopulated by default) + +Details on the MSPM0G3507 LaunchPad can be found on the `TI LP_MSPM0G3507 Product Page`_. + +Supported Features +================== + +.. zephyr:board-supported-hw:: + +Building and Flashing +********************* + +Building +======== + +Follow the :ref:`getting_started` instructions for Zephyr application development. + +For example, to build the blinky application for the MSPM0G3507 LaunchPad: + +.. zephyr-app-commands:: + :zephyr-app: samples/hello_world + :board: lp_mspm0g3507 + :goals: build + +The resulting ``zephyr.bin`` binary in the build directory can be flashed onto +MSPM0G3507 LaunchPad using the steps mentioned below. + +Flashing +======== + +Open OCD is used to program the flash memory on the devices. It may be necessary in +earlier versions to use a branch of open OCD onto the device. + +Before OpenOCD is public, one can clone `This Repo `_, +and then this can be built with + +``` +cd +./bootstrap (when building from the git repository) +./configure +make +sudo make install +``` + +Then after the build, it is possible to flash the device by passing additional arguments to the flash command + +``` +west flash --openocd /src/openocd --openocd-search /tcl +``` + +Flashing using JLINK + +``` +west flash --runner=jlink +``` + +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: lp_mspm0g3507 + :goals: debug + +References +********** + +TI MSPM0 MCU Page: + https://www.ti.com/microcontrollers-mcus-processors/arm-based-microcontrollers/arm-cortex-m0-mcus/overview.html + +TI MSPM0G3507 Product Page: + https://www.ti.com/product/MSPM0G3507 + +TI MSPM0 SDK: + https://www.ti.com/tool/MSPM0-SDK + +.. _MSPM0G3507 TRM: + https://www.ti.com/lit/slau846 + +.. _TI LP_MSPM0G3507 Product Page: + https://www.ti.com/tool/LP-MSPM0G3507 diff --git a/boards/ti/lp_mspm0g3507/lp_mspm0g3507.dts b/boards/ti/lp_mspm0g3507/lp_mspm0g3507.dts new file mode 100644 index 00000000000..900bff27064 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/lp_mspm0g3507.dts @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2025 Texas Instruments + * Copyright (c) 2025 Linumiz + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/dts-v1/; + +#include +#include +#include +#include + +/ { + model = "TI LP_MSPM0G3507/MSPM0G3507"; + compatible = "ti,mspm0g3507"; + + aliases { + led0 = &led0; + }; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + zephyr,shell-uart = &uart0; + zephyr,code-partition = &slot0_partition; + }; + + leds { + compatible = "gpio-leds"; + + led0: led_0 { + gpios = <&gpiob 22 GPIO_ACTIVE_HIGH>; + label = "Blue LED"; + }; + }; +}; + +&cpu0 { + clock-frequency = ; +}; + +&ulpclk { + clock-frequency = ; + clk-div = <2>; +}; + +&mclk { + clock-frequency = ; + clocks = <&hsclk 0>; +}; + +&hsclk { + clocks = <&syspll2x 0>; + status = "okay"; +}; + +&syspll2x { + status = "okay"; +}; + +&flash0 { + status = "okay"; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + boot_partition: partition@0 { + label = "mcuboot"; + reg = <0x00000000 0x8000>; + }; + + slot0_partition: partition@8000 { + label = "image-0"; + reg = <0x00008000 0xC000>; + }; + + slot1_partition: partition@14000 { + label = "image-1"; + reg = <0x00014000 0xC000>; + }; + }; +}; + +&pinctrl { + status = "okay"; +}; + +&gpioa { + status = "okay"; +}; + +&gpiob { + status = "okay"; +}; + +&uart0 { + status = "okay"; + + current-speed = <115200>; + pinctrl-0 = <&uart0_tx_pa10 &uart0_rx_pa11>; + pinctrl-names = "default"; +}; diff --git a/boards/ti/lp_mspm0g3507/lp_mspm0g3507.yaml b/boards/ti/lp_mspm0g3507/lp_mspm0g3507.yaml new file mode 100644 index 00000000000..0847dde8f40 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/lp_mspm0g3507.yaml @@ -0,0 +1,14 @@ +identifier: lp_mspm0g3507 +name: TI MSPM0G3507 Launchpad +type: mcu +arch: arm +toolchain: + - zephyr + - gnuarmemb + - xtools +ram: 32 +flash: 128 +supported: + - uart + - gpio +vendor: ti diff --git a/boards/ti/lp_mspm0g3507/lp_mspm0g3507_defconfig b/boards/ti/lp_mspm0g3507/lp_mspm0g3507_defconfig new file mode 100644 index 00000000000..b916bd90827 --- /dev/null +++ b/boards/ti/lp_mspm0g3507/lp_mspm0g3507_defconfig @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: Apache-2.0 + +# Enable UART driver +CONFIG_SERIAL=y + +# Enable Console +CONFIG_CONSOLE=y +CONFIG_UART_CONSOLE=y + +CONFIG_CLOCK_CONTROL=y diff --git a/boards/ti/lp_mspm0g3507/support/openocd.cfg b/boards/ti/lp_mspm0g3507/support/openocd.cfg new file mode 100644 index 00000000000..0356c7705cf --- /dev/null +++ b/boards/ti/lp_mspm0g3507/support/openocd.cfg @@ -0,0 +1,4 @@ +source [find interface/xds110.cfg] +adapter speed 10000 + +source [find target/ti_mspm0.cfg]