MSPM0 SDK Examples Guide

1. Introduction

The MSPM0 SDK is packaged with a wide selection of code examples to enable engineers to develop applications on Texas Instruments’ MSPM0 family of microcontrollers.

The examples folder is divided into RTOS and non-RTOS subfolders (currently only non-RTOS is supported). These folders contain examples for each LaunchPad and are organized based on function with lower-level Driverlib examples, higher-level TI Drivers examples, and examples for middleware such as GUI Composer, LIN, IQMath, and others.

Some examples support SysConfig to simplify the device configuration and accelerate software development. Refer to the SDK QuickStart guide for more details on how to get started using SysConfig, and look for the SysConfig symbol image0 in the sections below.

2. MSPM0 SDK Examples

2.1 Demos

The MSPM0 SDK includes several demos to showcase the functionalities of various devices.

Each demo is packaged with its own documentation, full source code, and project files for different supported IDEs and compilers, making the demos easy to use.

Stay tuned for more examples and functionality.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

blood_pressure_monitor

Blood Pressure Monitor demos

N

Y

N

bq769x2_control_i2c

Demonstrate BQ769x2 control through I2C

N

image1

N

dualray_smoke_detector

Dualray smoke detector demo

N

image2

N

lcd_multi_port

1-wire target emulating a EEPROM interface

image3

N

N

lcd_single_port

1-wire target emulating a EEPROM interface

image4

image5

N

one_wire

1-wire target emulating a EEPROM interface

N

image6

N

out_of_box

Out of Box experience for MSPM0 LaunchPads

Y

Y

Y

pir_motion_detection

PIR Motion Detection using integrated OPA for the signal chain

N

image7

N

pulse_oximeter

Pulse oximeter demos

N

image8

N

2.2 DriverLib

DriverLib is a set of low level drivers providing an API for accessing MSPM0 registers and full device functionality.

The examples below use the Driverlib API to demonstrate the device functionality and range from simple use cases such as toggling a GPIO output pin to more complex use cases where multiple device peripherals are used.

Each example is packaged with its own documentation, full source code, and project files for different supported IDEs and compilers, making the examples easy to use.

2.2.1 AES Accelerator (AES)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

aes_cbc_256_enc_dec

AES256 CBC encryption and decryption example

image9

N

N

aes_cfb_256_decrypt

AES CFB 256 bit decryption example

image10

N

N

aes_ofb_128_encrypt

AES OFB 128 bit encryption example

image11

N

N

2.2.2 Analog-to-Digital Converter (ADC)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

adc12_14bit_resolution

ADC12 conversion at maximum frequency using DMA with hardware averaging enabled

image12

image13

image14

adc12_internal_temp_sensor_mathacl

ADC12 samples internal temperature sensor and converts reading to Celsius and Fahrenheit degrees

image15

N

N

adc12_max_freq_dma

ADC12 conversion at maximum frequency using DMA

image16

image17

image18

adc12_max_freq_dma_8bit

ADC12 conversion at maximum frequency using DMA in 8 bit resolution

image19

image20

image21

adc12_monitor_supply

ADC12 monitors voltage supply channel

image22

image23

image24

adc12_sequence_conversion

Demonstrate configuring ADC to trigger sequence of conversions on 4 different channels

image25

image26

N

adc12_simultaneous_trigger_event

Dual ADC12 conversion triggered by a Timer event

image27

N

N

adc12_simultaneous_trigger_event_stop

Dual ADC12 conversion triggered by a Timer event while in STOP mode

image28

N

N

adc12_single_conversion

ADC12 simple single conversion triggered by software

image29

image30

image31

adc12_single_conversion_vref_external

ADC12 single conversion triggered by software using external reference

image32

image33

N

adc12_single_conversion_vref_internal

ADC12 single conversion triggered by software using internal VREF

image34

image35

image36

adc12_triggered_by_timer_event

ADC12 conversion triggered by a Timer event

image37

image38

image39

adc12_triggered_by_timer_event_stop

ADC12 conversion triggered by a Timer event while in STOP mode

image40

image41

image42

adc12_window_comparator

ADC12 single conversion in repeat mode using window comparator feature

image43

image44

image45

2.2.3 Comparator (COMP)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

comp_analog_filter

Comparator using external inputs with hysteresis and output analog filter

image46

image47

N

comp_dac_to_timer_event

