FRDM-A-MOTABS2ボードのスタート・ガイド

このドキュメントの内容

  • 1

    パッケージの内容
  • 2

    ハードウェアの入手
  • 3

    ソフトウェアのインストール
  • 4

    ハードウェアの構成

1. パッケージの内容

NXPのアナログ製品開発ボードは、NXP製品の評価を目的とした使いやすいプラットフォームです。さまざまなアナログ・ソリューション、ミックスド・シグナル・ソリューション、パワー・ソリューションに対応しています。実績のある大容量テクノロジを使用したモノリシック集積回路 (IC) およびシステム・イン・パッケージ (SiP) デバイスを搭載しています。NXP製品は、最先端システムへの電源供給において、より長いバッテリー寿命、より小さいフォーム・ファクタ、より少ない部品数、より低いコスト、より優れたパフォーマンスを実現します。

このガイドでは、FRDM-A-MOTABS2ボードをセットアップして使用する手順について説明します。

1.1 キットの内容

FRDM-A-MOTABS2キットには以下のものが含まれています。

  • FRDM-A-MOTABS2ボード
  • 12 V DC、5 A電源、アダプタ付き

1.2 追加ハードウェア

このボードを使用する際は、キットの内容物のほかに以下のハードウェアを使用すると役に立ちます。

1.3 ソフトウェア

この評価ボードで作業を開始する前に、ソフトウェアをインストールする必要があります。記載されているすべてのソフトウェアは、FRDM-A-MOTABS2評価ボードの情報ページから入手できます。

2. ハードウェアの入手

2.1 ボードの特長

FRDM-A-MOTABS2キットには以下のものが含まれています。

  • SB04アンチロック・ブレーキ・システム (ABS) チップ用の評価ボード
  • コンパクト・サイズ
  • NXPのマイクロコントローラ (MCU) 評価ボードを取り付けるためのFRDMシールド

2.2 ボードの説明

FRDM‑A-MOTABS2のジャンパ・ブロックにより、追加のMCUとともに使用できるようボードを設定できます。ジャンパJ16 (DOSV) では、使用するMCUの要件に応じて3.3 V~5.0 Vの電圧を選択できます。必ずジャンパJ16を適切な電圧レベルに設定してください(S32K144およびKEAZ128の場合は、DOSVを5 Vに設定)。

2.3 ボードのコンポーネント

FRDM-A-MOTABS2ボードの概要については、次の図を参照してください。

Figure 1. FRDM-A-MOTABS2 Board

3. ソフトウェアのインストール

S32 Design Studioは、NXPソフトウェア開発キット (SDK) 上に構築されたソフトウェア・ドライバです。このセクションでは、S32 Design Studioをインストールしてアプリケーション開発に使用する方法について説明します。

3.1 S32 Design Studioのインストール

次の手順では、S32 Design Studioの最新バージョンとサポートされているABSコントローラ・モデルを入手してインストールする方法を説明します。

  1. NXPのWebサイトから最新のS32 Design Studioインストーラを入手します
  2. 実行可能ファイルを実行し、画面の指示に従います

S32 Design Studioでは、SDKライブラリがIDEとともに配布され、手動での追加やリンクは必要ありません。

3.2 ソフトウェア・ドライバとサンプル・プロジェクトを入手する

この手順では、最新バージョンのソフトウェア・ドライバとサンプル・プロジェクトの入手方法について説明します。

  1. ドライバとサンプル・プロジェクトを含むZIPファイルをリンクからダウンロードします
  2. ダウンロードしたファイルを解凍し、表1に記載されているフォルダの内容を確認します
フォルダ名 フォルダの内容
S32DS_Examples S32 Design Studio 1.2以降に対応するサンプル・プロジェクト・フォルダ。
ABS_S32K144_BM14 このサンプルは、ABSコントローラ・ソフトウェア・ドライバを使用してABSコントローラのステータスを監視する方法を示します。測定値とステータス情報を読み取り、障害をクリアするなどの処置を実行して、ドライバの適切な動作を確保できます。

このサンプル・プロジェクトの目的は、ポンプ・モーター・プリドライバ用のパルス幅変調 (PWM) の実装方法を示すことです。

このプロジェクトでは、次の2つの方法を示します。

  1. シリアル・ペリフェラル・インターフェース (SPI) 制御:ポンプ・モーター・プリドライバの出力状態をSPIコマンドによって駆動します(このソリューションの利点は、ポンプ・モーター・プリドライバを直接制御するための追加のMCUピンがを必要としないことです)
  2. タイマ生成PWM:タイマ/PWMモジュール (TPM) ペリフェラルによってMCU側でPWM信号を生成します(このソリューションではCPU時間の消費が少なくなります)
