Skip to content

Commit 3068be2

Browse files
committed
boards: ti: lp_mspm0g3507: Add initial support TI LP_MSPM0G3507 board
Add initial support for Texas Instruments LP_MSPM0G3507 Launchpad. Signed-off-by: Saravanan Sekar <[email protected]> Signed-off-by: Jackson Farley <[email protected]>
1 parent 7d7d994 commit 3068be2

File tree

9 files changed

+326
-0
lines changed

9 files changed

+326
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2025 Texas Instruments
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_LP_MSPM0G3507
5+
select SOC_MSPM0G3507
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
board_runner_args(jlink "--device=MSPM0G3507" "--speed=4000")
4+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
5+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/ti/lp_mspm0g3507/board.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
board:
2+
name: lp_mspm0g3507
3+
vendor: ti
4+
socs:
5+
- name: mspm0g3507
43 KB
Loading
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
.. zephyr:board:: _lp_mspm0g3507:
2+
3+
MSPM0G3507 LaunchPad
4+
########################
5+
6+
Overview
7+
********
8+
9+
MSPM0G350x microcontrollers (MCUs) are part of the MSP highly integrated, ultra-low-power 32-bit MCU
10+
family based on the enhanced Arm® Cortex®-M0+ 32-bit core platform operating at up to 80-MHz frequency.
11+
These cost-optimized MCUs offer high-performance analog peripheral integration, support extended temperature
12+
ranges from -40°C to 125°C, and operate with supply voltages ranging from 1.62 V to 3.6 V.
13+
14+
The MSPM0G350x devices provide up to 128KB embedded flash program memory with built-in error correction
15+
code (ECC) and up to 32KB SRAM with a hardware parity option. These MCUs also incorporate a
16+
memory protection unit, 7-channel DMA, math accelerator, and a variety of peripherals including
17+
* Analog.
18+
19+
* Two 12-bit 4-Msps ADCs.
20+
21+
* Configurable internal shared voltage reference.
22+
23+
* One 12-bit 1-Msps DAC.
24+
25+
* Three high speed comparators with built-in reference DACs.
26+
27+
* Two zero-drift zero-crossover op-amps with programmable gain.
28+
29+
* Digital.
30+
31+
* Two 16-bit advanced control timers.
32+
33+
* Five general-purpose timers.
34+
35+
* One 16-bit general-purpose timer for QEI interface.
36+
37+
* One 32-bit high resolution general-purpose timer.
38+
39+
* Two 16-bit timers with deadband support and up to 12 PWM Channels.
40+
41+
* Two windowed-watchdog timers.
42+
43+
* One RTC with alarm and calendar modes.
44+
45+
* Data Integrity and Encryption.
46+
47+
* One AES HW accelerator capable of CTR, CBC, and ECB modes.
48+
49+
* One Cyclic Redundancy Check (CRC) accelerator.
50+
51+
* One True Random Number Generator (TRNG).
52+
53+
* Communication.
54+
55+
* Four UARTs, one with support for advanced modes such as LIN and Manchester.
56+
57+
* Two I2C supporting SMBUS/PMBUS and speeds up to FM+ (1Mbits/s).
58+
59+
* Two SPI, one with max speed 32Mbits/s.
60+
61+
* One CAN interface supporting CAN 2.0 A or B and CAN-FD.
62+
63+
.. figure:: img/lp_mspm0g3507.webp
64+
:align: center
65+
:alt: MSPM0G3507 LaunchPad development board
66+
67+
Zephyr uses the ``lp_mspm0g3507/mspm0g3507`` board for building LP_MSPM0G3507
68+
69+
Features:
70+
=========
71+
72+
- Onboard XDS110 debug probe
73+
- EnergyTrace technology available for ultra-low-power debugging
74+
- 2 buttons, 1 LED and 1 RGB LED for user interaction
75+
- Temperature sensor circuit
76+
- Light sensor circuit
77+
- External OPA2365 (default buffer mode) for ADC (up to 4 Msps) evaluation
78+
- Onboard 32.768-kHz and 40-MHz crystals
79+
- RC filter for ADC input (unpopulated by default)
80+
81+
Details on the MSPM0G3507 LaunchPad can be found on the `TI LP_MSPM0G3507 Product Page`_.
82+
83+
Supported Features
84+
==================
85+
86+
.. zephyr:board-supported-hw::
87+
88+
The Zephyr ``lp_mspm0g3507/mspm0g3507`` board target supports the following hardware
89+
features:
90+
91+
+-----------+------------+-----------------------+
92+
| Interface | Controller | Driver/Component |
93+
+===========+============+=======================+
94+
| NVIC | on-chip | nested vectored |
95+
| | | interrupt controller |
96+
+-----------+------------+-----------------------+
97+
| SYSTICK | on-chip | system clock |
98+
+-----------+------------+-----------------------+
99+
| UART | on-chip | serial |
100+
+-----------+------------+-----------------------+
101+
| CLOCKMUX | on-chip | clockctl |
102+
+-----------+------------+-----------------------+
103+
| PINMUX | on-chip | pinctrl |
104+
+-----------+------------+-----------------------+
105+
| GPIO | on-chip | gpio |
106+
+-----------+------------+-----------------------+
107+
108+
More details about the supported peripherals are available in `MSPM0G3507 TRM`_.
109+
Other hardware features are not currently supported by the Zephyr kernel.
110+
111+
Building and Flashing
112+
*********************
113+
114+
Building
115+
========
116+
117+
Follow the :ref:`getting_started` instructions for Zephyr application development.
118+
119+
For example, to build the blinky application for the MSPM0G3507 LaunchPad:
120+
121+
.. zephyr-app-commands::
122+
:zephyr-app: samples/hello_world
123+
:board: lp_mspm0g3507
124+
:goals: build
125+
126+
The resulting ``zephyr.bin`` binary in the build directory can be flashed onto
127+
MSPM0G3507 LaunchPad using the steps mentioned below.
128+
129+
Flashing
130+
========
131+
132+
Open OCD is used to program the flash memory on the devices. It may be necessary in
133+
earlier versions to use a branch of open OCD onto the device.
134+
135+
Before OpenOCD is public, one can clone `This Repo <https://github.com/openocd-org/openocd.git>`_,
136+
and then this can be built with
137+
138+
```
139+
cd <cloned_OPENOCD_dir>
140+
./bootstrap (when building from the git repository)
141+
./configure
142+
make
143+
sudo make install
144+
```
145+
146+
Then after the build, it is possible to flash the device by passing additional arguments to the flash command
147+
148+
```
149+
west flash --openocd <path to cloned dir>/src/openocd --openocd-search <path to cloned dir>/tcl
150+
```
151+
152+
Flashing using JLINK
153+
154+
155+
```
156+
west flash --runner=jlink
157+
```
158+
159+
Debugging
160+
=========
161+
162+
You can debug an application in the usual way. Here is an example for the
163+
:zephyr:code-sample:`hello_world` application.
164+
165+
.. zephyr-app-commands::
166+
:zephyr-app: samples/hello_world
167+
:board: lp_mspm0g3507
168+
:goals: debug
169+
170+
References
171+
**********
172+
173+
TI MSPM0 MCU Page:
174+
https://www.ti.com/microcontrollers-mcus-processors/arm-based-microcontrollers/arm-cortex-m0-mcus/overview.html
175+
176+
TI MSPM0G3507 Product Page:
177+
https://www.ti.com/product/MSPM0G3507
178+
179+
TI MSPM0 SDK:
180+
https://www.ti.com/tool/MSPM0-SDK
181+
182+
.. _MSPM0G3507 TRM:
183+
https://www.ti.com/lit/slau846
184+
185+
.. _TI LP_MSPM0G3507 Product Page:
186+
https://www.ti.com/tool/LP-MSPM0G3507
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
/*
2+
* Copyright (c) 2025 Texas Instruments
3+
* Copyright (c) 2025 Linumiz
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
/dts-v1/;
9+
10+
#include <ti/mspm0/g/mspm0g3507.dtsi>
11+
#include <ti/mspm0/g/mspm0g1x0x_g3x0x-pinctrl.dtsi>
12+
#include <zephyr/dt-bindings/clock/mspm0_clock.h>
13+
#include <zephyr/dt-bindings/gpio/gpio.h>
14+
15+
/ {
16+
model = "TI LP_MSPM0G3507/MSPM0G3507";
17+
compatible = "ti,mspm0g3507";
18+
19+
aliases {
20+
led0 = &led0;
21+
};
22+
23+
chosen {
24+
zephyr,sram = &sram0;
25+
zephyr,flash = &flash0;
26+
zephyr,console = &uart0;
27+
zephyr,shell-uart = &uart0;
28+
zephyr,code-partition = &slot0_partition;
29+
};
30+
31+
leds {
32+
compatible = "gpio-leds";
33+
34+
led0: led_0 {
35+
gpios = <&gpiob 22 GPIO_ACTIVE_HIGH>;
36+
label = "Blue LED";
37+
};
38+
};
39+
};
40+
41+
&cpu0 {
42+
clock-frequency = <DT_FREQ_M(80)>;
43+
};
44+
45+
&ulpclk {
46+
clock-frequency = <DT_FREQ_M(40)>;
47+
clk-div = <2>;
48+
};
49+
50+
&mclk {
51+
clock-frequency = <DT_FREQ_M(80)>;
52+
clock-source = <MSPM0_CLOCK_BUS_SYSPLL2X>;
53+
};
54+
55+
&flash0 {
56+
status = "okay";
57+
58+
partitions {
59+
compatible = "fixed-partitions";
60+
#address-cells = <1>;
61+
#size-cells = <1>;
62+
63+
boot_partition: partition@0 {
64+
label = "mcuboot";
65+
reg = <0x00000000 0x8000>;
66+
};
67+
68+
slot0_partition: partition@8000 {
69+
label = "image-0";
70+
reg = <0x00008000 0xC000>;
71+
};
72+
73+
slot1_partition: partition@14000 {
74+
label = "image-1";
75+
reg = <0x00014000 0xC000>;
76+
};
77+
};
78+
};
79+
80+
&pinctrl {
81+
status = "okay";
82+
};
83+
84+
&gpioa {
85+
status = "okay";
86+
};
87+
88+
&gpiob {
89+
status = "okay";
90+
};
91+
92+
&uart0 {
93+
status = "okay";
94+
95+
current-speed = <115200>;
96+
pinctrl-0 = <&uart0_tx_pa10 &uart0_rx_pa11>;
97+
pinctrl-names = "default";
98+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
identifier: lp_mspm0g3507/mspm0g3507
2+
name: LP_MSPM0G3507_MSPM0G3507
3+
type: mcu
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
- gnuarmemb
8+
- xtools
9+
ram: 32
10+
flash: 128
11+
supported:
12+
- uart
13+
vendor: ti
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
# Enable UART driver
4+
CONFIG_SERIAL=y
5+
6+
# Enable Console
7+
CONFIG_CONSOLE=y
8+
CONFIG_UART_CONSOLE=y
9+
10+
CONFIG_CLOCK_CONTROL=y
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source [find interface/xds110.cfg]
2+
adapter speed 10000
3+
4+
source [find target/ti_mspm0.cfg]

0 commit comments

Comments
 (0)