NXP FRDM-MCXN947開発ボードの紹介


Masao_Tsukamoto DigiKey Employee

NXPFRDM-MCXN947(DigiKey品番:568-FRDM-MCXN947-ND)は、MCX N94およびN54 MCUを使用した迅速なプロトタイプ開発に役立つ、コンパクトで拡張性の高い開発ボードです。本ボードに搭載されたMCXN947 MCUは、最大150MHzで動作する32ビットArm Cortex M33デュアルコア、2MBのFlash、512KBのRAM、およびNPU/DSPアクセラレータを備えており、低価格ながら高い処理性能を実現しています。これにより、音声認識や画像認識などのエッジAI処理が可能です。

また、FRDM-MCXN947 は2つのType-C USBやEthernetをはじめ、Arduino互換ヘッダ、FRDMヘッダ、mikroBUS、Pmod、FlexIO/LCD、Camera/SmartDMA、FlexCANなど、図1のように多様なインターフェースを備えています。車載用・産業用デバイスなどの組み込みシステムに適します。

図1: NXPの FRDM-MCXN947 の各種インターフェース
(出典:FRDM-MCXN947 Development Board Quick Start Guide

主な仕様

FRDM-MCXN947 の仕様の概要は表1のとおりです。

項目 概要
MCU
MCXN947VDFT
● 150MHz Arm Cortex‑M33デュアルコア、TrustZone対応
● 2MBフラッシュ(ECC機能付き)
● 512KB RAM(内416KBはECC機能付き)
● eIQ Neutron NPU
● PowerQUAD DSP
電源供給 5V DCを以下のいずれかにより入力
● MCU USB(Type‑C)
● MCU-Link USB(Type‑C)
USB ● MCU‑Link USB(Type-C)はデバッグと書き込み用
● MCU USB(Type-C)はアプリ用
フラッシュメモリ
(MCU外付け)
● Winbondの W25Q64JVSSIQ(64Mbit)フラッシュ(実装済み)
● Micronの MT35XL512ABA1G12(512Mbit)フラッシュ(未実装)
Ethernet ● 10/100Mbit/s(RMII)LAN8741 Ethernet PHY
● RJ45コネクタ(J16)
拡張インターフェース ● Arduinoシールド(J1~J4の外側ピン)
● FRDMヘッダ(J1~J4の内側ピン)
● Mikroeクリックボード(J5/J6)
● カメラモジュール(J9)
● LCDモジュール(J8)
● Pmod(未実装)
CAN ● TJA1057GTK/3Z CAN PHY
● 4ピンCAN FDコネクタ(J10)
タッチパッド ワンタッチスライダ。P1_3ピンを介してTSI入力チャネルに接続
デバッグ ● デフォルトはMCU-Link
● 外部デバッグの場合はデバッガをJ23に接続。ジャンパ設定要変更
ボードサイズ 118mm x 55mm(突起部分含まず)

表1: FRDM-MCXN947 の仕様の概要
(出典:UM12018: FRDM-MCXN947 Board User Manual

ハードウェア構成

図2にFRDM-MCXN947のブロック図を示します。青色のブロックはMCUとヘッダ/コネクタ、グレイのブロックはボード上に実装されたコンポーネントを表します。黄色のブロックは、取り付け用パッドは用意されていますが、ピンヘッダなどが実装されていない個所を表します。

図2: FRDM-MCXN947 のブロック図
(出典:MCX N94/N54 MCU用FRDM開発ボード

FRDM-MCXN947 の主なインターフェースは以下のとおりです。

  • J1ヘッダ~J4ヘッダ: 外側のヘッダピンはArduino互換ヘッダで、Arduinoシールド(拡張ボード)を接続できます。内側のピンはFRDMヘッダで、MCUのGPIO/I2C/SPI/PWM/ADCなどが引き出されています。
  • J5, J6 mikroBUSヘッダ: mikroBUS は UART/I2C/SPI/PWM/ADC/INT/RESETを統合し、センサ、通信モジュール、GPS、無線モジュールなどのmikroBUSクリック(拡張ボード)を装着できます。
  • J7 Pmodヘッダ: Pmod は SPI/I2C/UART/GPIOを統合し、小型のセンサモジュールや通信モジュールを接続できます。ヘッダピンは未実装です。
  • J8 FlexIO/LCDヘッダ: FlexIO はユーザー定義のUART/SPI/I2Cライクなシリアル信号を生成できます。さらにLCD用の8/16ビット並列バスも生成可能で、表示デバイスなどの実装ができます。
  • J9 Cameraヘッダ: Camera ヘッダはカメラからの大量の画像データを、CPUを介さずにSmartDMAが直接メモリへ転送します。画像認識、AI推論、高速フレームの取り込みが可能です。
  • J10 FlexCANインターフェース: FlexCAN は車載用・産業用通信規格です。CANトランシーバ(TJA1057)が搭載されており、車載ECU、産業機器、ロボット制御などに利用できます。
  • J11 MCU USBインターフェース: MCU USB は FRDM‑MCXN947 がUSBホストもしくはUSBデバイスとしてスタンドアロン動作するときに使用するUSB端子です。
  • J16 Ethernetインターフェース: Ethernet はLAN8741(RMII PHY)を搭載し、FRDM‑MCXN947 を有線LANに接続できます。TCP/IP通信、MQTT、HTTP、産業用プロトコルなどのネットワークアプリケーションに利用できます。
  • J17 MCU-Link USBコネクタ:MCU-Link USBはデバッグやフラッシュ書き込み、VCOMを提供します。PCと接続して開発するときはこの端子を使用します。

図3に FRDM-MCXN947 のヘッダピンの詳細を示します。

図3: FRDM-MCXN947 のヘッダピンの詳細
(出典:FRDM-MCXN947開発ボード クイックスタートガイド

統合開発環境の構築とセットアップ

FRDM-MCXN947Zephyr RTOSをサポートしています。この記事ではC/C++によるベアメタル開発の統合開発環境(IDE)の構築とセットアップについて説明します。

1. ターゲットデバイスをホストに接続
図4に示すように、ホスト(パソコン)のUSB端子(Type-A)から付属のUSBケーブルでターゲットデバイス( FRDM-MCXN947 )のJ17 MCU-Link USB(Type-C)に接続します。正しく接続されると、オンボードのD2 RGB LEDが赤色でゆっくり点滅します。

図4: ホスト(パソコン)とターゲットデバイス( FRDM-MCXN947 )の接続

2. 統合開発環境のインストール
NXPは統合開発環境(IDE)としてMCUXpresso IDEとMCUXpresso for Visual Studio Code(VS Code)を提供しています。この記事ではMCUXpresso IDEを用いて説明を行います。

MCUXpresso IDEは図5に示すダウンロード画面からダウンロードします。ダウンロードにはNXPアカウントへの登録およびログインが必要です。画面の指示に従ってインストールしてください。インストールが完了したら、MCUXpresso IDEの起動画面が現れます。

図5:MCUXpresso IDEのインストール(出典:MCUXpresso統合開発環境 (IDE)

3. SDKのインストール
MCUXpresso IDEのインストールが完了したら、FRDM-MCXN947用のSDKをインストールします。MCUXpresso IDEの起動画面でDownload and Install SDKsをクリックし、frdmmcxn947を検索してインストールします。

4. ターゲットデバイスの設定
MCUXpresso IDEの起動画面のImport SDK Exampleをクリックし、FRDM-MCXN947 を選びます。これによりMCUXpresso IDEは FRDM-MCXN947 をターゲットデバイスとして認識します。

5. サンプルプログラム
SDKには豊富なサンプルプログラムが提供されています。下記はD2 RGB LEDの点滅プログラムの主要部分です。赤色でかなり早い点滅です。

#include "board.h"           		// ボード固有の設定(ピン配置/クロックなど初期化)
#include "fsl_debug_console.h"  	// デバッグコンソール(PRINTF/GETCHARなどの入出力)
#include "fsl_gpio.h"             	// GPIO制御(ピン設定、入力/出力など)
#include "app.h"                   	// アプリ固有の処理・関数宣言

void delay(void);

void delay(void)
{
    volatile uint32_t i = 0;
    for (i = 0; i < 800000; ++i)
    {
        __asm("NOP"); 			// 遅延(800000回NOPを実行)
    }
}

// メイン関数
int main(void)
{
// LED出力ピンの初期化構造体を定義
    gpio_pin_config_t led_config = {
        kGPIO_DigitalOutput,
        0,
    };
  // ピン設定/クロックなどを初期化
    BOARD_InitHardware();

    PRINTF("MCUX SDK version: %s\r\n", MCUXSDK_VERSION_FULL_STR);

    // ターミナルへメッセージを出力
    PRINTF("\r\n GPIO Driver example\r\n");
    PRINTF("\r\n The LED is blinking.\r\n");

    // LED出力ピンを初期化
    GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED_GPIO_PIN, &led_config);

    while (1)
    {
        delay();			// delay関数(800000回ループ)のコール
        GPIO_PortToggle(BOARD_LED_GPIO, 1u << BOARD_LED_GPIO_PIN);
    }
}

設計のポイント/トラブルシューティング

設計のポイントやトラブルシューティングに関する重要な項目は以下のとおりです。

  • ジャンパの設定: ジャンパの設定を誤ると、MCUの停止、デバックや書き込みができなくなるなどの状況を招きます。工場出荷時のジャンパ設定は以下のとおりです。この設定はMCU-Linkによるデバッグや書き込みを前提にしています。このままにしておくことをお勧めします。なお、本ボードには2つのショートジャンパが付属されています。

    • J18: オープン(MCU-Link VCOM有効)
    • J19: オープン(MCU-Link SWD有効)
    • J21: オープン(MCU-Link 通常ブート)
    • J22: ショート(MCU-Link SWDクロック有効)
    • J24: ショート(P3V3_MCUをP3V3から供給)。このジャンパをオープンにするとMCUが動作しなくなりますので、外さないでください。
    • J25~J28: 未実装
  • USB端子: 本ボードには2つのType-C USB端子が搭載されていますが、それぞれ用途が異なります。目的に応じて正しい端子を使用してください。

    • J17 MCU-Link USB: FRDM-MCXN947 をホスト(パソコン)に接続し、MCU-Linkによるデバッグや書き込みを行うための端子です。
    • J11 MCU USB: プログラムが完成し、FRDM‑MCXN947 がUSBホスト、またはUSBデバイスとしてスタンドアロンで動作するときに使用する端子です。
  • デバッグ機能: デフォルトはMCU-Linkです。

    • MCU-Link: オンボードのLPC55S69(Arm Cortex‑M33)がデバッグアダプタとして動作し、SWD経由でデバッグや書き込みを行います。
    • 外部デバッガ: MCU-Linkを使用せずに、外部デバッガ(J‑LinkやDAP-Linkなど)を使用する場合、外部デバッガをJ23に接続します。同時にJ18はオープンのままJ19をショートしてMCU‑Linkを無効化します。
  • サンプルプログラムの活用: SDKには多くのサンプルプログラムが提供されています。最初から大規模なプログラムを書くのではなく、サンプルプログラムを動かし、変更を加えながら確実に動くモジュールを1つずつ積み上げていくのも1つの方法です。

  • デュアルコアプログラミング: FRDM‑MCXN947 のMCU( MCXN947VDFT )はデュアルコアです。デュアルコア開発ではCore0とCore1の役割分担を明確にすることが重要です。例えば定常的な通信関係の処理をCore1に任せ、Core0はシステム全体の制御を行うような構成が1つの例です。コア間のデータのやり取りはMailBoxで行います。双方の割り込みタイミングやMailBoxへのアクセスの順序・排他制御を適切にプログラミングすることが重要です。

  • NPU/DSP: これらのアクセラレータへのタスクの指示や演算結果の取得はCore0が行います。NPUやDSPに対してプログラムを書く必要はありません。Core0からの指示に従い、NPUが AI推論に必要な行列演算を行い、DSPがフィルタ処理などの演算を高速に実行します。

応用事例

NXPの FRDM‑MCXN947 を活用し、若いメイカーによる、アイデアに富んだユニークな作品をご紹介します。

  • Thermal Gesture Light サーマルカメラ(M5Stack T‑Lite)で手の温度分布を取得し、FRDM‑MCXN947 でAI推論を行い、「じゃんけん」を認識します。これによりハンドジェスチャによる照明制御が可能です。NPUの活用例です。

  • 世界イチ小さい!?1.1cmのゲーム機「一閃ボーイ!」「一寸法師」をもじった「一閃ボーイ」の1.1cm正方のゲーム機です。「御椀船」に収められています。5行 × 10列の赤色LEDディスプレイと3つの金属タッチ電極を備えています。FRDM-MCXN947 がWi-Fi経由でパソコンとつながり、パソコンからUSB経由で「御椀船/一閃ボーイ」につながります。アイデア満載です。

  • 一進数時計(DigiKey award winner) 7セグを使用して「時/分/秒」を、あえて「1」のみで表示する時計です。FRDM‑MCXN947 はNTPで正確な時刻を取得し、7セグの点灯制御を行ないます。「1」を数えるのは大変ですが、面白いアプローチです。

  • NXPChan-Arm FRDM-MCXN947 による3つのロボットアームのデモ(Moveitデモ/手検知による停止デモ/テレオペデモ)です。NXP FRDM-MCXN947 でmicro-ROSを実行し、ロボットアームを制御します。青い物体をリフトアップし、NPUによる手の認識で衝突を避け、手元の操作アームで遠隔操作を行います。本格的です。

まとめ

NXPの FRDM-MCXN947 は、高性能Cortex‑M33デュアルコアにNPU/DSPアクセラレータを統合し、Arduino互換ヘッダやmikroBUSなど豊富なインターフェースを備えています。またMCU-Linkを備えていますので、デバッグを効率よく進めることができます。エッジAI、産業用ネットワーク、CAN通信など、さまざまな組み込みシステムのプロトタイプ開発に適した開発ボードです。FRDM-MCXN947(DigiKey品番:568-FRDM-MCXN947-ND )はDigiKeyから入手できます。FRDM-MCXN947 を活用して、さまざまなアプリケーションの開発をお楽しみください。

関連資料

1 Like