Hardware / No radio: small chips / Step 2 of 5
LP-MSPM0L1306 (MSPM0L1306)
The MSPM0L1306 is a microcontroller in TI's MSPM0 family: 32 MHz Arm Cortex-M0+, 64 kB of flash, 4 kB of RAM.
Quick facts
| Board | LP-MSPM0L1306 |
|---|---|
| Chip | MSPM0L1306 |
| Core | Cortex-M0+ |
| Clock | 32 MHz |
| Flash | 64 kB |
| RAM | 4 kB |
| Radio | None |
| Notable peripherals | 12-bit ADC, 1.68 Msps (data sheet), up to 10 external channels; 2 zero-drift op-amps, 1 general-purpose amplifier; 1 comparator with 8-bit DAC; CRC-16 and CRC-32; 3 DMA channels; 2 UART, 2 I2C, 1 SPI |
| On-board debug probe | Built into the board |
| Where to buy | TI.com |
| Toolchains that ran | TI compilers, GCC, Zephyr, FreeRTOS, Rust |
Get it running
First blink: 1 min 15 s from plug-in to a changed blink.
Plug the board into your computer with its USB cable. No driver to install.
In Chrome or Edge, open the browser bench and click Connect.
Pick Blink LED2 red: 150, 150, 150, 900 ms and click Flash. The page writes it to the board.
You should see: LED2 red flashes: on 150 ms, off 150 ms, on 150 ms, off 900 ms, repeating.
LED2 needs its jumpers J2, J3, J12 and J13 on (as shipped), and J101's nine debugger jumpers on.
Install CCStudio 21.0.1 and the MSPM0 SDK 2.11. Free with a myTI login. On a Mac,
mac-setup/bootstrap.shin the repository does both after you sign in.File, Import Project, and pick:
/Applications/ti/mspm0_sdk_2_11_00_07/examples/nortos/LP_MSPM0L1306/driverlib/gpio_toggle_outputClick the green Debug button, then Resume.
You should see: LED2 blinks (TI's example drives the red channel of LED2, on PA26; LED1 is not an output in it). The pattern is the delay in gpio_toggle_output.c.
One command runs the whole route, with no assistant.
./start.sh mspm0l1306 blink --probe <serial>Or build with GCC yourself.
cp -R <SDK>/examples/nortos/LP_MSPM0L1306/driverlib/gpio_toggle_output . make -C gpio_toggle_output/gcc MSPM0_SDK_INSTALL_DIR=<SDK> SYSCONFIG_TOOL=/Applications/ti/sysconfig_1.26.3/sysconfig_cli.sh GCC_ARMCOMPILER=<GCC folder>Then flash the .out with OpenOCD.
openocd -f interface/xds110.cfg -c "adapter serial <serial>" -c "adapter speed 2500" -f target/ti_mspm0.cfg -c init -c "reset halt" -c "program gpio_toggle_output/ticlang/gpio_toggle_output.out verify" -c "reset run" -c shutdown
Replace the parts in angle brackets. Run it from the terminal in VS Code, CCStudio or any IDE.
You should see: LED2 blinks (TI's example drives the red channel of LED2, on PA26; LED1 is not an output in it). The pattern is the delay in gpio_toggle_output.c.
What works
- CoreMark: 78.27 (2.446 per MHz) (TI Arm Clang, bare metal, -O3; 32 MHz)
- Interrupt latency, pend to first handler line: 25 cycles (bare metal; 32 MHz)
- GPIO toggle: 1.0 cycles (one register write; not checked on a scope; 32 MHz)
- Blink image size: 440 B of flash, 256 B of RAM (bare metal)
- Room-occupancy AI model, one inference: 9.3 ms (-O3; 32 MHz)
- Control loop, trigger to new PWM value: 55.5 µs (-O2; 32 MHz)
- 256-point complex FFT: 2.25 ms (CMSIS-DSP prebuilt arm_cortexM0l_math.a; best of 5; 32 MHz)
- AES-128: 405.86 cycles/B in software (TI Arm Clang, -O2, from flash; 32 MHz)
- RTOS task switch round trip: 12 µs (FreeRTOS; 32 MHz)
- Fastest ADC with DMA: 1.45 Msps (adc12_max_freq_dma; 1k samples in 23k cycles; 32 MHz)
Download every result for this board (CSV), or compare it on this board on the Benchmarks page.
Projects and ports that ran here
- Blink an LED: 3.3 s to build TI's example
- Run a small AI model on the chip: 84 to 100 ms per answer, fastest build on this chip
- Recognize handwriting with Edge AI: 4 kB of RAM; the model reads all 10 stored digits
- Measure how fast a chip runs: 78.3 CoreMark score at the board's top clock
- Measure how fast a chip reacts: 25 to 28 cycles from interrupt to first instruction
- Build and flash from the terminal: 167 of 170 build TI examples built
- Print a message from the board on your computer: Zephyr hello_world and TI's console example print over USB serial
- Run FreeRTOS on a LaunchPad: 11 tasks fit in 4 kB; a task switch takes 12 to 16 µs; TI's own settings file for the board needs 5.4 kB
- BitNetMCU handwriting AI on MSPM0 Works: BitNetMCU handwriting models read all 10 test digits right on the MSPM0 G3507 and MSPM0 L1306, the same answers as on a Mac.
- Cmsemicon CMS32 examples on the LP-MSPM0L1306 Works: Cmsemicon CMS32 examples run on the MSPM0 L1306 through one glue layer: 34 of 34 ran; 21 checked, 13 show nothing a probe can see.
- FreeRTOS in 4 kB of RAM on the LP-MSPM0L1306 Works: FreeRTOS runs on the MSPM0 L1306 in 4 kB of RAM: the blink uses 1 kB.
- MSP430FR2433 code examples on the LP-MSPM0L1306 Works: Three MSP430FR2433 FRAM examples ran on the MSPM0 L1306: a persistent counter, a watchdog wake from LPM3 and a UART echo in LPM3.
- MSPM0 examples moved up and down the family Works: MSPM0 examples move between family members with only the SysConfig device changed (SysConfig is TI's pin and peripheral setup tool): all 133 images that built and write nothing outside main flash and SRAM ran on the MSPM0 L1306.
- Rust (embassy-mspm0) on the LP-MSPM0L1306 Works: A Rust blinky and a serial hello run on the MSPM0 L1306 with embassy-mspm0.
- STM32 UART DMA receive with idle-line interrupt (MaJerle stm32-usart-uart-dma-rx-tx) on TI boards Works: MaJerle's STM32 UART DMA example answers every test packet at 115200 baud on the MSPM0 G3519, G5187, L1306, C1104 and MSPM33C321A.
- TI's MSPM0 DriverLib examples built and run with GCC Works: TI's MSPM0 DriverLib examples build and run with GCC from a terminal: all 224 no-RTOS examples with a GCC makefile built unchanged.
- Zephyr in 4 kB of RAM on the LP-MSPM0L1306 Works: Zephyr runs on the MSPM0 L1306 in 4 kB of RAM: hello_world, blinky and CoreMark.
- BoosterPack drivers (Educational MKII, Sharp128, Audio, Sensors MKII, NPU DSP) on LaunchPad kits of other families Could work: Portable C cores for BoosterPacks ran: the Educational pack on the MSPM0 L1306 and MSPM33 C321A, the Sharp128 panel on the MSPM0 C1104, the Audio pack on the AM13E230 and the Sensors pack on the MSPM0 G5187.
- One app, three ways: DriverLib, TI Drivers and Zephyr Could work: The same 81-line app builds three ways on the MSPM0 L1306, and the DriverLib and Zephyr builds ran with the same readings.
- Wiring demo: UART loop on one wire: All bytes right from 9.6 kbaud to 4.5 Mbaud and from 6.4 to 10.67 Mbaud
Want wireless? Try the LP-EM-CC2340R5 for Bluetooth, Zigbee or Thread or the LP-EM-CC35X1 for Wi-Fi.
Fixes
- If you see
wrong # args: should be "error message ?stacktrace?"aftermspm0_mass_erase, ignore it and load an image with DSLite or OpenOCD. - If you see
DAP Connection Error. This could be caused by the device having gone to low power mode, hold S1 (PA18), press and release S3, keep S1 held 2 more seconds, then flash a non-sleeping image at once. - If you see
error: 'IOMUX_PINCM38' undeclared here (not in a function), build with the out-of-tree board inmspm0l1306/zephyr/. - If you see region `RAM' overflowed (Zephyr sample), cut stacks and buffers as in
mspm0l1306/zephyr/extra/README.md. - If you see
run placement with alignment fails for section ".bss" size 0x1458, use static allocation and small task stacks. - If you see
symbol "interruptVectors" redefined(the threebsl_software_invoke_app_demo_*examples), skip them. - If you see Serial shows the boot text twice, read results in the OpenOCD connection that started it, or use the serial port.
- If you see Sleep current stays near 2.6 mA in any power mode, or a SysTick count does not stop in STANDBY0, unplug and replug USB, or clear the request in OpenOCD with
mspm0x.dap dpreg 0x04 0x00000000(this resets the chip once more), then measure.
How long an AI assistant took here
5 jobs timed with an AI coding assistant on this board, given the board's notes. Time is the median of the runs; passed means a person or a script checked the result. No spend or token counts here.
| Job | Assistant | Notes given | Time | Passed |
|---|---|---|---|---|
| blink | Sonnet 5.5 | with the board's notes | 1.3 min | 1 of 1 |
| coremark | Sonnet 5.5 | with the board's notes | 1.3 min | 1 of 1 |
| oneline terminal | opus5 | with the board's notes | 8.0 min | 1 of 1 |
| port usartdma | Sonnet 5.5 | with the board's notes | 7.3 min | 1 of 1 |
| zephyr question | Sonnet 5.5 | with the board's notes | 0.3 min | 1 of 1 |
For AI assistants
Point your assistant at this board's AGENTS.md (build, flash and fix notes), this board's llms-full.txt (every page for the board in one file) and the repository's llms.txt (the index).
Sources: mspm0l1306/README.md, mspm0l1306/AGENTS.md, mspm0l1306/FAQ.md, data/results/mspm0l1306.csv, site/data/portfolio.json, site/data/projects.json, site/data/ports.json.
