Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
7954bb6
dts: arm: ti: mspm33: Update unicomm instance naming
Aman-Lachhiramka-ti Dec 9, 2025
e32cfa0
boards: ti: lp_mspm33c321a: update uart pinctrl pin reference
Aman-Lachhiramka-ti Jan 22, 2026
0a7107a
west: update hal_ti to use dev_mspm33 branch
Aman-Lachhiramka-ti Jan 22, 2026
f4e689a
dts: bindings: dma: add TI MSP DMA binding
Aman-Lachhiramka-ti Dec 17, 2025
07371bb
drivers: dma: add TI MSP DMA driver support
Aman-Lachhiramka-ti Dec 17, 2025
e925b50
dts: arm: ti: mspm33: add support for DMA controller
Aman-Lachhiramka-ti Dec 17, 2025
eb6f709
tests: drivers: dma: add TI MSP DMA test coverage
Aman-Lachhiramka-ti Dec 17, 2025
6e73e18
github: workflows: add DMA tests to MSPM33 build workflow
Aman-Lachhiramka-ti Dec 22, 2025
6569bf5
dts: bindings: pinctrl: update drive strength property
Aman-Lachhiramka-ti Feb 2, 2026
4b189ad
dts: bindings: pinctrl: fix property descriptions in MSP pinctrl YAML
Aman-Lachhiramka-ti Feb 2, 2026
ebb34d4
soc: ti : add flash configuration defaults
Tejas-Garg-ti Feb 13, 2026
c995185
boards: ti: lp_mspm33c321a: add OpenOCD support and enable XIP
Tejas-Garg-ti Feb 13, 2026
3afa9e3
dts: bindings: timer: add clocks to MSP TIMER module
Aman-Lachhiramka-ti Feb 20, 2026
928e059
boards: ti: lp_mspm33c321a: add board image to documentation
Aman-Lachhiramka-ti Feb 23, 2026
5c34fcf
drivers: adc: Refactor and fix adc_msp_hsadc driver
Aman-Lachhiramka-ti Feb 17, 2026
4885040
samples: drivers: adc: add support of TI MSPM33C321A
Aman-Lachhiramka-ti Feb 17, 2026
55d229c
tests: drivers: adc: add lp_mspm33c321a support for adc_api and adc_e…
Aman-Lachhiramka-ti Feb 17, 2026
95a4ea8
drivers: dma: add external trigger support to dma_ti_msp
Aman-Lachhiramka-ti Feb 18, 2026
41027a7
dts: bindings: adc: add optional dma property to ti,msp-hsadc
Aman-Lachhiramka-ti Feb 18, 2026
6d520d4
dts: arm: ti: add DMA channels to mspm33c321a ADC nodes
Aman-Lachhiramka-ti Feb 18, 2026
c139650
drivers: adc: add DMA transfer support to msp_hsadc
Aman-Lachhiramka-ti Feb 18, 2026
f27e482
samples: adc: adc_dt: enable DMA transfer for lp_mspm33c321a
Aman-Lachhiramka-ti Feb 18, 2026
5cbe593
github: workflows: add ADC test and sample builds to MSPM33 workflow
Aman-Lachhiramka-ti Feb 20, 2026
b9ee528
boards: ti: fix RST warnings in lp_mspmc321a board doc
Aman-Lachhiramka-ti Feb 20, 2026
7458f8e
drivers: i2c: rename mspm0 I2C driver to msp I2C
Aman-Lachhiramka-ti Feb 19, 2026
1869e5d
drivers: i2c: rename DL_I2C config to msp naming
Aman-Lachhiramka-ti Feb 24, 2026
054ad59
modules: rename MSPM0 I2C Kconfig to MSP
Aman-Lachhiramka-ti Feb 24, 2026
2ff940c
dts: arm: ti: mspm0: fix rebase artifacts in mspm0l13x3.dtsi
Aman-Lachhiramka-ti Jan 21, 2026
9070ce0
dts: bindings: i2c: rename binding to ti,msp-i2c
Aman-Lachhiramka-ti Feb 24, 2026
951dd41
dts: arm: ti: mspm0: update I2C nodes to ti,msp-i2c compatible
Aman-Lachhiramka-ti Feb 24, 2026
2bbd184
drivers: i2c: update i2c_msp driver for renamed binding
Aman-Lachhiramka-ti Feb 24, 2026
d2eae23
modules: Kconfig: add UNICOMM I2C config for mspm33
Aman-Lachhiramka-ti Jan 21, 2026
4f6eee6
drivers: i2c: fix formatting of i2c msp driver
Aman-Lachhiramka-ti Feb 19, 2026
e0ffbb6
drivers: i2c: fix i2c_msp timeout, ISR and sync logic
Aman-Lachhiramka-ti Feb 19, 2026
eeae18d
drivers: i2c: add UNICOMM I2C support to i2c_msp driver
Aman-Lachhiramka-ti Feb 19, 2026
e6b0d26
dts: arm: ti: mspm33: add I2C nodes
Aman-Lachhiramka-ti Jan 21, 2026
7f1fb8f
dts: arm: ti: mspm0: add missing copyright headers
Aman-Lachhiramka-ti Feb 25, 2026
2ece878
boards: ti: lp_mspm33c321a: fix OpenOCD target config path
Tejas-Garg-ti Feb 27, 2026
2641b63
west: update hal_ti revision to 1.02.00.00_ea release
Aman-Lachhiramka-ti Feb 27, 2026
dab2dca
drivers: gpio: fix msp port_get_direction and disconnect
Aman-Lachhiramka-ti Mar 5, 2026
cda1d55
drivers: serial: fix msp irq_is_pending implementation
Aman-Lachhiramka-ti Mar 5, 2026
40c1b49
tests: gpio: gpio_basic_api: add lp_mspm33c321a overlay
Aman-Lachhiramka-ti Mar 5, 2026
86d743b
tests: gpio: gpio_get_direction: add lp_mspm33c321a board conf
Aman-Lachhiramka-ti Mar 5, 2026
9aece5a
boards: ti: lp_mspm33c321a: update board doc and supported features
Aman-Lachhiramka-ti Mar 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 42 additions & 7 deletions .github/workflows/dev_mspm33_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,6 @@ jobs:
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a samples/basic/blinky

