JAJA723A 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
このセクションでは、テキサス・インスツルメンツのエコシステムを理解し、MSPM0 を使用して最善の開発を開始する方法を説明するために、基本的なアプリケーションの段階的な移行プロセスについて説明します。
STM32 から MSPM0 への移植プロセスを示すために、この説明には、既存の ST UART の例を出発点として使用し、基本的な低消費電力 UART モニタ・アプリケーションを STM32G0x から MSPM0 デバイスに移植する手順が含まれています。
ステップ 1.適切な MSPM0 MCU を選択する
移行の最初のステップは、アプリケーションに適した MSPM0 デバイスを選択することです。そのために、このガイドのポートフォリオ・セクションを使用して MSPM0 ファミリを選択できます。製品選択ツールを使用して特定のデバイスに絞り込むことができます。STM32G0 および MSPM0 は両方とも M0+ コアを使用しますが、メモリ・サイズ、電力、主要ペリフェラルなどの機能も考慮する必要があります。また、MSPM0 には多くのピン互換のスケーラブルなオプションがあり、システム内の他の何も変更することなく、より大容量または小型のメモリ・デバイスに簡単に変更できます。
この例では、アプリケーションに最適な MSPM0G3507 を選択しました。
ステップ 2.ハードウェアを選択し、評価基板を注文する
評価基板 (EVM) を使用すると、移行プロセスを迅速化できます。MSPM0 MCU の場合、LaunchPad キットは、開発を開始するための最も簡単なハードウェアです。LaunchPad キットにはプログラマが内蔵されており、迅速な開発を可能にするように設計されているため、使いやすくなっています。
MSPM0G3507 には、LaunchPad 開発キット (LP-MSPM0G3507) が付属しており、ソフトウェアの移植に使用できます。
ステップ 3.ソフトウェア IDE と SDK をセットアップする
ソフトウェアを移植する前に、ソフトウェア開発環境を選択してセットアップする必要があります。セクション 2.1に MSPM0 でサポートされているすべての IDE を示します。移行と移植のプロセスは、選択したすべての IDE で同様です。MSPM0 SDK の最新バージョンを使用する必要があります。
この例では、テキサス・インスツルメンツの CCS が選択された IDE です。
ステップ 4.ソフトウェアの移植
環境の準備ができたら、MSPM0 SDK の使用を開始します。すでに説明したように、MSPM0 SDK は STM32Cube ソフトウェア・パッケージと類似しています。MSPM0 SDK は、ソフトウェア開発のためのさまざまなレイヤを提供します。MSPM0 テキサス・インスツルメンツ・ドライバは STM32Cube HAL と同じレベルで動作しますが、MSPM0 DriverLib は STM32Cube 低レベル・ドライバと同等です。ほとんどの MSPM0 ユーザーは、DriverLib レベルのソフトウェアがアプリケーションに最適であると判断しています。そのため、ほとんどの MSPM0 ソフトウェア・サンプルも DriverLib ベースです。この例では DriverLib を使用しています。
プロジェクトを移植する際の 1 つのオプションは、コードの各セクションを、等価な MSPM0 DriverLib API で置き換えようとすることですが、一般的にはこれが最も簡単な方法ではありません。一般的に、最初に移植するアプリケーション・コードを理解することが最善です。次に、最も近い MSPM0 サンプル・プロジェクトから開始し、元のコード機能に合わせて変更します。STM32CubeG0 の低消費電力 UART の例を使用してこのプロセスを以下に示します。多くのペリフェラルを使用するより複雑なプロジェクトでは、通常、各ペリフェラルに対してこのプロセスが繰り返されます。
ステップ 4a:アプリケーションを理解する
次の説明は、STM32CubeG0 の「LPUART_WakeUpFromStop_Init」というサンプル・プロジェクトからのものです。
@par サンプルの説明
LPUART_RX ピンで受信した文字が低消費電力モードから MCU をウェークアップできるように、GPIO および LPUART ペリフェラルを構成します。この例は、LPUART LL API をベースにしています。ペリフェラルの初期化では、LL 初期化機能を使用して LL 初期化の使用法を示します。
LPUART ペリフェラルは非同期モード (9600 ボー、8 データ・ビット、1 スタート・ビット、1 ストップ・ビット、パリティなし) に構成されています。
ハードウェア・フロー制御は使用されません。
LPUART クロックは、HSI をベースにしています。
実行例:
リセットおよびシステム構成から起動した後、3 秒間 LED3 がすばやく点滅し、MCU は「Stop 0」モードに移行します (LED3 オフ)。「Stop 0」モード期間の後、PC Com ポート (例:ハイパーターミナルを使用) から LPUART が最初に受信した文字で、MCU は「Stop 0」モードからウェークアップします。
受信した文字の値がチェックされます。
- 特定の値 (「S」または「s」) で LED3 がオンになり、プログラムが終了します。
- 「S」または「s」と異なる場合、プログラムは 3 秒間 LED3 をすばやく点滅させ、「Stop 0」モードに戻り、次の文字がウェークアップするのを待ちます。
最初のステップは、MCU の主な設定を理解することです。これは一般に、クロック速度と電力ポリシーです。この例では、UART が低消費電力の Stop0 モードで動作することが唯一の重要な設定であるため、一般的なクロック周波数は指定されていません。低消費電力の UART クロックは、「HIS」または高速の内部発振器に基づいていることを示しています。つまり、外部水晶振動子は使用されていません。UART は、9600 ボー、8 データ・ビット、1 スタート・ビットおよび 1 ストップ・ビット、パリティなしで動作します。ハードウェア・フロー制御は使用していません。アプリケーション側で受信する「S」または「s」をチェックし、LED を点滅させます。
ステップ 4b:最も近い MSPM0 の例を見つける
次のステップは、STM32G0 と MSPM0 の UART モジュールの違いを理解し、MSPM0 SDK で最も近い例を見つけることです。これは、セクション 4の「UART」セクションを参照することで簡単に実現できます。このセクションでは、UART モジュール間の違いと、UART 関連の MSPM0 SDK サンプル・コードへのリンクについて説明します。この例の SDK で最も近い例は、おそらく uart_echo_interrupts_stanby で、「デバイスが STANDBY モードのとき、割り込みを使用して UART RX/TX がエコーする」ものです。
この MSPM0 の例は、移植されているものと類似していますが、完全に同じではありません。この例では、Stop モードよりも低消費電力モードであるスタンバイ・モードに移行します。UART 通信設定と、どの GPIO が使用されているかを確認する必要があります。最後に、特定の文字を監視するアプリケーション層を追加する必要があります。
ステップ 4c:サンプルをインポートして変更する
類似の例が見つかったら、CCS を開き、「Project > Import CCS Project...」の順に選択してサンプル・コードをインポートし、MSPM0 SDK のサンプル・フォルダに移動します。サンプルをインポートします。これは、インポートされた uart_echo_interrupts_stanby の例です。これは SysConfig プロジェクトなので、メインの C ファイルはシンプルです。最初に SysConfig driverlib 初期化を呼び出します。これは、SysConfig によって自動生成される機能であり、デバイスを構成します。その後、UART 割り込みをイネーブルにします。最後に、UART トランザクションを待ちながら、スリープ状態に移行します。UART トランザクションを受信すると、データをすぐにエコーし、ウェークアップします。
SysConfig の構成を表示するには、.syscfg ファイルを開きます。このファイルはデフォルトで SYSCTL タブで開きます。SysConfig の使用方法の詳細については、MSPM0 SDK にある『SysConfig ガイド』を参照してください。
最初に注意するのは、電力ポリシーです。この MSPM0 の例では、Standby0 モードを使用していますが、Stop0 モードを使用することを目標としています。ドロップダウン・リストをクリックすると、適切な低消費電力モードを選択できます。このタブではすべてのクロックと発振器を構成することもできますが、現時点では較正する必要はありません。
次に、UART タブで UART 通信設定を確認します (図 2-8を参照)。この場合、ボーレートはすでに 9600 に設定されており、他の通信設定も正確です。受信割り込みはすでにイネーブルになっており、メイン・プログラムで使用されます。また、右上にあるチップ・アイコンをクリックし、UART で強調表示されているピンをチェックして、使用中の UART モジュールとピンを確認します。MSPM0G3507 LaunchPad キットのバックチャネルの UART にすでに接続されているため、ここでは何も変更する必要はありません。
この例では現在、LED 駆動用に GPIO が設定されていませんが、設定は簡単に追加できます (図 2-9を参照)。GPIO は、ページの上部にある +ADD ボタンを使用して追加できます。GPIO ポートとピンには、名前をつけることができ、この場合はそれぞれ「LED」と「RED」です。この GPIO は出力として設定され、ポート A のピン 0 (PA0) に配置されます。LaunchPad キットでは、この GPIO はシンプルな赤い LED に接続されています。
プロジェクトを保存して再ビルドすると、SysConfig によって、たとえば ti_msp_dl_config.c および ti_msp_dl_config.h ファイルが更新されます。この時点で、サンプル・ハードウェア構成が変更され、移植対象の元のソフトウェアのすべての機能が一致するようになりました。残りの作業は、受信した UART バイトをチェックし、LED を切り替えるためのアプリケーション・レベルのソフトウェアのみです。これは、少量のコードをメインの C ファイルに移動することで実現されます。
アプリケーション・コードに 2 つの変更が加えられています。まず、DL_SYSCTL_disablesSleepOnExit() を使用して、MSPM0 が各 UART RX によって短時間でウェークアップするようにします。次に、UART RX データの簡単なチェックが追加され、「S」または「s」を受信すると、赤い LED が点灯します。それ以外の場合はオフになります。
ステップ 5:デバッグと検証
以下の図は、9600 ボーでの UART 通信と、赤の LED が正しくオン・オフされていることを示すロジック・アナライザからのキャプチャです。このコードはすべての UART 文字をエコーしていますが、正しい文字を受信したときのみ LED をオンにします。
ソフトウェアは正常に移植されました。これが多くのデバイスの最初のペリフェラルである場合は、このプロセスを繰り返し、SysConfig を使用して各ブロックを結合します。