このサンプル・プロジェクトは、ホイールスピード・センサ・インターフェースの操作方法を示します。最終的なホイール速度の計算については、ホイールなど追加のハードウェア機器が必要となるため、サポートしていません。このサンプルでは、特定の期間内のエッジの数をカウントすることに焦点を当てています。
Programmer_Guide このフォルダには、このソフトウェア・ドライバの詳細なAPIドキュメントが含まれています。

3.3 S32 Design Studioにサンプル・プロジェクトをインポートする

次の手順では、ダウンロードしたzipファイルからS32 Design Studioにサンプルをインポートする方法を示します。

  1. 図2に示すように、S32 Design Studioのメニュー・バーで[File(ファイル)]→[Import(インポート)]の順にクリックし、ポップアップ・ウィンドウで[General(一般)]→[Existing Projects into workspace(既存のプロジェクトをワークスペースへ)]を選択して、[Next(次へ)]を選択します
  2. Figure 2. Importing an Example Project (a)

    Figure 2. Importing an Example Project (a)
  3. 図3に示すように、[Browse(参照)]をクリックし、解凍したサンプル・ファイルを含むフォルダに移動してABS_S32K144_BM14フォルダを開き、インポートするプロジェクトを選択して、[OK]を選択します
  4. Figure 3. Importing an Example Project (b)

    Figure 3. Importing an Example Project (b)
  5. [Select root directory(ルート・ディレクトリの選択)]ボックスにプロジェクトが表示されている状態で、[Copy projects into workspace(プロジェクトをワークスペースにコピー)]チェックボックスを選択し、[Finish(完了)]を選択します。図4に示すように、S32 Design Studioのワークスペースにプロジェクトが表示され、ビルドや実行が可能になります
  6. Figure 4. Importing an Example Project (c)

    Figure 4. Importing an Example Project (c)

3.4 ABSコントローラのSDKソフトウェア・ドライバで新しいプロジェクトを作成する

サンプル・プロジェクトを使用しない場合は、ABSコントローラのSDKソフトウェア・ドライバを使用する新しいプロジェクトを作成および設定できます。

プロジェクトを作成するには、次の手順に従います。

  1. 図5に示すように、S32 Design Studioのメニュー・バーで、[File(ファイル)]→[New(新規)]→[New S32DS Project(新規S32DSプロジェクト)]の順に選択します
  2. Figure 5. New S32DS Project Wizard

    Figure 5. New S32DS Project Wizard
  3. 図6に示すように、[New S32DS Project(新規S32DSプロジェクト)]ダイアログ・ボックスが開いたら、プロジェクト名をテキスト・ボックスに入力し、プロジェクト用のMCUを選択して(このチュートリアルではS32K144を使用)、[Next(次へ)]を選択します
  4. Figure 6. S32DS Project Name and MCU Board Selection

    Figure 6. S32DS Project Name and MCU Board Selection
  5. 次のステップでは、図7に示すように、使用するSDKやフレームワークなどの必要なプロジェクト設定を選択し、[Finish(完了)]を選択します
  6. Figure 7. S32DS Project Settings and SDK Selection

    Figure 7. S32DS Project Settings and SDK Selection
  7. 図8は、新しいプロジェクトを作成した後の[Project Explorer(プロジェクト・エクスプローラ)]パネルとmain.cの内容を示しています
  8. Figure 8. Created S32DS Project in S32DS Project Explorer and main.c Template

    Figure 8. Created S32DS Project in S32DS Project Explorer and main.c Template

Processor Expertコンポーネントの設定