- name: Build ADC Sequence example
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a samples/drivers/adc/adc_sequence

- name: Build Counter Alarm example
run: |
source ~/zephyrproject/.venv/bin/activate
Expand Down Expand Up @@ -130,3 +123,45 @@ jobs:
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a tests/drivers/counter/counter_basic_api

- name: Build DMA Channel Block Length Transfer Test
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a tests/drivers/dma/chan_blen_transfer

- name: Build DMA Loop Transfer Test
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a tests/drivers/dma/loop_transfer

- name: Build ADC DT Sample
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a samples/drivers/adc/adc_dt

- name: Build ADC Sequence Sample
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a samples/drivers/adc/adc_sequence

- name: Build ADC API Test
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a tests/drivers/adc/adc_api

- name: Build ADC Error Cases Test
run: |
source ~/zephyrproject/.venv/bin/activate
cd ~/zephyrproject/zephyr
source ~/zephyrproject/zephyr/zephyr-env.sh
west build -p always -b lp_mspm33c321a tests/drivers/adc/adc_error_cases
5 changes: 5 additions & 0 deletions boards/ti/lp_mspm33c321a/board.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
# SPDX-License-Identifier: Apache-2.0

board_runner_args(openocd
"--openocd=${ZEPHYR_BASE}/../openocd/src/openocd"
"--openocd-search=${ZEPHYR_BASE}/../openocd/tcl"
)
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
244 changes: 193 additions & 51 deletions boards/ti/lp_mspm33c321a/doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,97 +10,239 @@ ranges, and operate with supply voltages ranging from 1.62 V to 3.6 V.

The MSPM33C321A devices provide 1MB embedded flash program memory with built-in error correction
code (ECC) and 256KB SRAM with hardware parity option. These MCUs also incorporate a
memory protection unit, DMA, and a variety of peripherals including GPIO, ADC, timers, and
communication interfaces.
memory protection unit, DMA, and a variety of peripherals including:

* Analog.

* One 12-bit high-speed SAR ADC (HSADC) with 4 sequencers and up to 32 input channels.

* Configurable internal voltage reference (1.4V, 2.5V) and external VREF support.

* Post-processing blocks (PPB) with oversampling (up to 8x) and right-shift.

* Digital.

* Multiple timer groups (TIMG) with alarm and capture/compare support.

* Up to 3 GPIO ports (GPIOA, GPIOB, GPIOC) with interrupt support.

* DMA controller with up to 16 channels.

* Communication.

* UNICOMM (Universal Communication) peripherals supporting UART, SPI, and I2C modes.

* Multiple UART instances with polling and interrupt-driven modes.

* SPI with configurable clock polarity/phase and up to 32-bit word size.

* I2C with controller and target modes, 7-bit addressing, standard (100 kHz) and fast (400 kHz) speeds.

.. image:: img/lp_mspm33c321a_board.webp
:align: center
:alt: LP_MSPM33C321A LaunchPad development board

Hardware
********

The LP_MSPM33C321A LaunchPad is a development platform for the MSPM33C321A microcontroller.
Zephyr uses the ``lp_mspm33c321a`` board configuration for building applications for this platform.

