Hardware / No radio: small chips
LP-MSPM33C321A (MSPM33C321A)
The MSPM33C321A is a microcontroller in TI's MSPM33 family: 160 MHz Arm Cortex-M33, 1 MB of flash, 256 kB of RAM.
Quick facts
| Board | LP-MSPM33C321A |
|---|---|
| Chip | MSPM33C321A |
| Core | Cortex-M33 |
| Clock | 160 MHz |
| Flash | 1 MB |
| RAM | 256 kB |
| Radio | None |
| Notable peripherals | Hardware AES-256, SHA-256, public-key engine and random number generator, plus an immutable root of trust; two 12-bit ADCs rated 9.4 Msps; two CAN-FD; QSPI. TI lists post-quantum software library support. No NPU (TI's edge-AI device table) |
| On-board debug probe | XDS110 with EnergyTrace, on the board. Probe firmware 3.0.0.43 |
| Toolchains that ran | TI compilers, GCC, Zephyr, FreeRTOS, MicroPython |
Get it running
First blink: 19 s from plug-in to a changed blink (terminal).
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 blue: 250 ms on, 250 ms off and click Flash. The page writes it to the board.
You should see: LED2 blue (PA2) toggles every 250 ms.
Build and flash the blink. The number is the blink period in milliseconds.
mspm33c321a/blink.sh 250 <serial>
These are the recorded steps (AI assistant notes for the TI LP-MSPM33C321A LaunchPad). Run them from any terminal.
You should see: the LED toggles. The check script reads the LED pin over the probe.
What works
- CoreMark: 544.05 (3.40 per MHz) (TI Arm Clang, bare metal, -O3; 160 MHz; 3 runs)
- Interrupt latency, pend to first handler line: 20 cycles (bare metal; 32 MHz; 3 runs)
- GPIO toggle: 3.02 cycles (bare metal, -O3; 32 MHz; 3 runs)
- Blink image size: 800 B of flash, 256 B of RAM (bare metal; 32 MHz)
- Room-occupancy AI model, one inference: 0.749 ms (-O3; 160 MHz)
- Control loop, trigger to new PWM value: 5.029 µs (-O3, from flash; 160 MHz; 3 runs)
- 256-point complex FFT: 0.135 ms (TI Arm Clang, -O3; 160 MHz; 3 runs)
- AES-128: 7.35 cycles/B in hardware (TI Arm Clang, -O2; 32 MHz)
- RTOS task switch round trip: 11.47 µs (FreeRTOS; 32 MHz; 3 runs)
- Fastest ADC with DMA: 5.0 Msps (TI Arm Clang; 160 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: 19.0 s from the terminal, board plugged in, tools installed
- Run a small AI model on the chip: 0.75 ms per answer, fastest build on this chip
- Measure how fast a chip runs: 544.05 CoreMark score at the board's top clock
- Jack-o'-Lantern Jukebox: The show played from a power bank inside a carved pumpkin, filmed; 16k samples a second with 0 late sample ticks over 480 s
- Doom on a TI board: All three demos play from the board's QSPI flash
- Retro games on a LaunchPad: Game Boy at the console's own speed on the Educational BoosterPack screen: 0 late frames in 8,167
- Post-quantum on every board: Both algorithms with the same code, 6 of 6 steps pass NIST vectors
- Audio and video codecs on a LaunchPad: LC3, Opus, MP3 and Plaits run bit-exact against the Mac at 160 MHz; MP3 decodes in 0.151 times real time
- 2048 and Minesweeper on the LP-MSPM0G3519 with a 3.5 inch touch display Works: 2048 and Minesweeper run on the MSPM0 G3519 with a 3.5 inch touch display.
- Doom engine (doomgeneric and rp2040-doom's design) on the LP-EM-CC35X1 and the LP-MSPM33C321A Works: The rp2040-doom design plays all three shareware demos on the CC35X1 and the MSPM33 C321A, with frame checksums equal to a Cortex-M33 emulator.
- h264bsd video decoder on TI microcontrollers Works: h264bsd, an H.264 baseline decoder, runs unmodified on the MSPM33 C321A and AM13E230 with every frame checksum equal to the Mac's.
- liblc3 (LC3, the Bluetooth LE Audio codec) on the LP-MSPM33C321A and LP-MSPM0G3519 Works: liblc3 (LC3, the Bluetooth LE Audio codec) encodes and decodes frames on the MSPM33 C321A with the CRC-32 of every frame equal to the Mac build.
- libopus 1.5.2 (Opus, RFC 6716) on the LP-MSPM33C321A Works: libopus encodes and decodes voice and music on the MSPM33 C321A, with packets and PCM equal to a Mac build in 12 of 12 runs.
- llama2.c (TinyStories 260K, int8) on the LP-MSPM33C321A Works: llama2.c's TinyStories model writes a short story on the MSPM33 C321A, with token ids equal to the Cortex-M33 emulator run.
- MicroPython 1.29.0 on the LP-MSPM33C321A through upstream's Zephyr port Works: MicroPython's own Zephyr port runs with its stock prj.conf on the MSPM33 C321A: a >>> prompt, Pin, float math and SPI from Python.
- minimp3 MP3 decoder on the LP-MSPM33C321A and LP-MSPM0G3519 Works: minimp3 decodes MP3 clips bit-exact against the Mac on the MSPM33 C321A and MSPM0 G3519.
- MSPM0 examples on the LP-MSPM33C321A Works: MSPM0 DriverLib examples run on the MSPM33 C321A: 39 of the 40 ported ones ran without a fault.
- Peanut-GB Game Boy emulator on MSPM0 and MSPM33 Works: Peanut-GB plays Tobu Tobu Girl on the MSPM33 C321A with the Educational BoosterPack screen at the console's own speed.
- Plaits synthesis engines (Mutable Instruments, MIT) on the LP-MSPM33C321A Works: All 24 Plaits synthesis engines render bit-exact against the Mac on the MSPM33 C321A.
- 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.
- wasm3 (WebAssembly interpreter) on the LP-MSPM0G3519, LP-MSPM0G3507 and LP-MSPM33C321A Works: wasm3 runs a WebAssembly module on the MSPM0 G3519 and prints PASS on the serial line.
- Arduboy2-compatible layer and three open-source games on MSPM0 and MSPM33 Could work: Snake, TileWorld and Crate Confusion build unchanged against an Arduboy2-compatible layer for four kits, and Snake draws on the MSPM33 C321A's Educational BoosterPack screen.
- 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.
Want wireless? Try the LP-EM-CC2340R5 for Bluetooth, Zigbee or Thread or the LP-EM-CC35X1 for Wi-Fi.
Fixes
- If you see
Device Connection Error ... low power modeafter the FreeRTOSblink_ledexample:xds110reset -s <serial> -a toggle -d 200, then flash a normal image. - If you see a flash write passes verify (an on-chip check and a read-back) on the MSPM33 or AM13, but the new program never starts: the LED does not change, or the old program still runs, clear
FRI FRD_INTF_CTRL(0x4002900C: bit 1 data cache, bit 2 code cache; same address on both chips) while the core is halted, write, then reset. - If you see
Verification failed: Values at address 0x00000020 do not match, fix the link line, reset and reflash. - If you see
Case insensitivity of options has been deprecated; T must be written as t, change it to./mspm33c321a.cmdin the example's makefile. - If you see FreeRTOS test hangs in an interrupt that calls
xSemaphoreGiveFromISR:NVIC_SetPriority(irq, 0x40u >> (8 - __NVIC_PRIO_BITS)); the prebuilt kernel has no static allocation. - If you see I2C scan on the Education BoosterPack finds nothing, use SCL PB13 (pin 9) and SDA PB12 (pin 10).
- If you see the Education BoosterPack's microphone pin ignores speech, the light sensor does not answer at 0x44, buttons read pressed, build and run
portability/boosterpacks/edumkii/examples/probe(APP=probe) and look for 0x44 before debugging code. - If you see a C++ image that allocates stops after its first console line, add
-Wl,--heap_size=32768to the link flags.
How long an AI assistant took here
1 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 |
|---|---|---|---|---|
| port usartdma | Sonnet 5.5 | with the board's notes | 8.6 min | 1 of 1 |
For AI assistants
Point your assistant at this board's AGENTS.md (build, flash and fix notes) and the repository's llms.txt (the index).
Sources: mspm33c321a/README.md, mspm33c321a/AGENTS.md, mspm33c321a/FAQ.md, data/results/mspm33c321a.csv, site/data/portfolio.json, site/data/projects.json, site/data/ports.json.