このセクションでは、Processor Expertコンポーネントを使用してMCUを設定する方法について説明します。このコンポーネントを使用すると、クロック、ピンの多重化、ペリフェラルなどの一般的な機能をユーザー・フレンドリなグラフィカル・ユーザー・インターフェース (GUI) を通して設定でき、設定プロセス全体が容易になります。

  1. まず、図9に示すように、S32DSメニューで[Processor Expert]→[Show Views(ビューを表示)]の順に選択して、ワークスペースをProcessor Expertビューに設定します。これにより、[Components(コンポーネント)]、[Component Inspector(コンポーネント・インスペクタ)]、[Component Library(コンポーネント・ライブラリ)]などのタブがワークスペースに追加されます
  2. Figure 9. Processor Expert Show View

    Figure 9. Processor Expert Show View
  3. 選択したMCUでソフトウェア・ドライバを実行するには、使用するSPIピンと汎用入出力 (GPIO) ピンを設定します。図10に示すように、サポートされているMCUのリストに従って、使用するMCUのPinMuxコンポーネントで正しいピンを選択します。この手順のテンプレートとして、サンプル・プロジェクトのいずれかを使用できます
  4. Figure 10. PinMux Component in S32DS Project

    Figure 10. PinMux Component in S32DS Project
  5. S32 SDKリポジトリから、低消費電力SPI (LPSPI) (spi_pal) など、必要なMCUペリフェラル用のコンポーネントを追加します。デバッグ・コンソールを使用する場合は、図11に示すように、LPUART (Low-Power Universal Asynchronous Receiver/Transmitter) (lpuart) コンポーネントを追加します
  6. Figure 11. Add Components from S32 SDK Repository

    Figure 11. Add Components from S32 SDK Repository
  7. 図12に示すように、追加したすべてのコンポーネントがコンポーネント・ツリーに表示されます。S32 SDKとProcessor Expertインターフェースは密接に結び付いています。プロジェクトのSDKフォルダには、プロジェクトで使用されるコンポーネントに対応するペリフェラル・ドライバのみが含まれています。S32DSでは、Processor ExpertはS32 SDKのドライバ構造を設定するためのグラフィカル・インターフェースとして機能します。コードはこれらの構造を初期化関数に渡します
  8. Figure 12. Used Components in S32DS Project

    Figure 12. Used Components in S32DS Project
  9. 次のステップでは、追加されたコンポーネントをProcessor Expertのコンポーネント・インスペクタで設定します。一連の共通した設定手順がすべてのプロジェクトに適用されます。必要なオプションが不明な場合は、使用するMCUおよびMC33SB0400/401のデータ・シート、または既存のサンプルを参照してください
    1. クロックの設定はclock_managerを使用して行う必要があります。これを使用して、MCUとそのペリフェラルのクロック・ソース、周波数、プリスケーラ、クロック・ゲートを選択できます
    2. Pin_Settingsで(前のステップで説明したように)ピンの多重化を行い、入出力 (I/O) ピンを使用する各MCUペリフェラルに対して適切なルーティング(多重化)を選択します
    3. spi_pallpspilpuartなどのペリフェラルをそれぞれ専用のコンポーネントで設定します(図13のLPSPIコンポーネントの設定例を参照)
  10. Figure 13. Configuration of spi_pal Component Using Processor Expert Inspector

    Figure 13. Configuration of spi_pal Component Using Processor Expert Inspector
  11. MCUと使用するペリフェラルの設定が完了しました。次のステップでは、Processor Expertを使用して各コンポーネント用のコードを生成します。
    1. 図14に示されるアイコンを選択します
    2. Figure 14. Generate Processor Expert Code

      Figure 14. Generate Processor Expert Code
    3. プロジェクト・フォルダ内のGenerated_Codeフォルダに、生成されたファイルが含まれています
    4. これらのファイルを調べて、SDKドライバの初期化関数に渡される各設定構造の名前を特定します

ABSソフトウェア・ドライバをプロジェクトに追加

このセクションでは、プロジェクトにABSコントローラ・ソフトウェア・ドライバを追加する方法について説明します。

  1. 「ABS_S32K144_BM14」ドライバ・フォルダの内容を、新しく作成したプロジェクトの「Sources」フォルダにコピーします(コピーされるファイルのリストを図15に示します)
  2. Figure 15. Add the ABS Controller SW Driver to the Project

    Figure 15. Add the ABS Controller SW Driver to the Project
  3. 図16でハイライトされている行をmain.cに追加して、ユーザ ー・コードでABSコントローラ・ソフトウェア・ドライバにアクセスできるようにします
  4. Figure 16. Link ABS Controller SW Driver

    Figure 16. Link ABS Controller SW Driver

ABSソフトウェア・ドライバの設定