Comparator output using 8-bit DAC triggers a timer event to measure timing

image48

image49

N

comp_hs_dac_vref_external

Comparator in high-speed mode using 8-bit DAC with external VREF

image50

image51

N

comp_hs_tima_pwm_fault

Comparator in high-speed mode triggers a TIMA fault

image52

N

N

comp_lp_dac_vref_internal

Comparator in low-power mode using 8-bit DAC with internal VREF

image53

N

N

2.2.4 Controller Area Network (CAN)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

mcan_loopback

MCAN transmits and receives messages using loopback mode

image54

N

N

mcan_message_rx

Example configured to receive CAN and CAN-FD frames

image55

N

N

mcan_message_rx_tcan114x

Example configured to receive CAN and CAN-FD frames using BOOSTXL-TCAN1145 boosterpack.

image56

N

N

mcan_multi_message_tx

CAN-FD transmits two messages with unique ID on GPIO interrupt

image57

N

N

mcan_multi_message_tx_tcan114x

CAN-FD transmits two messages with unique ID on GPIO interrupt using BOOSTXL-TCAN1145 boosterpack.

image58

N

N

mcan_single_message_tx

CAN-FD transmits a single message on GPIO interrupt

image59

N

N

2.2.5 Cyclic Redundancy Check (CRC)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

crc_calculate_checksum

CRC checksum calculation of a memory block

image60

image61

image62

crc_calculate_checksum_dma

CRC32 checksum calculation of a memory block using DMA block transfer

image63

image64

N

2.2.6 Digital-to-Analog Converter (DAC)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

dac12_dma_sampletimegen

DAC12 using DMA with sample time generator to generate sine wave

image65

N

N

dac12_fifo_sampletimegen

DAC12 sending repetitive signal using FIFO and sample timer generator

image66

N

N

dac12_fifo_timer_event

DAC12 sending a sawtooth signal using FIFO and triggered by a Timer event

image67

N

N

dac12_fixed_voltage_vref_internal

DAC12 setting a fixed voltage output

image68

N

N

2.2.7 Direct Memory Access (DMA)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

dma_block_transfer

DMA copies from Flash main memory to SRAM memory

image69

image70

image71

dma_fill_data

DMA memory fill of SRAM using DMA

image72

image73

N

dma_table_transfer

DMA using Table mode with DMA

image74

image75

N

2.2.8 Events Manager

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

event_input_triggers_output

Event configuration to toggle LED when switch is pressed

image76

image77

image78

2.2.9 GPIO

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

gpio_input_capture

GPIO triggers interrupt by input capture pin

image79

image80

image81

gpio_simultaneous_interrupts

Demonstrates how to simultaneously service three GPIO interrupts

image82

N

N

gpio_software_poll

GPIO output is set based on polled input

image83

image84

image85

gpio_toggle_output

GPIO toggling an output pin

image86

image87

image88

gpio_toggle_output_cpp

GPIO toggling output pins using C++

image89

image90

N

gpio_toggle_output_hiz

GPIO toggling an ouputput pin configured as Hi-Z

image91

image92

image93

2.2.10 General-Purpose Amplifier (GPAMP)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

gpamp_buffer_to_adc

GPAmp configured in buffer mode with output to ADC

image94

image95

N

gpamp_general_purpose_rri

GPAmp configured in general purpose Rail-to-Rail mode

image96

image97

N

2.2.11 Inter-Integrated Circuit (I2C)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

i2c_controller_rw_multibyte_fifo_interrupts

I2C Controller reading and writing multiple bytes using interrupts with FIFO

image98

image99

image100

i2c_controller_rw_multibyte_fifo_poll

I2C Controller reading and writing multiple bytes polling FIFO

image101

image102

image103

i2c_controller_target_dynamic_switching

I2C dynamic switching between Controller and Target modes

image104

image105

image106

i2c_multicontroller_arbitration

I2C Controller detecting arbitration error

image107

image108

image109

i2c_target_rw_multibyte_fifo_interrupts

I2C Target reading and writing multiple bytes using interrupts

image110

image111

image112

i2c_target_rw_multibyte_fifo_interrupts_stop

I2C Target reading and writing multiple bytes using interrupts while in STOP mode

image113

image114

image115

i2c_target_rw_multibyte_fifo_poll

I2C Target reading and writing multiple bytes polling FIFO

image116

image117

image118

