NESA009A 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:認識應用程式

以下描述摘自名爲 'LPUART_WakeUpFromStop_Init' 的 STM32CubeG0 的範例專案。

@par 範例說明

GPIO 和 LPUART 周邊設備的配置允許在 LPUART_RX 針腳上收到的字元從低功耗模式喚醒 MCU。此範例是以 LPUART LL API 為基礎。周邊設備初始化使用 LL 初始化功能來示範 LL init 用法。 

LPUART 周邊設備配置爲異步模式 (9600 傳輸速率、8 個數據位元、1 個起始位元、1 個停止位元、無同位檢查)。 
未使用硬體流量控制。 
LPUART 時鐘以 HSI 為基礎。 

執行範例: 
從重設和系統配置啟動後,LED3 會在 3 秒內快速閃爍,然後 MCU 會進入「停止 0」模式 (LED3 關閉)。當 LPUART 在「停止 0」模式期後從 PC Com 連接埠 (例如:使用 HyperTerminal) 接收第一個字元時,MCU 會從「停止 0」模式喚醒。 

已核取接收的字元值: 
- 在特定的值 (「S」或「s」) 上,LED3 開啟,程序結束。 
- 如果與「S」或「s」不同,程式會在 3 秒內快速閃爍 LED3,並再次進入「停止 0」模式,等待下一個字元喚醒。

第一步是了解 MCU 的主要設定。這通常是時鐘速度和電源政策。此範例未指定一般時鐘頻率,因為唯一重要的設定是 UART 在低功率 Stop0 模式下運作。此設定表示低功耗 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 並前往專案 > 匯入 CCS 專案... 匯入程式碼範例,並導覽至 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 範例使用 Standby0 模式,但目標是使用 Stop0 模式。按下拉清單,選擇正確的低功耗模式。所有時鐘及振盪器也可在此標籤上配置,但目前仍可正常使用。

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」和「D」。此 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() 以便在每個 UART RX 上短暫喚醒 MSPM0。接著,新增 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 組合每個區塊。