ZHCUCS7 February 2025 MSPM0C1103 , MSPM0C1104 , MSPM0G3507 , MSPM0G3519 , MSPM0L1117 , MSPM0L1306 , MSPM0L2228
本用户指南可协助您从 NXP 的 Arm® Cortex®-M0+ MCU 平台迁移到德州仪器 Arm Cortex-M0+ MSPM0 MCU 生态系统。本指南介绍了 MSPM0 开发和工具生态系统、内核架构、外设注意事项以及软件开发套件。目的是突出两个系列之间的差异,并利用现有的 NXP Arm Cortex 生态系统知识快速提升 MCU 中 MSPM0 系列的性能。
TI E2E™, Code Composer Studio™, LaunchPad™, EnergyTrace™, and BoosterPack™are TMs ofTI corporate name.
Arm® and Cortex®are reg TMs ofArm Limited (or its subsidiaries) in the US and/or elsewhere.
Other TMs
MSP430™ MCU 是 TI 的经典微控制器,已有近 30 年的历史。最新一代推出了 MSPM0 系列。MSPM0 微控制器 (MCU) 是 MSP 高度集成的超低功耗 32 位 MCU 系列的一部分,基于增强型 Arm Cortex-M0+ 32 位内核平台。这些成本优化型 MCU 提供高性能模拟外设集成,支持扩展的工作温度范围并提供小尺寸封装。TI MSPM0 系列低功耗 MCU 包含具有不同模拟和数字集成度的器件,使工程师能够找到满足其工程需求的 MCU。MSPM0 MCU 系列将 Arm Cortex-M0+ 平台与超低功耗系统架构相结合,使系统设计人员能够在降低能耗的同时提高性能。
MSPM0 MCU 是 NXP 的 M0 MCU 的替代产品,具有很强的竞争力。本文档比较了器件功能和生态系统、以帮助从此类 NXP M0 MCU 迁移到 TI MSPM0 MCU 中。
32K1xx 系列 | KEA128x 系列 | KM35x 系列 | MSPM0Gx 系列 | MSPM0Lx 系列 | MSPM0Cx 系列 | |
---|---|---|---|---|---|---|
内核/频率 | CM0+/48MHz | CM0+/48MHz | CM0+/75MHz | CM0+/32MHz-80MHz | CM0+/32MHz | CM0+/24MHz |
电源电压 | 2.7V 至 5.5V | 2.7V 至 5.5V | 2.7V 至 3.6V | 1.62V 至 3.6V | 1.62V 至 3.6V | 1.62V 至 3.6V |
温度 | -40°C 至 150°C | -40°C 至 125°C | -40°C 至 105°C | -40°C 至 125°C | -40°C 至 125°C | -40°C 至 125°C |
存储器 | 256KB 至 128KB | 128KB | 512KB | 128KB 至 32KB | 64KB 至 8KB | 16KB 至 8KB |
RAM | 高达 25 KB | 高达 16 KB | 高达 64 KB | 高达 32 KB | 高达 4 KB | 1KB |
EEPROM | 高达 2 KB | 高达 256B | 不适用 | 如果器件小于 32KB 闪存,则仿真容量高达 32KB 或整个闪存 | 如果器件小于 32KB 闪存,则仿真容量高达 32KB 或整个闪存 | 如果器件小于 32KB 闪存,则仿真容量高达 32KB 或整个闪存 |
GPIO(最大值) | 28/43/58 | 58/71 | 72/99 | 高达 60 | 高达 28 | 高达 18 |
模拟 | 1 个 1Msps、12 位 ADC 、1 个比较器、 1 个 8 位 DAC |
1 个 340Ksps、12 位 ADC 2 个比较器、 2 个 6 位 DAC |
4 个 AFE 1 个 4.75Msps、16 位 ADC 3 个比较器、 3 个 6 位 DAC |
2 个 4Msps、12 位 ADC 3 个高速比较器 2 个运算放大器 1 个通用放大器 1 个 12 位 DAC |
1 个 1.68Msps、12 位 ADC 1 个高速比较器 1 个通用放大器 2 个 OPA |
1 个 1.5Msps、12 位 ADC |
通信(最大值) | 1/2x SPI 1x I2C 2x UART 1x FlexCAN 1x FlexIO |
2x SPI 2x I2C 3x UART 1x MSCAN |
3x SPI 2x I2C 5x UART |
2 个 SPI 2 个 I2C Fast+ 3 个 UART 1 个 UART -LIN 1 个 CAN-FD |
1 个 SPI 2 个 I2C Fast+ 1 个 UART 1 个 UART (LIN) |
1 个 SPI 2 个 I2C Fast+ 1 个 UART (LIN) |
计时器 | 2 个 16bit | 3 个 16 位 | 6 个 16 位 | 6 个 16 位、 1 个 32 位 |
4 个 16 位 | 3 个 16 位 |
高级计时器 | 否 | 否 | 否 | 2 个 16 位高级 | 否 | 否 |
硬件加速器 | 不适用 | 不适用 | RNGA | MATHACL | 不适用 | 不适用 |
安全性 | CSEc | 唯一 ID、CRC | 唯一 ID、MMCAU、RNGA、PRCR | CRC、TRNG、AES256 | CRC | CRC |
低功耗 | 有效:422.92/447.92µA/MHz 待机 26/27µA |
有效:236.170µA/MHz 待机 2µA |
有效:165.07µA/MHz 待机 6.5µA |
有效:96µA/MHz 待机:1.5µA |
有效:71µA/MHz 待机:1µA |
有效:71µA/MHz 待机:1µA |
MSPM0 MCU 由广泛的硬件和软件生态系统提供支持,随附参考设计和代码示例,便于您快速开始设计。MSPM0 MCU 还具有在线资源、MSP Academy 培训支持和 TI E2E™ 支持论坛提供的在线支持。
NXP | MSPM0 | |
---|---|---|
IDE | MCUXpresso IDE | Code Composer Studio™ Theia |
软件配置 | MCUXpresso 代码配置工具 | SysConfig |
独立编程 | 不适用 | UniFlash |
显示/演示 GUI 编辑器 | GUI 指南 | GuiComposer |
MSPM0 SDK 提供软件 API、示例、文档和库,可帮助工程师在德州仪器 (TI) MSPM0+ 微控制器器件上快速开发应用程序。提供了各种示例来展示如何在每个受支持的器件上使用各功能区,这些示例可用作您开发自己的工程的起点。此外,MSPM0 SDK 中还包含交互式 MSP Academy 培训,以提供引导式学习路径。
示例文件夹分为 RTOS 和非 RTOS 子文件夹。这些文件夹包含每个 LaunchPad™ 开发套件的示例,并且按类别有序分类,例如较低级别的 DriverLib 示例、较高级别的 TI 驱动程序示例以及 GUI Composer、LIN、IQMath 等中间件示例等等。有关详细信息,请参阅 MSPM0 SDK 用户指南。
Code Composer Studio Theia IDE (CCS) 是与 NXP 的 MCUXpresso IDE 等效的 TI 产品。CCS 和 MCUXpresso 是基于 Eclipse 的免费 IDE,支持各自的 MCU 和嵌入式处理器产品系列。CCS 包含一整套用于开发和调试嵌入式应用程序的工具,其中包含优化的 C/C++ 编译器、源代码编辑器、工程构建环境、调试器、性能评测工具和许多其他功能。CCS 可作为桌面或基于云的 IDE 提供。
CCS 集成了 SysConfig 的 MSPM0 器件配置和自动代码生成功能,并在集成式 TI Resource explorer 中集成了 MSPM0 代码示例和 Academy 培训。CCS 提供一体式开发工具体验。
除 CCS 之外,表 2-2 中列出的业界通用 IDE 也支持 MSPM0 器件。
IDE | MSPM0 |
---|---|
CCS | ✓ |
IAR | ✓ |
Keil | ✓ |
SysConfig 是一个直观而全面的图形实用程序集合,用于配置引脚、外设、无线电、子系统和其他组件。它是与 NXPs MCUXpresso 代码配置工具等效的 TI 产品。SysConfig 可帮助您直观地管理、发现和解决冲突,以便您有更多时间创建差异化应用程序。该工具的输出包括 C 头文件和代码文件,这些文件可与 MSPM0 SDK 示例配合使用,或用于配置定制软件。SysConfig 集成在 CCS 中,但也可以用作独立的程序。
有关详细信息,请参阅 MSPM0 SysConfig 指南。
LaunchPad 开发套件是适用于 MSPM0 的唯一评估模块。LaunchPad 套件是易于使用的 EVM,其中包含在 MSPM0 上开始开发所需的一切内容。这包括一个板载调试探针,用于使用 EnergyTrace™ 技术进行编程、调试和测量功耗。MSPM0 LaunchPad 套件还具有板载按钮、LED 和温度传感器以及其他电路。40 引脚 BoosterPack™ 插件模块接头简化了快速原型设计,支持市面上的多种 BoosterPack 插件模块。您可快速添加无线连接、图形显示、环境检测等功能。
调试子系统 (DEBUGSS) 将串行线调试 (SWD) 两线制物理接口连接到器件内的多个调试功能。MSPM0 器件支持调试处理器执行情况、器件状态和电源状态(使用 EnergyTrace 技术)。图 2-3 显示了调试器的连接。
MSPM0 支持用于标准串行线调试的 XDS110 和 J-Link 调试器。
德州仪器 (TI) XDS110 专为 TI 嵌入式处理器而设计。XDS110 通过 TI 20 引脚连接器(带有用于 TI 14 引脚以及 Arm 10 引脚和 Arm 20 引脚的多个适配器)连接到目标板,并通过 USB2.0 高速 (480Mbps) 连接到主机 PC。它在单个仓体中支持更广泛的标准(IEEE1149.1、IEEE1149.7、SWD)。所有 XDS 调试探针都支持所有具有嵌入式跟踪缓冲器 (ETB) 的 Arm 和 DSP 处理器中的内核和系统跟踪。有关详细信息,请参阅 XDS110 调试探针。
J-Link 调试探针是优化调试和闪存编程体验的最常见的选择。这得益于其创纪录的闪存加载程序、高达 3MiB/s 的 RAM 下载速度以及在 MCU 闪存中设置无限数量断点的能力。J-Link 还支持各种 CPU 和架构,包括 Cortex M0+。有关详细信息,请访问 Segger J-Link 调试探针页面。
图 2-3 展示了连接到 MSPM0 目标的 XDS110 探针的主要功能区域和接口的简要示意图。
迁移的第一步是查看产品系列并选择最佳的 MSPM0 MCU。选择 MSPM0 MCU 后,选择开发套件。开发套件包括可供购买的 LaunchPad 套件和适用于目标插座板的设计文件。TI 还提供免费的 MSPM0 软件开发套件 (SDK),该套件在 TI Resource Explorer 中作为 Code Composer Studio Theia IDE 桌面版和云版组件提供。可使用本应用手册的外设部分来帮助将软件从 NXP 器件移植到 MSPM0。最后,软件移植后,使用我们的调试工具下载并调试应用程序。
为了让您更加熟悉 TI 生态系统并更好地开始使用 MSPM0,本节说明了基本应用程序的逐步迁移过程。
为了演示从 NXP 移植到 MSPM0 的过程,本说明以现有 UART 示例为起点,来介绍将基本低功耗 UART 应用程序从 NXP 器件移植到 MSPM0 器件的步骤。此示例首先介绍了配有 UART 模块的 NXP KM35x 器件的 UART 示例。
迁移的第一步是为应用程序选择正确的 MSPM0 器件。为此,可使用本指南的产品系列部分选择 MSPM0 系列。可以使用产品选择工具将范围缩小至特定的器件。在选择 NXP KM35x 零件的替代件时,只要选择正确的替换器件,MSPM0 器件就可以匹配几乎所有功能。务必确保所选的 MSPM0 具有可用于要迁移的代码的外设集。MSPM0 还提供许多引脚对引脚可扩展选项,从而能够轻松扩展到存储器更大或更小的器件,而无需更改系统中的任何其他内容。
在本示例中,我们选择了 MSPM0G3507 作为该应用的最佳器件。
使用评估模块 (EVM) 可以加快迁移过程。对于 MSPM0 MCU,LaunchPad 套件是最容易上手的硬件。LaunchPad 套件易于使用,因为它们附带内置编程器,旨在实现快速开发。
MSPM0L1105 具有可用于移植软件的 LaunchPad 开发套件 (LP-MSPM0G3507)。
在移植软件之前,必须选择并设置软件开发环境。图 2-5显示了 MSPM0 支持的所有 IDE。对于所选的任何 IDE,迁移和移植过程都是类似的。应使用最新版本的 MSPM0 SDK。
在本示例中,TI 的 CCS-Theia 是所选的 IDE。
准备好环境后,开始使用 MSPM0 SDK。MSPM0 SDK 为软件开发提供了不同的层。请查看 MSPM0 的 TI 驱动程序和 Driverlib 支持,了解与 NXP 器件驱动程序等效的驱动程序。大多数 MSPM0 用户发现 DriverLib 级别的软件最适合其应用程序,因此大多数 MSPM0 软件示例也基于 DriverLib。本示例使用 DriverLib。
移植工程时的一个选项是尝试使用等效的 MSPM0 DriverLib API 替换代码的每个部分,但这通常不是最简单的方法。通常,最好先了解被移植的应用程序代码。然后,从最接近的 MSPM0 示例工程开始,对其进行修改以匹配原始代码功能。下面将使用 2.16.00.00 SDK 版本的 MCUXpresso SDK_2.x_TWR-KM35Z75M 中的 UART 终端示例工程来展示此过程。对于使用许多外设的更复杂的工程,通常会针对每个外设重复该过程。
以下说明来自 NXP 的 SDK 示例 "twrkm35z75m_lpuart_interrupt"。
The lpuart_functioncal_interrupt example shows how to use lpuart driver functional API to receive data with interrupt method:
In this example, one lpuart instance connect to PC, the board will send back all characters that PC send to the board.
第一步是了解 MCU 的主要设置。这通常是时钟速度和电源策略。在此示例中,器件不使用低功耗模式。所指定的系统时钟频率为 72MHz,由器件的 "OSC" 或系统振荡器生成。UART 外设时钟源自 OSC。它进行分频以允许 UART 以 15200 波特、8 个数据位、1 个起始位和停止位运行,无奇偶校验。没有使用硬件流控制。
下一步是了解 KM35x 和 MSPM0 的 UART 模块之间的任何差异,然后在 MSPM0 SDK 中找到最接近的示例。这可以通过参考 第 4 节的 UART 部分轻松完成。该部分重点介绍 UART 模块之间的差异以及指向与 UART 相关的 MSPM0 SDK 代码示例的链接。对于本示例,SDK 中最接近的示例可能是 uart_echo_interrupts_standby,其中“当器件处于待机模式时 UART RX/TX 使用中断回显”。
该 MSPM0 示例与要移植的工程类似,但不完全相同。此示例仅回传在器件的 TX 引脚上接收到的数据。对该 C 代码进行小幅调整即可与原始示例保持一致。
找到类似的示例后,打开 CCS 并导入代码示例,方法是转到 Project > Import CCS Projects... 并导航至 MSPM0 SDK 的示例文件夹。导入示例。以下是导入的 uart_echo_interrupts_standby 示例。这是一个 SysConfig 工程,因此主 C 文件很简单。它首先调用 SysConfig driverlib 初始化,这是 SysConfig 自动生成的用于配置器件的函数。然后,它启用 UART 中断。最后,它进入睡眠状态,等待任何 UART 事务。如果接收到 UART 事务,它会以“Hello World!”进行响应。
要查看 SysConfig 配置,请打开.syscfg 文件,该文件默认在“SYSCTL”选项卡上打开。有关使用 SysConfig 的详细指南,请参阅 MSPM0 SDK 中的 SysConfig 指南。
此示例已设置 UART 外设,因此无需更改在此文件中找到的任何配置。如果需要,可以更改时钟源、时钟分频器、目标波特率等设置。在此迁移演示中,配置将保持不变。
该示例还使用了一些 NXP 示例中不包含的 GPIO。这些 GPIO 仅用于调试目的,其中一个用于驱动 LED。可以在演示时保留这些内容,或者如果更合适的话,可以将其删除。
保存并重建工程后,SysConfig 会更新该示例的 ti_msp_dl_config.c 和 ti_msp_dl_config.h 文件。此时,已修改示例硬件配置,以匹配正在移植的原始软件的全部功能。唯一剩下的工作是应用程序级软件检查传入的 UART 字节,以切换 LED 并使用 “Hello World!” 进行响应。这可以通过编辑 uart_echo_interrupts_standby.c 文件中的少量代码来实现。
对应用程序代码进行了两处更改。首先,消息阵列必须进行初始化,以便器件可以正确响应 UART 消息。为此,在 gEchoData 初始化下方插入以下行:
static uint8_t gMessage[12] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!'};
第二步实际是使用 for 循环和 UART 发送函数的阻塞版本来处理数据发送,因此一次只发送一个字符,Tx 缓冲区中没有数据冲突。这通过将以下代码添加到 UART RX ISR 来实现:
for(int i = 0; i < 12; i++){
DL_UART_Main_transmitDataBlocking(UART_0_INST, gMessage[i]);
}
以下各图演示了该代码示例的正确功能。如第一个图所示,在 PC 上使用终端程序将 UART 字符发送到 LP-MSPM0G3507 时,器件会以“Hello World!”进行响应。
在第二个图中,逻辑分析仪的捕获结果显示了器件的 RX 和 TX 线路,其中显示了传入的字符和传出的“Hello World!”。
每收到一个字符时,板载 LED 都将亮起再熄灭。
软件移植成功!如果这只是许多外设的第一个外设,请继续重复该过程并使用 SysConfig 组合每个块。
NXP 和 MSPM0 系列都使用了 Arm M0+ 32位内核。表 3-1 高层次概述了 MSPM0G、MSPM0L 和 MSPM0C 器件与 NXP 器件中 CPU 之间的一般功能比较。节 3.6.1比较了中断和异常以及它们在每款器件 M0 架构中包含的嵌套矢量中断控制器 (NVIC) 外设中的映射方式。
特性 | S32K1xx | KEA128x | KM35x | MSPM0G | MSPM0L | MSPM0C |
---|---|---|---|---|---|---|
架构 | Arm Cortex-M0+ | Arm Cortex-M0+ | Arm Cortex-M0+ | Arm Cortex-M0+ | Arm Cortex-M0+ | Arm Cortex-M0+ |
最大 MCLK | 112MHz | 20MHz | 75MHz | 32MHz 至 80MHz | 32MHz | 24MHz |
CPU 指令缓存 | 高达 4 KB | 否 | 64 位 | 4x64 位行(32 字节) | 2x64 位行(16 字节) | 否 |
处理器跟踪功能 | 是,集成微跟踪缓冲器 | 否 | 是,集成微跟踪缓冲器 | 是,集成微跟踪缓冲器 | 否 | 否 |
存储器保护单元 (MPU) | 是 | 否 | 是 | 是 | 否 | 否 |
系统计时器 (SYSTICK) | 否 | 是 | 否 | 是(24 位) | 是(24 位) | 否 |
硬件乘法 | 是 | 是 | 是 | 是 | 是 | 否 |
硬件断点/观察点 | 否 | 2/0 | 2/0 | 4/2 | 4/2 | 4/2 |
引导例程 | ROM | ROM | ROM | ROM | ROM | ROM |
引导加载程序存储器 | 闪存(系统存储器) | ROM | 闪存(系统存储器) | ROM | ROM | 闪存(系统存储器) |
引导加载程序接口支持(1)(2) | 适用于所有数据接口 | 适用于所有数据接口 | 适用于所有数据接口 | UART、I2C、 用户可扩展 |
UART、I2C、 用户可扩展 |
用户自定义 |
DMA | 是 - 16 通道 | 否 | 是 - 4 通道 | 是 - 7 通道 | 是 - 3 通道 | 是 - 1 通道 |
MSPM0 和 NXP 系列 MCU 具有非易失性闪存,用于存储可执行程序代码和应用程序数据。
特性 | S32K1xx | KEA128x |
KM35 |
MSPM0G | MSPM0L | MSPM0C |
---|---|---|---|---|---|---|
闪存 | 高达 2MB 的程序/64kB FlexNVM 数据 | 64KB | 高达 512KB | 128KB 至 32KB | 64KB 至 8KB | 16KB 至 8KB |
存储器组织 | 1 至 3 个块 | 单块 | 单块 | |||
块(组)大小 | 高达 512KB | 64KB | 高达 512KB | 256KB | ||
扇区大小 | 2KB | 512B | 2KB | 1KB | ||
闪存字大小 | 128/64 位 | 64 位 | 64 位加 8 个 ECC 位 |
64 位、如果支持 ECC、请参阅器件特定的数据表 |
||
编程分辨率 | 32 位、16 位或 8 位(字节) | 64 位闪存字 | 64 位闪存字(32 位、16 位或 8 位,请参阅器件特定的技术参考手册) | |||
擦除 | 页擦除 芯片擦除(所有组) |
不适用 | 扇区 2KB | 扇区擦除 1KB/库擦除(最大 256KB) | ||
写保护 | 是的、静态 | 是,静态和动态 | ||||
读保护 | 否 | 是 | 否 | 是 | ||
闪存读取操作 | 128 位闪存字 | 128 位闪存字 | 64 位闪存字 | 64 位闪存字大小加 8 个 ECC 位 | ||
闪存写入操作 | 是 | 是 | 是 | 64 位闪存字大小加 8 个 ECC 位 | 64 位闪存字大小。如果支持 ECC,请参阅器件特定数据表 | |
FlexNVM(数据和 EEPROM 仿真) | 读取/写入 32 位、16 位或 8 位 | 不适用 | 不适用 | 不适用 | ||
纠错码 (ECC) | 是 | 是 | 否 | 对于 64 位为 8 位 | 如果支持 ECC,请参阅器件特定数据表 | |
预取 | 是 | 否 | 否 | 是 | 否 |
除了上表中列出的闪存功能外,MSPM0 闪存还具有以下功能:
闪存用于存储应用程序代码和数据、器件引导配置以及 TI 在出厂时预编程的参数。闪存分为一个或多个存储体,每个存储体中的存储器进一步映射到一个或多个逻辑存储区域,并分配有系统地址空间以供应用程序使用。