ZHCABX9A november   2022  – march 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0L1105 , MSPM0L1106 , MSPM0L1303 , MSPM0L1304 , MSPM0L1305 , MSPM0L1306 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346

 

  1.   摘要
  2.   商标
  3. 1MSPM0 产品系列概述
    1. 1.1 引言
    2. 1.2 STM32 MCU 与 MSPM0 MCU 的产品系列比较
  4. 2生态系统和迁移
    1. 2.1 软件生态系统比较
      1. 2.1.1 MSPM0 软件开发套件 (MSPM0 SDK)
      2. 2.1.2 CubeIDE 与 Code Composer Studio IDE (CCS)
      3. 2.1.3 CubeMX 与 SysConfig
    2. 2.2 硬件生态系统
    3. 2.3 调试工具
    4. 2.4 迁移过程
    5. 2.5 迁移和移植示例
  5. 3内核架构比较
    1. 3.1 CPU
    2. 3.2 嵌入式存储器比较
      1. 3.2.1 闪存功能
      2. 3.2.2 闪存组织
      3. 3.2.3 嵌入式 SRAM
    3. 3.3 上电和复位总结和比较
    4. 3.4 时钟总结和比较
    5. 3.5 MSPM0 工作模式总结和比较
    6. 3.6 中断和事件比较
    7. 3.7 调试和编程比较
  6. 4数字外设比较
    1. 4.1 通用 I/O(GPIO、IOMUX)
    2. 4.2 通用异步接收器/发送器 (UART)
    3. 4.3 串行外设接口 (SPI)
    4. 4.4 I2C
    5. 4.5 计时器(TIMGx、TIMAx)
    6. 4.6 窗口化看门狗计时器 (WWDT)
    7. 4.7 实时时钟 (RTC)
  7. 5模拟外设比较
    1. 5.1 模数转换器 (ADC)
    2. 5.2 比较器 (COMP)
    3. 5.3 模数转换器 (DAC)
    4. 5.4 运算放大器 (OPA)
    5. 5.5 电压基准 (VREF)
  8. 6修订历史记录

迁移和移植示例

为了让您更加熟悉 TI 生态系统并更好地开始使用 MSPM0,本节说明了基本应用程序的逐步迁移过程。

为了演示从 STM32 移植到 MSPM0 的过程,本说明使用现有 ST UART 示例为起点,来介绍将基本低功耗 UART 监控器应用程序从 STM32G0x 移植到 MSPM0 器件的步骤。

步骤 1.选择合适的 MSPM0 MCU

迁移的第一步是为应用程序选择正确的 MSPM0 器件。为此,可使用本指南的产品系列部分选择 MSPM0 系列。可以使用产品选择工具将范围缩小至特定的器件。STM32G0 和 MSPM0 都具有 M0+ 内核,但还必须考虑内存大小、功耗和关键外设等功能。MSPM0 还提供许多引脚对引脚可扩展选项,从而能够轻松扩展到存储器更大或更小的器件,而无需更改系统中的任何其他内容。

在本示例中,我们选择了 MSPM0G3507 作为该应用的最佳器件。

步骤 2.选择硬件并订购 EVM

使用评估模块 (EVM) 可以加快迁移过程。对于 MSPM0 MCU,LaunchPad 套件是最容易上手的硬件。LaunchPad 套件易于使用,因为它们附带内置编程器,旨在实现快速开发。

MSPM0G3507 具有可用于移植软件的 LaunchPad 开发套件 (LP-MSPM0G3507)。

步骤 3.设置软件 IDE 和 SDK

在移植软件之前,必须选择并设置软件开发环境。节 2.1显示了 MSPM0 支持的所有 IDE。对于所选的任何 IDE,迁移和移植过程都是类似的。应使用最新版本的 MSPM0 SDK

在本示例中,TI 的 CCS 是所选的 IDE。

GUID-E52D5B78-2FDE-48AE-8D53-02196DC37130-low.jpg图 2-5 Code Composer Studio IDE

步骤 4.软件移植

准备好环境后,开始使用 MSPM0 SDK。如前所述,MSPM0 SDK 与 STM32Cube 软件包类似。MSPM0 SDK 为软件开发提供了不同的层。MSPM0 TI 驱动程序的运行级别与 STM32Cube HAL 类似,而 MSPM0 DriverLib 与 STM32Cube 低级别驱动程序相当。大多数 MSPM0 用户发现 DriverLib 级别的软件最适合其应用程序,因此大多数 MSPM0软件示例也基于 DriverLib。本示例使用 DriverLib。

移植工程时的一个选项是尝试使用等效的 MSPM0 DriverLib API 替换代码的每个部分,但这通常不是最简单的方法。通常,最好先了解被移植的应用程序代码。然后,从最接近的 MSPM0 示例工程开始,对其进行修改以匹配原始代码功能。下面将使用 STM32CubeG0 中的低功耗 UART 示例展示该过程。对于使用许多外设的更复杂的工程,通常会针对每个外设重复该过程。

步骤 4a:了解应用程序

以下说明来自 STM32CubeG0 中名为“LPUART_WakeUpFromStop_Init”的示例工程。

@par Example Description 

Configuration of GPIO and LPUART peripherals to allow characters received on LPUART_RX pin to wake up the MCU from low-power mode.This example is based on the LPUART LL API.The peripheral initialization uses LL initialization function to demonstrate LL init usage. 

LPUART Peripheral is configured in asynchronous mode (9600 bauds, 8 data bit, 1 start bit, 1 stop bit, no parity). 
No HW flow control is used. 
LPUART Clock is based on HSI. 