2.2.12 Math Accelerator (MATHACL)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

mathacl_mpy_div_op

MATHACL multiply and divide using fixed point

image119

N

N

mathacl_trig_op

MATHACL implementation of trigonometric functions

image120

N

N

2.2.13 Non-Volatile Memory (FLASHCTL)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

flashctl_blank_verify

Implementation of Flash Blank Verify command

image121

image122

image123

flashctl_dynamic_memory_protection

Flash configured with dynamic protection

image124

image125

image126

flashctl_ecc_error_injection

Flash ECC testing and SEC and DED error detection

image127

N

N

flashctl_multiple_size_read_verify

Implementation of Flash read verify commands on multiple data sizes, with and without ECC

image128

image129

image130

flashctl_multiple_size_write

Flash writing of different size data

image131

image132

image133

flashctl_nonmain_memory_write

Read-write of Non-Main Flash memory

image134

image135

image136

flashctl_program_with_ecc

Flash programming with ECC

image137

N

N

2.2.14 Operational Amplifier (OPA)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

opa_burnout_current_source_to_adc

OPA in buffer mode enabling burnout current source to ADC

image138

image139

N

opa_dac8_output_buffer

OPA in output buffer mode using 8-bit DAC

image140

image141

N

opa_general_purpose_rri

OPA in general purpose mode with Rail-to-Rail configuration

image142

image143

N

opa_inverting_pga_with_dac

OPA in inverting PGA configuration using DAC12 as bias

image144

N

N

opa_non_inverting_pga

OPA in non-inverting PGA configuration

image145

image146

N

opa_signal_chain_to_adc

Two OPAs configured in TIA and PGA, connected to ADC

image147

N

N

2.2.15 Other

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

cinit_bypass

Bypass CINIT skipping variable initialization

image148

image149

image150

empty

Empty start-up project using DriverLib

image151

image152

image153

empty_cpp

Empty C++ start-up project using DriverLib

image154

image155

N

empty_driverlib_src

Empty start-up project using DriverLib

image156

image157

image158

empty_library

Empty start-up library project using DriverLib

Y

Y

Y

empty_non_sysconfig

Empty, non-SysConfig, start-up project using DriverLib

Y

Y

Y

nvic_interrupt_disable

NVIC used to demonstrate best approach to disable interrupts

image159

image160

image161

nvic_interrupt_grouping

NVIC configuration and use of interrupt grouping

image162

image163

image164

sram_parity

Initializes and uses Parity SRAM

image165

N

N

systick_periodic_timer

SysTick generates periodic interrupt

image166

image167

N

2.2.16 Real-Time Clock (RTC)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

rtc_calendar_alarm_standby

RTC sets calendar alarm and toggles GPIO when alarm is triggered

image168

N

N

rtc_offset_calibration_lfxt

RTC offset correction of crystal

image169

N

N

rtc_periodic_alarm_lfosc_standby

RTC implementation of periodic alarm in STANDBY using LFOSC

image170

N

N

rtc_periodic_alarm_lfxt_standby

RTC implementation of periodic alarm in STANDBY using LFXT

image171

N

N

2.2.17 Serial Peripheral Interface (SPI)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

spi_controller_command_data_control

SPI Controller transmit using command data (CD) control

image172

image173

image174

spi_controller_echo_interrupts

SPI Controller transmits data using Motorola format

image175

image176

N

spi_controller_fifo_dma_interrupts

SPI Controller reading and writing multiple bytes using FIFO and DMA

image177

image178

N

spi_controller_internal_loopback_poll

SPI Controller with internal loopback using polling

image179

image180

image181

spi_controller_multibyte_fifo_poll

SPI Controller reading and writing multiple bytes polling FIFO

image182

image183

image184

spi_controller_register_format

SPI Controller transmit and read data using register format

image185

image186

image187

spi_controller_repeated_fifo_dma_interrupts

SPI Controller reading and writing multiple bytes using FIFO and DMA every second

image188

image189

N

spi_peripheral_echo_interrupts

SPI Peripheral echoes data using Motorola format

image190

image191

image192

spi_peripheral_fifo_dma_interrupts

SPI Peripheral reading and writing multiple bytes using FIFO and DMA

image193

image194

N

spi_peripheral_multibyte_fifo_poll

SPI Peripheral reading and writing multiple bytes polling FIFO

image195

image196

image197