新しいプロジェクトを作成してABSコントローラ・ソフトウェア・ドライバを追加した後は、ドライバを設定して、すでに設定済みのMCUペリフェラルに関連付けます。ドライバの機能と必要な設定手順については、ABSコントローラ用の組込みSDKソフトウェア・ドライバに記載されています。

  1. それに従って、abs/abs_model.h内のABSコントローラ・モデルに変更を加えます
  2. abs_drv_data_t型の変数を作成し、使用するすべての関数に渡します(この変数には、MCUペリフェラルの設定とABSコントローラ・ソフトウェア・ドライバの内部データが格納されます)
  3. この変数を制御することで、使用されているインスタンスの数に関係なくソフトウェア・ドライバを動作させることができます(インスタンスの数はMCUのリソースによってのみ制限されます)
  4. 実行時にもこの変数にアクセスできるようにします
  5. この変数をmain()関数内で宣言するか、グローバル変数として宣言します
  6. 図17に示すように、ABSソフトウェア・ドライバを設定します。まずABS_GetDefaultUserConfig()から開始し、必要に応じて個々の設定を変更します。結果の設定構造は、選択したモデルのデバイス・レジスタ配列に内部でマッピングされます
  7. 使用されるSPIおよびGPIOインターフェースをABSソフトウェア・ドライバのランタイム・データに関連付けます。これにより、ドライバのコアがGPIOを介してリセットやソフトウェア制御のチップ・セレクトにアクセスしたり、通信用にSPIにアクセスしたりできるようになります(PDIWSOxVSO_INWSAIなどの信号に対してFTMPITGPIOを含む追加ペリフェラルを使用することで、PWMやホイールスピード・センサ (WSS) 処理などの拡張機能に対応できます)
  8. オプションでABS_SetupSPI()関数を使用して、fsl_lpspiという名前のProcessor Expertコンポーネントによって生成された設定でSPIペリフェラルを初期化します
  9. S32DSでは、ABS_SetupSPI()関数がSDK SPIドライバの初期化関数に設定構造を渡します(ABS_SetupGPIOs()関数はS32 SDKでは使用されません)
  10. Pins_DRV_Init()関数を使用して、PinMuxコンポーネントによって生成された設定構造でピンを初期化します
  11. 最後に、ABSソフトウェア・ドライバ初期化関数を呼び出します。このとき、ドライバのデータ構造の一部である設定済みMCUペリフェラルへの参照を渡し、デバイスのユーザー設定を含める必要があります(このアプローチにより、MCUペリフェラルの設定とその使用との間で責任が分離されます)
  12. Figure 17. Setup Function for ABS Software Driver

    Figure 17. Setup Function for ABS Software Driver

アプリケーション・コードの作成

すべてのアプリケーション・コードは、プロジェクト・ディレクトリ内の「Sources」フォルダにあります。使用に関連する元のコメントを保持したまま、main.cのコードを変更できます。

ABSコントローラ用にコードを初期化するには、次の手順に従います。

  1. 使用するすべてのMCUペリフェラル(ABS_SetupSPI()で初期化済みの場合はSPIを除く)に対して初期化関数を呼び出します。Generated_Codeフォルダ内の.hファイルに含まれる生成された設定構造へのポインタを渡します。図18に初期化の例を示します。このコードでは、前述のすべてのステップが再使用されます。また、ユーザーがすでにクロック、ピンの多重化、ペリフェラルの設定を完了し、コードを生成し、ABS SWドライバのセットアップ関数を実装済みであることを前提としています。実装については、コードのコメントを参照してください
  2. Figure 18. Initialization of MCU and Used Peripherals

    Figure 18. Initialization of MCU and Used Peripherals
  3. ABS SWドライバのセットアップ関数(このチュートリアルではSetupABSDriver())を呼び出します。図19を参照してください
  4. SWドライバの設定が完了したら、適切な関数を使用してアプリケーションをビルドします(関数のシグネチャと必要なパラメータについてはプログラマーズ・ガイドを参照し、使用可能なすべての関数のプロトタイプを含むsources/abs/abs.hヘッダー・ファイルも確認してください)
  5. ABSコントローラを動作させ続けるには、定期的な割込み、またはネストした遅延を伴う無限ループを通じて、約50 msごとにABS_FeedWatchdog()コマンドを呼び出します(この遅延により、SPI通信の過度なオーバーヘッドを防ぎ、MCUへの過負荷を回避します)
  6. Figure 19. User Application Using ABS SW Driver

    Figure 19. User Application Using ABS SW Driver

ユーザー・アプリケーションの作成は、前の手順と同じアプローチに従います。より複雑なABSコントローラのユース・ケースについては、付属のサンプル・プロジェクトを参照してください。

コンパイル、ダウンロード、デバッグ

プロジェクトをコンパイルするには、図20に示すように、ツールバーの[Compile(コンパイル)]アイコンを選択します。

Figure 20. Compiling the Project