Example execution:  
After startup from reset and system configuration, LED3 is blinking quickly during 3 sec, then MCU enters "Stop 0" mode (LED3 off).On first character reception by the LPUART from PC Com port (ex: using HyperTerminal) after "Stop 0" Mode period, MCU wakes up from "Stop 0" Mode. 

Received character value is checked :  
- On a specific value ('S' or 's'), LED3 is turned On and program ends. 
- If different from 'S' or 's', program performs a quick LED3 blinks during 3   sec and enters again "Stop 0" mode, waiting for next character to wake up.

第一步是了解 MCU 的主要设置。这通常是时钟速度和电源策略。在本示例中,未指定通用时钟频率,因为唯一重要的设置是 UART 在低功耗停止 0 模式下工作。它指出低功耗 UART 时钟基于“HIS”或高速内部振荡器,这意味着没有使用外部晶体。UART 以 9600 波特运行,具有 8 个数据位、1 个起始位和停止位,无奇偶校验。没有使用硬件流控制。应用程序侧检查是否收到“S”或“s”并使 LED 闪烁。

步骤 4b:找到最接近的 MSPM0 示例

下一步是了解 STM32G0 和 MSPM0 的 UART 模块之间的任何差异,然后在 MSPM0 SDK 中找到最接近的示例。这可以通过参考节 4中的 UART 部分轻松完成。该部分重点介绍 UART 模块之间的差异以及指向与 UART 相关的 MSPM0 SDK 代码示例的链接。对于本示例,SDK 中最接近的示例可能是 uart_echo_interrupts_standby,其中“当器件处于待机模式时 UART RX/TX 使用中断回显”。

该 MSPM0 示例与要移植的工程类似,但不完全相同。该示例将进入待机模式,这是一种功耗比停止模式更低的模式。必须检查 UART 通信设置以及正在使用哪些 GPIO。最后,必须添加监视特定字符的应用程序层。

步骤 4c:导入并修改示例

找到类似的示例后,打开 CCS 并导入代码示例,方法是转到 Project > Import CCS Projects... 并导航至 MSPM0 SDK 的示例文件夹。导入示例。以下是导入的 uart_echo_interrupts_standby 示例。这是一个 SysConfig 工程,因此主 C 文件很简单。它首先调用 SysConfig driverlib 初始化,这是 SysConfig 自动生成的用于配置器件的函数。然后它启用 UART 中断。最后,它进入睡眠状态,等待任何 UART 事务。如果它接收到 UART 事务,它会立即回显数据并唤醒。

GUID-B29CE965-09A4-4F40-8049-5A524E0ABE9D-low.png图 2-6 uart_echo_interrupts_standby 示例

要查看 SysConfig 配置,请打开.syscfg 文件,该文件默认在“SYSCTL”选项卡上打开。有关使用 SysConfig 的详细指南,请参阅 MSPM0 SDK 中的 SysConfig 指南

首先需要注意的是电源策略。该 MSPM0 示例使用待机 0 模式,但目标是使用停止 0 模式。通过点击下拉列表,可以选择正确的低功耗模式。也可以在该选项卡上配置所有时钟和振荡器,但它们现在没问题,无需配置。

GUID-4B97DC40-CB75-48FB-A5CC-F45AA3A661DF-low.png图 2-7 电源模式配置

接下来,检查“UART”选项卡上的 UART 通信设置(请参阅图 2-8)。在本例中,波特率已设置为 9600,其余的通信设置是正确的。接收中断已经启用并在主程序中使用。此外,通过点击右上角的芯片图标并检查 UART 的突出显示引脚来检查正在使用的 UART 模块和引脚。此处不需要更改任何内容,因为它们已经连接到 MSPM0G3507 LaunchPad 套件的反向通道 UART。

GUID-34588AD2-FDAA-45CF-8D61-4DFED340B2ED-low.png图 2-8 UART 配置

该示例目前没有配置用于驱动 LED 的 GPIO,但可以轻松添加配置(请参阅图 2-9)。可以使用页面顶部的 +ADD 按钮添加 GPIO。可以为 GPIO 端口和引脚命名,在本例中分别为“LED”和“RED”。该 GPIO 设置为输出,然后置于端口 A 引脚 0 (PA0) 上。在 LaunchPad 套件上,该 GPIO 连接到一个简单的红色 LED。

GUID-3FC2AFDA-B382-4C82-8152-3389E16A1A22-low.png图 2-9 GPIO 配置

保存并重建工程后,SysConfig 会更新该示例的 ti_msp_dl_config.c 和 ti_msp_dl_config.h 文件。此时,已修改示例硬件配置,以匹配正在移植的原始软件的全部功能。唯一剩下的工作是应用程序级软件检查传入的 UART 字节并切换 LED。这可以通过将少量代码移到主 C 文件中来实现。

GUID-4B1F53E5-6B51-43DA-966D-5DFC3095DB86-low.png图 2-10 对应用程序代码的更改

对应用程序代码进行了两处更改。首先,使用 DL_SYSCTL_disablesSleepOnExit(),以使 MSPM0 在每个 UART RX 上短暂唤醒。接下来,添加对 UART RX 数据的简单检查,如果接收到“S”或“s”,则红色 LED 亮起。如果接收到的是其他任何数据,它会熄灭。

步骤 5 :调试和验证

以下各图是逻辑分析仪的屏幕截图,其中显示了 9600 波特下的 UART 通信以及正确开启和关闭的红色 LED。代码会回显每个 UART 字符,但仅在接收到正确的字符时才开启 LED。

GUID-03286055-EB79-4894-9C18-1D8C5BFAAE95-low.png图 2-11
GUID-D87C2D41-B5BD-456F-96C4-06069DA53D4E-low.png图 2-12

软件移植成功!如果这只是许多外设的第一个外设,请继续重复该过程并使用 SysConfig 组合每个块。