spi_peripheral_register_format

SPI Peripheral transmit and read data using register format

image198

image199

image200

spi_peripheral_repeated_fifo_dma_interrupts

SPI Peripheral reading and writing multiple bytes using FIFO and DMA

image201

image202

N

2.2.18 System Controller (SYSCTL)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

sysctl_frequency_clock_counter

Monitor SYSOSC via Frequency Clock Counter (FCC)

image203

image204

image205

sysctl_hfxt_run

Sets external HFXT as source to HSCLK and MCLK (48MHz)

image206

N

N

sysctl_lfxt_standby

Sets LFXT as source to LFCLK (32kHz) and power policy in STANDBY0

image207

N

N

sysctl_mclk_syspll

Sets MCLK to run from SYSPLL (80MHz)

image208

N

N

sysctl_power_policy_sleep_to_standby

SYSCTL switches between SLEEP mode and STANDBY modes

image209

image210

image211

sysctl_power_policy_sleep_to_stop

SYSCTL switches between SLEEP mode and STOP modes

image212

image213

image214

sysctl_shutdown

Show correct wake-up mechanism after SHUTDOWN vs STOP, STANDBY and SLEEP

image215

image216

image217

2.2.19 Timer - Advanced (TIMA)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

tima_timer_mode_periodic_repeat_count

TimerA in periodic mode using repeat-count feature

image218

N

image219

tima_timer_mode_pwm_dead_band

TimerA outputs PWM signals with dead band insertion

image220

N

image221

tima_trigger_fail_mechanism

TimerA demonstrating fault detection

image222

N

image223

2.2.20 Timer - General Purpose (TIMG)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

timg_32bit_timer_mode_periodic_sleep

32-bit timer in periodic mode while device is in SLEEP mode

image224

N

N

timg_32bit_timer_mode_pwm_edge_sleep

32-bit timer in PWM edge aligned mode while device is in SLEEP mode

image225

N

N

timg_qei_mode

TimerG uses QEI to decode relative position output of a quadrature encoder

image226

N

image227

2.2.21 Timer - Generic (TIMx)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

timx_timer_mode_capture_duty_and_period

Timer calculates period and duty cycle

image228

image229

image230

timx_timer_mode_capture_edge_capture

Timer edge time detection using Timer capture mode

image231

image232

image233

timx_timer_mode_compare_edge_count

Timer edge counting capability using compare mode

image234

image235

image236

timx_timer_mode_one_shot_standby

Timer in one-shot mode while device is in STANDBY mode

image237

image238

image239

timx_timer_mode_periodic_sleep

Timer in periodic mode while device is in SLEEP mode

image240

image241

image242

timx_timer_mode_periodic_standby

Timer in periodic mode while device is in STANDBY mode

image243

image244

image245

timx_timer_mode_periodic_stop

Timer in periodic mode while device is in STOP mode

image246

image247

image248

timx_timer_mode_pwm_center_stop

Timer in PWM center aligned mode while device is in STOP mode

image249

image250

image251

timx_timer_mode_pwm_cross_trigger_stop_restore

Timer in PWM mode after coming out of STOP with retention in SW

image252

N

N

timx_timer_mode_pwm_edge_sleep

Timer in PWM edge aligned mode while device is in SLEEP mode

image253

image254

image255

timx_timer_mode_pwm_edge_sleep_shadow

Timer updating PWM duty cycle using shadow load feature

image256

image257

image258

2.2.22 True Random Number Generator (TRNG)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

trng_sample

TRNG sampling to fill a buffer with random data

image259

N

N

trng_sample_stop_restore

TRNG sample random data after coming out of STOP with retention in SW

image260

N

N

2.2.23 Universal Asynchronous Receiver-Transmitter (UART)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

uart_echo_interrupts_standby

UART RX/TX echo using interrupts while device is in STANDBY mode

image261

image262

image263

uart_extend_irda_receive_packet

UART Extend using IrDA encoding, send packet via UART

image264

N

N

uart_extend_irda_send_packet

UART Extend using IrDA encoding, send packet via UART

image265

N

N

uart_extend_manchester_echo

UART Extend using Manchester encoding, echo received packet

image266

image267

image268

uart_extend_manchester_send_packet

UART Extend using Manchester encoding and decoding, send a packet

image269

image270

image271

uart_external_loopback_interrupt

UART RX/TX external loopback using interrupts