Figure 20. Compiling the Project

S32 Design Studioでボードにアプリケーションをダウンロードするプロセスは、各MCUボードによって異なります。詳細については、S32 Design Studioのユーザー・ガイドを参照してください。S32K144 MCUボードにダウンロードしてデバッグするには、次の手順に従います。

  1. 図21に示すように、ツールバーのデバッグ・アイコンの横にある矢印を選択し、[Debug Configurations(デバッグ設定)]を選択します
  2. Figure 21. Downloading the Application (a)

    Figure 21. Downloading the Application (a)
  3. [Debug Configurations(デバッグ設定)]ダイアログ・ボックスの[GDB PEMicro Interface Debugging(GDB PEMicroインターフェースのデバッグ)]で、S32K144_SDK_Project_Debugを選択します
  4. [C/C++ Application(C/C++アプリケーション)]にプロジェクトの.elfファイルへのパスが含まれていることを確認します。図22を参照してください
  5. Figure 22. Downloading the Application (b)

    Figure 22. Downloading the Application (b)
  6. [Debugger(デバッガ)]タブを選択し、[Interface(インターフェース)]オプションを[OpenSDA Embedded Debug - USB Port(OpenSDA組込みデバッグ - USBポート)]に設定します。次に、ポート設定の横にある[Refresh(更新)]ボタンを選択して、使用可能なUSBポートのリストを更新します(図23を参照)
  7. [Target(ターゲット)]が[S32K144F512M15]に設定されていることを確認します。(そうでない場合は[Select Device(デバイスの選択)]ボタンを使用してターゲットを変更します。[Select Target Device(ターゲット・デバイスの選択)]ダイアログ・ボックスのボタンをクリックし、[NXP]→[S32K1xx]→[S32K144F512M15]の順に移動して、[Select(選択)]ボタンで確定します)
  8. 次に、[Debug(デバッグ)]を選択すると、S32 Design Studioがプログラムをボードにダウンロードして起動します
  9. Figure 23. Downloading the Application (c)

    Figure 23. Downloading the Application (c)

4. ハードウェアの構成

4.1 ドライバのユーザー設定

ドライバは静的であり、ユーザー設定構造によって定義された単一エントリ・ポイントを使用します。デバイスの設定に応じた値を構造に入力します。初期化関数は、この設定を直接受け取ります。

設定オプション(選択したモデルに応じて):

  1. クロックの設定と監視:内部クロック監視機能、発振器クロック周波数、変調帯域
  2. 誘導性負荷用のローサイド・ドライバ:ハイサイド・フェイルセーフ・スイッチ、出力PWM周波数、開放負荷検出用シンク電流
  3. ポンプ・モーター・プリドライバ:SPI/外部用制御、過電流マスキング/フィルタ時間、スルー・レート、ロード・ダンプ
  4. ホイールスピード・センサ・インターフェース:センサ・タイプ、I/O信号多重化、OCフィルタ時間、デジタル・フィルタ時間、内部カウンタ、漏れ電流追跡
  5. 補助ドライバ:警告ランプ機能、有効/無効
  6. ウォッチドッグ:線形帰還シフト・レジスタ (LFSR) シード

ユーザー設定構造の詳細については、プログラマーズ・ガイドを参照してください。

4.2 利用される低レベル・ドライバ

ソフトウェア・ドライバは、通信、制御、および関連機能に低レベルのMCUペリフェラル・ドライバを使用します。ソフトウェア・ドライバの機能は、これらの低レベル・ドライバに依存します。

最新のソフトウェア・ドライバは、GNU Compiler Collection (GCC)-6.3を使用してNXP SDKでビルドされています。このソフトウェア・ドライバは、GCC 4.9を使用してビルドされた古いAMLベースのソフトウェア・ドライバと引き続き互換性があります。異なるSDK間での移植性をサポートするために、アナログ・ミドルウェア・レイヤ (AML) によって、選択した低レベル ・ドライバ用のAPIを統合しています。

既存のAMLベースの低レベル・ドライバを再利用することで、開発が迅速化され、一般的なタスク向けに検証済みのソリューションが得られます。

図24は、通信と制御に関するソフトウェア・ドライバ・アーキテクチャを示しています。

Figure 24. SW Driver Architecture

Figure 24. SW Driver Architecture

サポート

フォーラム

NXPのいずれかのコミュニティ・サイトで、他のエンジニアとつながり、FRDM-A-MOTABS2を使用した設計に関する専門的なアドバイスを受けることができます。