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
为了让您更加熟悉 TI 生态系统并更好地开始使用 MSPM0,本节说明了基本应用程序的逐步迁移过程。
为了演示从 STM32 移植到 MSPM0 的过程,本说明使用现有 ST UART 示例为起点,来介绍将基本低功耗 UART 监控器应用程序从 STM32G0x 移植到 MSPM0 器件的步骤。
步骤 1.选择合适的 MSPM0 MCU
迁移的第一步是为应用程序选择正确的 MSPM0 器件。为此,可使用本指南的米6体育平台手机版_好二三四系列部分选择 MSPM0 系列。可以使用米6体育平台手机版_好二三四选择工具将范围缩小至特定的器件。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。
步骤 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 事务,它会立即回显数据并唤醒。
要查看 SysConfig 配置,请打开.syscfg 文件,该文件默认在“SYSCTL”选项卡上打开。有关使用 SysConfig 的详细指南,请参阅 MSPM0 SDK 中的 SysConfig 指南。
首先需要注意的是电源策略。该 MSPM0 示例使用待机 0 模式,但目标是使用停止 0 模式。通过点击下拉列表,可以选择正确的低功耗模式。也可以在该选项卡上配置所有时钟和振荡器,但它们现在没问题,无需配置。
接下来,检查“UART”选项卡上的 UART 通信设置(请参阅图 2-8)。在本例中,波特率已设置为 9600,其余的通信设置是正确的。接收中断已经启用并在主程序中使用。此外,通过点击右上角的芯片图标并检查 UART 的突出显示引脚来检查正在使用的 UART 模块和引脚。此处不需要更改任何内容,因为它们已经连接到 MSPM0G3507 LaunchPad 套件的反向通道 UART。
该示例目前没有配置用于驱动 LED 的 GPIO,但可以轻松添加配置(请参阅图 2-9)。可以使用页面顶部的 +ADD 按钮添加 GPIO。可以为 GPIO 端口和引脚命名,在本例中分别为“LED”和“RED”。该 GPIO 设置为输出,然后置于端口 A 引脚 0 (PA0) 上。在 LaunchPad 套件上,该 GPIO 连接到一个简单的红色 LED。
保存并重建工程后,SysConfig 会更新该示例的 ti_msp_dl_config.c 和 ti_msp_dl_config.h 文件。此时,已修改示例硬件配置,以匹配正在移植的原始软件的全部功能。唯一剩下的工作是应用程序级软件检查传入的 UART 字节并切换 LED。这可以通过将少量代码移到主 C 文件中来实现。
对应用程序代码进行了两处更改。首先,使用 DL_SYSCTL_disablesSleepOnExit(),以使 MSPM0 在每个 UART RX 上短暂唤醒。接下来,添加对 UART RX 数据的简单检查,如果接收到“S”或“s”,则红色 LED 亮起。如果接收到的是其他任何数据,它会熄灭。
步骤 5 :调试和验证
以下各图是逻辑分析仪的屏幕截图,其中显示了 9600 波特下的 UART 通信以及正确开启和关闭的红色 LED。代码会回显每个 UART 字符,但仅在接收到正确的字符时才开启 LED。
软件移植成功!如果这只是许多外设的第一个外设,请继续重复该过程并使用 SysConfig 组合每个块。