image272

image273

image274

uart_internal_loopback_standby_restore

UART internal loopback after coming out of STANDBY with retention in SW

image275

N

N

uart_rs485_receive_packet

Demonstrate UART in RS485 mode, receive a packet

image276

N

N

uart_rs485_send_packet

Demonstrate UART in RS485 mode, send a packet

image277

N

N

uart_rw_multibyte_fifo_poll

UART RX/TX using FIFOs with polling

image278

image279

image280

uart_rx_hw_flow_control

UART RX using HW flow control

image281

image282

image283

uart_rx_multibyte_fifo_dma_interrupts

UART RX using a DMA trigger

image284

image285

N

uart_tx_console_multibyte_repeated_fifo_dma

UART TX to console using a continuous DMA Triggers

image286

image287

N

uart_tx_hw_flow_control

UART TX using hardware flow control

image288

image289

image290

uart_tx_multibyte_fifo_dma_interrupts

UART TX using a DMA trigger

image291

image292

N

2.2.24 Window Watchdog Timer (WWDT)

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

wwdt_interval_timer_lfosc_standby

WWDT interval timer mode using LFOSC while device is in STANDBY mode

image293

image294

image295

wwdt_interval_timer_lfxt_standby

WWDT interval timer mode using LFXT while device is in STANDBY mode

image296

N

N

wwdt_window_mode_periodic_reset

WWDT Window watchdog mode with periodic reset

image297

image298

image299

2.3 TI-Drivers

TI Drivers provide a robust set of intuitive, functional APIs that offer portable, feature-rich access to peripherals.

TI-Drivers for MSPM0 are under development, but the examples below provide a glimpse of expected functionality.

2.3.1 FreeRTOS

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

adc_singlechannel

Get the samples from the configured ADC channel and print them on the console using UART

Y

N

N

gpiointerrupt

Toggles the LED(s) using a GPIO pin interrupt

Y

N

N

i2c_tmp

Read temperature from Tmp117 Sensor using I2C

Y

N

N

spi_controller

Demonstrates the SPI driver in controller mode

Y

N

N

spi_peripheral/freertos

Demonstrates the SPI driver in peripheral mode

Y

N

N

uart_callback/freertos

UART simple echo using callback

Y

Y

N

uart_echo/freertos

UART simple echo

Y

Y

N

2.3.2 No RTOS

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

uart_echo/nortos

UART simple echo

Y

N

N

2.4 Battery Gauge

The MSPM0 SDK includes source code and examples showing the implementation of different battery gauge solutions. Documentation includes links to companion application reports describing the solutions in more detail.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

gauge_level1

The level1 gauge approach utilizes the ADC to implement a low-cost voltage detection solution

N

Y

N

self_calibrate_current_detection

This example demonstrates a self-calibratable, high precision and low-cost current detection solution based on MSPM0 internal OPAs

N

Y

N

2.5 Boot Image Manager (BIM)

The MSPM0 SDK includes a boot image manager implementation to demonstrate how a user can verify integrity and authenticity of images loaded onto their device.

2.5.1 Single Stage

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

bim_sample_image

Sample GPIO toggle image for BIM

image300

image301

N

boot_application

Boot Image Manager Using MCUBoot

image302

image303

N

2.6 Bootstrap Loader (BSL)

The bootstrap loader (BSL) provides a method to program and/or verify the device memory through a standard UART or I2C serial interface. Among its features, the BSL supports MAIN flash plugins to enable additional interfaces and functionality.

The MSPM0 SDK includes examples showing how to implement plugins and other BSL functionality in MAIN Flash.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

bsl_can_flash_interface

Shows an implementation of a BSL CAN Flash interface

image304

N

N

bsl_host_mcu_can

Shows an implementation of a BSL host utilizing CAN interface

image305

N

N

bsl_host_mcu_i2c_to_m0g_target

Shows an implementation of BSL I2C Flash interface with MSPM0G as host to MSPM0G target

image306

N

N

bsl_host_mcu_i2c_to_m0l_target

Shows an implementation of BSL I2C Flash interface with MSPM0G as host to MSPM0L target

image307

N

N

bsl_host_mcu_spi

Shows an implementation of a BSL host utilizing SPI interface

Y

N

N

bsl_host_mcu_uart_to_m0g_target

Shows an implementation of BSL UART Flash interface with MSPM0G as host to MSPM0G target

image308

N

N

bsl_host_mcu_uart_to_m0l_target

Shows an implementation of BSL UART Flash interface with MSPM0G as host to MSPM0L target

image309

N

N

bsl_i2c_flash_interface

Shows an implementation of BSL I2C Flash interface

image310

image311

N

bsl_software_invoke

Jump to ROM bootloader on application request

image312

image313

N

bsl_spi_flash_interface

Shows an implementation of a BSL SPI Flash interface

image314

image315

N

bsl_uart_flash_interface

Shows an implementation of a BSL UART Flash interface

image316

image317

N

secondary_bsl

Implements a secondary bootloader in Main overriding the ROM BSL

image318

image319

N

2.7 CMSIS-DSP

The CMSIS DSP software library includes a comprehensive set of signal processing functions for use on Cortex-M MCUs.

The MSPM0 SDK includes examples showing how to get started using CMSIS DSP.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

cmsis_dsp_empty

Empty example using CMSIS-DSP

image320

image321

N

cmsis_dsp_fft_q15

FFT of fixed point array using CMSIS-DSP

image322

image323

N

2.8 DALI

MSPM0 supports the DALI Protocol via the UART module. DALI (Digitally Addressable Lighting Interface) is a serial protocol for digital lighting control that allows for simple and efficient communication between various lighting application gear and controllers.

The MSPM0 SDK includes the source code and examples showing the implementation of supported solutions.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

dali_led_demo

Demonstrates usage of DALI protocol with an LED control demo

N

image324

N

2.9 EEPROM

MSPM0 supports EEPROM emulation through its internal Flash. Compared to using an external serial EEPROM, EEPROM emulation using the internal Flash saves pin usage and cost.

The MSPM0 SDK includes a library and examples showing the implementation of supported solutions.

2.9.1 Type-A

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

eeprom_emulation_type_a

Demonstrates Type A EEPROM emulation to store non-volatile data

Y

Y

N

eeprom_emulation_type_a_test

Demonstrates a more detailed use case of Type A EEPROM emulation to store blocks of non-volatile data

Y

Y

N

2.9.2 Type-B

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

eeprom_emulation_type_b

Demonstrates Type B EEPROM emulation to store user data

Y

Y

N

eeprom_emulation_type_b_test

Demonstrates a more detailed use case of Type B EEPROM emulation to store user data

Y

Y

N

2.10 GUI Composer

GUI Composer is a browser-based tool for developing PC-side HTML-based GUIs that can complement your embedded project or application.

The MSPM0 SDK includes a library and various examples showing the implementation of supported protocols.

2.10.1 Streaming Protocols

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

gc_simple_json

Demonstrates basic usage of GUI Composer communication using JSON-formatted strings

image325

image326

N

gc_simple_messagepack

Demonstrates basic usage of GUI Composer communication using MessagePack protocol

image327

image328

N

2.11 IQMath

IQMath is a collection of highly optimized and high-precision fixed-point mathematical functions.

The MSPM0 SDK includes IQMath support using simple C runtime-system (RTS) functions, and leveraging the MathAcl hardware accelerator.

2.11.1 Compiler RTS library

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

iqmath_rts_ops_test

Implements various fixed-point operations leveraging the RTS implementation of IQMath

image329

image330

N

2.11.2 MathACL

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

iqmath_mathacl_ops_test

Implements various fixed-point operations leveraging the MathACL implementation of IQMath

image331

N

N

2.12 RTOS Kernel

The MSPM0 SDK includes a collection of examples to test kernel functionality.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

blink_led

Simple FreeRTOS LED blinky demo using two tasks

image332

image333

N

posix_demo

Simple Posix FreeRTOS blinky LED demo

image334

image335

N

2.13 LIN

The Local Interconnect Network (LIN) is a multipoint, low-cost, easily-implemented communication bus commonly used in automobiles.

The MSPM0 SDK includes easy-to-use examples for Commander and Responder.

2.13.1 Commander

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

lin_commander

Demonstrates basic implementation of LIN commander to transmit and receive LIN 2.0 packets using UART

image336

image337

image338

2.13.2 Responder

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

lin_responder

Demonstrates basic implementation of LIN responder to transmit and receive LIN 2.0 packets using UART

image339

image340

image341

2.14 Sensored Trap Hall Motor Control

The MSPM0 SDK includes examples to evaluate the sensored trap hall motor control library with the DRV8300DRGEEVM, DRV8311HEVM, DRV8316REVM, DRV8317HEVM, DRV8323RHEVM, DRV8328AEVM, DRV8329AEVM and DRV8353RHEVM. These firmware are designed for a GUI to make testing and evaluation quick for the user.

Stay tuned for more examples and functionality coming soon.

2.14.1 DRV8300

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8300drgeevm-gui-firmware

Firmware for LP_MSPM0G3507 and drv8300drge EVM GUI

image342

N

N

2.14.2 DRV8311

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8311hevm-gui-firmware

Firmware for LP_MSPM0G3507 and drv8311h EVM GUI

image343

N

N

2.14.3 DRV8316

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8316revm-gui-firmware

Firmware for LP_MSPM0G3507 and DRV8316R EVM GUI

image344

N

N

2.14.4 DRV8317

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8317hevm-gui-firmware

Firmware for LP_MSPM0G3507 and drv8317h EVM GUI

image345

N

N

2.14.5 DRV8323

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8323rhevm-gui-firmware

Firmware for LP_MSPM0G3507 and drv8323rh EVM GUI

image346

N

N

2.14.6 DRV8328

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8328aevm-gui-firmware

Firmware for LP_MSPM0G3507 and DRV8328A EVM GUI

image347

N

N

tida-010251-gui-firmware

Firmware for LP_MSPM0G1507 and DRV8328 motor driver

image348

N

N

2.14.7 DRV8329

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8329aevm-gui-firmware

Firmware for LP_MSPM0G3507 and DRV8329A EVM GUI

image349

N

N

drv8329aevm-gui-firmware-MSPM0L1306

Firmware for LP_MSPM0L1306 and DRV8329A EVM GUI

N

image350

N

2.14.8 DRV8353

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8353rhevm-gui-firmware

Firmware for LP_MSPM0G3507 and drv8353rh EVM GUI

image351

N

N

2.15 Sensorless FOC Motor Control

The MSPM0 SDK includes examples to evaluate the sensorless FOC motor control library with the DRV8323RS EVM. These firmware are designed for a GUI to make testing and evaluation quick for the user.

Stay tuned for more examples and functionality coming soon.

2.15.1 DRV8323RS

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

sensorless-foc-demo

Demo sensorless FOC code for LP_MSPM0G3507 and DRV8323RS EVM GUI

image352

N

N

2.16 Brushed Motor Control

The MSPM0 SDK includes an example to evaluate the brushed motor control library with the DRV8706-Q1 EVM. This firmware was designed for a GUI to make testing and evaluation quick for the user.

Stay tuned for more examples and functionality coming soon.

2.16.1 DRV8706-Q1

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8706s-q1evm-gui-firmware

Firmware for LP_MSPM0L1306 and DRV8706S-Q1 EVM GUI

N

image353

N

2.17 Stepper Motor Control

The MSPM0 SDK includes examples to evaluate the stepper motor control library with the DRV8411A and DRV8889-q1 EVM. These firmwares were designed for a GUI to make testing and evaluation quick for the user.

Stay tuned for more examples and functionality coming soon.

2.17.1 DRV8411A

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8411aevm-gui-firmware

Firmware for LP_MSPM0L1306 and DRV8411AEVM GUI

N

image354

N

2.17.2 DRV8889-Q1

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

drv8889-q1evm-gui-firmware

Firmware for LP_MSPM0L1306 and DRV8889-Q1 EVM GUI

N

image355

N

2.18 MSP Subsystems

The MSP Subsystems contains examples showing more complex functionality implemented with multiple peripherals.

The examples use DriverLib APIs, and includes full source code and documentation with detailed usage instructions.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

adc_dma_ping_pong

Capture ADC data into 2 (ping-pong) buffers

image356

image357

N

adc_to_i2c_target

Sample ADC and respond to I2C commands sent by a controller

image358

image359

N

adc_to_pwm

Convert analog voltage to PWM

image360

image361

N

adc_to_spi_peripheral

Sample ADC and respond to SPI commands sent by a controller

image362

image363

N

adc_to_uart

Configures the ADC0 to trigger single conversion and send the ADC data through UART

image364

image365

N

can_to_i2c_controller_bridge

Bridge between CAN interface and I2C controller interface

image366

N

N

can_to_i2c_target_bridge

Bridge between CAN interface and I2C target interface

image367

N

N

can_to_spi_bridge

Bridge between CAN interface and SPI interface

image368

N

N

can_to_uart_bridge

Bridge between CAN interface and UART interface

image369

N

N

data_sensor_aggregator

This example reads all the sensors on the BP-BASSENSORSMKI using I2C then transmits all of the data through UART to the MSPM0.

image370

N

N

digital_mux

Emulate a digital mux with GPIO

N

image371

N

diode_matrix

Drive LEDs with fewer pins using diode matrix

N

image372

N

fir_low_pass_filter

Applies digital FIR low-pass filter to sampled ADC signals

image373

N

N

iir_low_pass_filter

Applies digital IIR filter to sampled ADC signals

image374

N

N

io_expander_uart

Capture several GPIOs’ status, update and send the status to host through UART

N

image375

N

power_sequencing

This sub system allows for different pins/applications be turned on/off in a sequence as to not over load the device from simultaneous power consumption.

image376

image377

N

programmable_gain_amplifier_1

Use programmable gain amplifier to dynamically adjust gain

N

image378

N

programmable_gain_amplifier_2

Use programmable gain amplifier to dynamically adjust gain and capture values with integrated ADC

N

image379

N

pushbutton_change_pwm

This example demonstrates using the two switches on the MSPM0 Launchpad to change the period and duty cycle on TIMA1 PWM output channels CC0 and CC1.

image380

N

N

pwm_dac

Use a timer to create a PWM DAC

N

image381

N

pwm_led_driver

Create a pulsating LED effect using timers

image382

image383

N

signal_acquisition

OPA supports two different sensor input voltages and uses common ADC channel

image384

N

N

task_scheduler

A simple run to completion task scheduler

image385

image386

N

temp_sense_thermistor

Sample LaunchPad thermistor using integrated Op-Amp and ADC

N

image387

N

transimpedance_amplifier

Configure Op-amp in transimpedance amplifier topology

N

image388

N

two_opa_instrumentation_amplifier

Along with an external circuit this code amplifies the difference between two voltage inputs and outputs a single ended signal while rejecting the common-mode voltage.

image389

image390

N

uart_to_i2c_bridge

Translates UART packets to multiple I2C devices

image391

image392

N

2.19 PMBUS

PMBus is a protocol design to interface with power management devices. It uses the SMBus protocol as a base.

The MSPM0 SDK includes a ready-to-go example for using an MSPM0 devices as a PMBus controller for a TPS544B20 device.

2.19.1 Controller

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

pmbus_controller_tps544b20evm

Use MSPM0 to configure TPS544B20EVM over PMBus

image393

image394

N

2.20 SASI Smoke Detector

MSPM0 supports analog front ends for chambered or chamberless smoke detectors and air quality sensing solutions.

The MSPM0 SDK includes a software library and reference examples for smoke detection and air quality sensing.

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

air_quality_sensing

Implements an analog front end for air quality sensing

N

Y

N

sasi_smoke_detector

Implements an analog front end for smoke detectors

N

Y

N

2.21 SENT

The Single Edge Nibble Transmission (SENT) is a unidirectional communication standard used in automotive networks.

The MSPM0 SDK includes easy-to-use examples for transmitting a SENT frame.

2.21.1 Transmit

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

sent_transmit

Demonstrates basic implementation of SENT protocol

N

image395

N

2.22 SMBus

The System Management Bus (SMBus) is a single-ended simple two-wire bus for lightweight communication.

The MSPM0 SDK includes easy-to-use examples for Controller and Target.

2.22.1 Controller

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

smbus_controller

Demonstrates basic implementation of SMBus Controller testing all SMBus 2.0 protocols using I2C

image396

image397

N

2.22.2 Target

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

smbus_target

Demonstrates basic implementation of SMBus Target testing all SMBus 2.0 protocols using I2C

image398

image399

N

2.23 Energy Library

The MSPM0 SDK includes a collection of energy measurement examples designed to get you started quickly in testing and developing energy measurement applications.

Stay tuned for more examples and functionality coming soon.

2.23.1 TIDA_010243

Project Name

Description

EVM

LP_MSPM0G3507

LP_MSPM0L1306

LP_MSPM0C1104

TIDA_010243_SW

Firmware for 3 phase measurement using MSPM0G3507 and ADS131M0x

image400

N

N