Details on the LP_MSPM33C321A LaunchPad can be found on the `TI LP_MSPM33C321A Product Page`_.
See the `MSPM33C321A Datasheet`_ for device specifications and the `MSPM33C321A TRM`_
for detailed register-level documentation.

Board Features
=============
==============

- MSPM33C321A microcontroller with Arm® Cortex®-M33 core running at up to 160 MHz
- 1MB Flash memory with ECC
- 256KB SRAM with hardware parity
- On-board XDS110 debug probe with SWD interface
- User LEDs and push buttons
- Multiple expansion headers for BoosterPack ecosystem compatibility
- On-board 32.768-kHz crystal for LFCLK

Supported Features
==================

* MSPM33C321A microcontroller with Arm® Cortex®-M33 core running at up to 160 MHz
* 1MB Flash memory with ECC
* 256KB SRAM
* On-board XDS110 debugger
* User LEDs and buttons
* Multiple expansion headers for BoosterPack ecosystem compatibility
.. zephyr:board-supported-hw::

Connections and IOs
===================

Development Environment
**********************
LEDs
----

The following development environment was used while developing and testing:
* **LED1** (red) = **PA0**

* TI Code Composer Studio (CCS) version 20.3.0 (`Download Link <https://www.ti.com/tool/download/CCSTUDIO/20.3.0>`_)
* Zephyr SDK version 0.17.4
* Zephyr version v4.2.0
Push Buttons
------------

Building and Flashing
*********************
* **S2** (user button) = **PB21**

Default Zephyr Peripheral Mapping
----------------------------------

- UART (console): UNICOMM12 — TX on PA10, RX on PA11
- SPI: UNICOMM2 — SCLK on PB18, POCI on PB19, PICO on PB17, CS on PA2
- I2C: UNICOMM1_0 — SDA on PA0, SCL on PA1

System Clock
------------

The MSPM33C321A clock tree is driven by SYSOSC (32 MHz) through the system PLL:

- SYSOSC (32 MHz) → SYSPLL → HSCLK → MCLK (160 MHz)
- ULPCLK: 40 MHz ultra-low-power clock
- LFCLK: 32.768 kHz low-frequency clock

Serial Port
------------

The Zephyr console output is assigned to UNICOMM12 UART.
Default settings are 115200 8N1 with no flow control.

The serial port is accessible via the on-board XDS110 debugger's virtual COM port over USB.

Programming and Debugging
*************************

.. zephyr:board-supported-runners::

Applications for the ``lp_mspm33c321a`` board can be built and flashed using
OpenOCD with the on-board XDS110 debug probe.

Building
========

Follow the :ref:`getting_started` instructions for Zephyr application development.

For example, to build the basic/blinky application for the MSPM33C321A LaunchPad:
For example, to build the :zephyr:code-sample:`blinky` application:

.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: lp_mspm33c321a
:goals: build

The resulting ``zephyr.elf`` binary in the build directory can be loaded onto
MSPM33C321A LaunchPad using the steps mentioned below.

Flashing
========

Currently, the MSPM33C321A board does not support the west flashing tool or OpenOCD support.
Instead, we use SRAM-based loading where we build the samples and load the zephyr.elf file
from the build directory to the TI Code Composer Studio (CCS) IDE in debugger mode.
OpenOCD is used to program the flash memory on the device via the on-board XDS110
debug probe using SWD transport. A custom OpenOCD build with MSPM33 support is
included in the workspace.

.. code-block:: console

$ west flash

The application is written to on-chip flash memory at address ``0x10000000`` and
persists across power cycles.

If using OpenOCD from a non-default location, you can pass additional arguments:

To flash the board:
.. code-block:: console

1. Build your Zephyr application as described above
2. Open TI Code Composer Studio IDE
3. Create a new project or import an existing CCS project for the MSPM33C321A
4. Start project less debug using MSPM33 target configuration(CCXML) file
5. Connect to the MSPM33 core
6. In the debugger, select "Run" > "Load" > "Load Program..."
7. Browse to your Zephyr build directory and select the ``zephyr.elf`` file
8. The program will be loaded into the SRAM of the device
9. Click "Resume" to start the program execution
$ west flash --openocd <path-to-openocd>/src/openocd --openocd-search <path-to-openocd>/tcl

Future updates to the Zephyr support for this board will include flash-based programming
and support for the west flash command.
Flashing with Multiple Boards
------------------------------

Serial Console
=============
When multiple LP_MSPM33C321A boards are connected to the same host, identify each
board's XDS110 serial number:

The MSPM33C321A LaunchPad includes an on-board XDS110 debugger that also provides a
virtual COM port over USB. This can be used for serial console output.
.. code-block:: console

To connect to the serial console, use a terminal emulator such as PuTTY, minicom, or screen
with the following settings:
$ lsusb -v -d 0451:bef3 | grep iSerial

* Baud rate: 115200
* Data bits: 8
* Parity: None
* Stop bits: 1
* Flow control: None
Then flash a specific board by passing its serial number to the OpenOCD adapter:

.. code-block:: console

$ west flash --cmd-pre-init "adapter serial <serial_number>"

For example, if ``lsusb`` reports ``iSerial 3 MG00DUT0``:

.. code-block:: console

$ west flash --cmd-pre-init "adapter serial MG00DUT0"

If using OpenOCD from a non-default location, combine both options:

.. code-block:: console

$ west flash --openocd ../openocd/src/openocd --openocd-search ../openocd/tcl \
--cmd-pre-init "adapter serial MG00DUT0"

Flashing with Code Composer Studio
-----------------------------------

Programs can also be loaded into SRAM using TI `Code Composer Studio`_ (CCS) IDE.
Note that CCS uses SRAM-based loading only where we build the samples and load the zephyr.elf file
from the build directory to the TI Code Composer Studio (CCS) IDE in debugger mode.

1. Open CCS and create a target configuration for the MSPM33C321A using the
on-board XDS110 debug probe.
2. Launch a projectless debug session (``Run`` > ``Debug Configurations`` >
``Code Composer Studio - Device Debugging``).
3. Connect to the MSPM33C321A core.
4. Load the ``build/zephyr/zephyr.elf`` file via ``Run`` > ``Load`` >
``Load Program...``.

Debugging
=========

You can debug an application using TI Code Composer Studio IDE as described in the flashing
section above. The debugger provides full visibility into the device state, registers,
memory, and supports common debugging features like breakpoints, watchpoints, and step-by-step
execution.
You can debug an application using OpenOCD with the ``west debug`` command:

.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: lp_mspm33c321a
:goals: debug

This launches a GDB session connected to the MSPM33C321A via the XDS110 debugger,
providing full visibility into device state, registers, memory, and support for
breakpoints, watchpoints, and step-by-step execution.

Debugging with Code Composer Studio
-------------------------------------

TI `Code Composer Studio`_ can also be used for debugging. Load the
``build/zephyr/zephyr.elf`` file through the CCS debug session to get full
source-level debugging with register, memory, and peripheral views.

Recovery
========

The custom OpenOCD build included in the workspace provides device recovery
commands accessible through the OpenOCD telnet interface or command line:

- **Factory Reset** — restores device to factory state:

.. code-block:: console

$ <workspace>/openocd/src/openocd -s <workspace>/openocd/tcl \
-f board/ti_mspm33_launchpad.cfg -c "init; mspm33_factory_reset; shutdown"

- **Mass Erase** — erases all flash memory:

.. code-block:: console

$ <workspace>/openocd/src/openocd -s <workspace>/openocd/tcl \
-f board/ti_mspm33_launchpad.cfg -c "init; mspm33_mass_erase; shutdown"

References
**********

.. target-notes::

.. _TI LP_MSPM33C321A Product Page:
https://www.ti.com/tool/LP-MSPM33C321A

.. _MSPM33C321A Datasheet:
https://www.ti.com/product/MSPM33C321A

.. _MSPM33C321A TRM:
https://www.ti.com/lit/ug/slau962/slau962.pdf

.. _Code Composer Studio:
https://www.ti.com/tool/CCSTUDIO
12 changes: 6 additions & 6 deletions boards/ti/lp_mspm33c321a/lp_mspm33c321a.dts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,console = &unicomm5_uart;
zephyr,shell-uart = &unicomm5_uart;
zephyr,console = &unicomm12_uart;
zephyr,shell-uart = &unicomm12_uart;

};

Expand Down Expand Up @@ -142,19 +142,19 @@
status = "okay";
};

&unicomm0_uart {
&unicomm1_0_uart {
status = "okay";

current-speed = <115200>;
pinctrl-0 = <&uc0_tx_pa0 &uc0_rx_pa1>;
pinctrl-0 = <&uc1_0_tx_pa0 &uc1_0_rx_pa1>;
pinctrl-names = "default";
};

/* Primary UART for console and shell */
&unicomm5_uart {
&unicomm12_uart {
status = "okay";

current-speed = <115200>;
pinctrl-0 = <&uc5_tx_pa10 &uc5_rx_pa11>;
pinctrl-0 = <&uc12_tx_pa10 &uc12_rx_pa11>;
pinctrl-names = "default";
};
Loading
Loading