element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
    About the element14 Community
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Japan
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      •  Vietnam
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
Blog Programming a TI MSPM0 Microcontroller via USB UART
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: shabaz
  • Date Created: 25 May 2026 3:48 PM Date Created
  • Views 30 views
  • Likes 1 like
  • Comments 0 comments
  • MSPM0L1105
  • MSPM0
  • arm cortex
  • cortex-m0+
  • easyL1105
  • arm cortex-m
  • texas instruments
  • MiniL1105
  • MSPM0L1106
  • ti
Related
Recommended

Programming a TI MSPM0 Microcontroller via USB UART

shabaz
shabaz
25 May 2026

Table of Contents

  • Introduction
  • Obtain a USB-UART Adapter
  • Wire It Up!
  • Obtain the MSPM0 Programmer Software
  • Procedure
  • Summary
  • Further Reading 

Introduction

The Texas Instruments MSPM0 series (PDF MSPM0 Product Portfolio) of microcontrollers are low-cost parts containing ARM Cortex-M0+ cores. There are dozens of MSPM0 blog posts on element14 describing various tips and tricks with the MSPM0. They are really nice to use, from either command line or with multiple Interactive Development Environment (IDE) options, across Windows, Mac and Linux, and TI has gone the extra distance to make sure there are plenty of tools and example software apps.

Ordinarily, ARM based microcontrollers can be programmed via an interface called SWD, however many of the TI MSPM0 parts also support a built-in bootloader that allows for programming via UART or even I2C.

In this short blog post, I will describe how to program MSPM0 devices using the UART interface (specifically, using the pins labelled BSL UART on the microcontroller).

I will skip the steps regarding how to write code and build it into a .hex file; check out some of the other blog posts (type MSPM0 in the search bar at the top) for information on those steps.

image

Obtain a USB-UART Adapter

Although not necessary (any cheap ready-made USB-UART could be used), I used a Pi Pico as a simple USB-UART adapter.

There are several Pi Pico USB-UART emulation implementations online (including a dual USB UART!) however I used my own project, which is based on older code that performs double duty as an I2C adapter too (that’s not required for this of course).

The firmware, including a pre-built binary that can just be drag-and-dropped into the Pi Pico USB Storage drive (when plugged into a PC with the BOOT button pressed down), is available in a E-Z I2C Adapter and UART Bridge repository and then when you plug the USB connection into a PC, you’ll see two COM ports appear; the first one is the I2C adapter (unused) and the second is for the USB-UART function.

Wire It Up!

The diagram shows approximately the bare minimum needed to program the MSPM0 via the BSL UART pins.

image

For example, this is the miniL1105 schematic, which is a practical implementation of an almost-bare-minimum MSPM0 microcontroller board (PCB Gerber files available here plus all files for a full development board called EasyL1105 explained here: (+) EasyL1105: A Dev Board for the TI ARM Cortex-M0+ L-Series - element14 Community):

image

As you can see at the lower-left of the schematic, there are a couple of pull-up resistors on the BSL UART connections. They are not strictly always essential, but it may be worth putting them at least as “Do Not Populate” footprints on a PCB initially, in case they are beneficial for any real workflow. For instance, R6 is useful to pull up the BSL UART_RX line to a known state if a USB-UART is not attached until after the boot button has been pressed. R12 may be useful with some USB-UART adapters which may not like the BSL UART_TX connection being high impedance until after the first bootloader instruction is sent from the PC.

Obtain the MSPM0 Programmer Software

Texas Instruments offers a GUI-based tool called UniFlash, but it’s large since it supports thousands of TI parts, has an odd user interface as a result, and takes ages to flash the device.

As another option, one can download the far simpler and easier-to-use mspm0_prog Python software

To use it as discussed in the next section, first pyserial needs to be installed:

pip install pyserial

Procedure

With the USB-UART adapter UART connections wired up to the MSPM0, and the USB cable from the USB-UART adapter plugged in to the PC, this is the command to flash the .hex file into the MSPM0 microcontroller (change the COM port number and path/filename as required):

python ./mspm0_prog.py --port COM3 C:\DEV\projects\myproject\firmware.hex

If all goes well, you’ll be prompted to hold down the BOOT button on the MSPM0 board and then press the RESET button and then release both and hit Enter. With a small microcontroller like the MSPM0L1105, programming will complete within seconds.

Summary

Although the normal (and more capable) way to program up (and debug) ARM chips is via the SWD connections, if all you need is to program up the Flash, then it is also very quick an easy to just use the built-in bootloader capability that many of the parts within the MSPM0 range possess.

Very little is needed, just a USB-UART adapter, and if that’s not available, then a Pi Pico can be repurposed in a pinch, to emulate such a device.

The programming software is Python-based, and should run on Windows/Mac/Linux (not tested on Mac!).

Thanks for reading.

 

Further Reading 

TI Bootloader Guide (PDF)

18-page MSPM0 Quick Reference (PDF)

Simple Setup Guide for MSPM0 Development, for Win/Mac/Linux

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2026 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube