目次
- はじめに
- 1. MCUXpresso Config Tools の起動
- 2. FRDM-MCXN947 の回路図から LED と スイッチの PIN アサインの確認
- 3. Pins Config Tools にて Pin の設定と Upadte Code の実行
- 4. LED 点灯の確認
- 5. Siwtch を押したら LED の点灯が変化するかどうかの確認
- 終わりに
はじめに
この記事では[VS Code で NXP マイコン開発 2/3] で動作確認した、FRDM-MCXN947 の Hello World プロジェクトにて MCUXpresso Config Tools と VS Code Manage Components を使用して GPIO の機能を追加する手順を解説しています。
LED の点灯確認と、スイッチを押したら LED の点灯が変化する機能を実装していきます。
25.12 バージョンの環境にて、FRDM-MCXN947 の Hello World プロジェクトが構築済みである状態から解説をします。
参考:[VS Code で NXP マイコン開発 2] MCUXpresso for Visual Studio Code でサンプル・プロジェクトを作成する方法
参考:[VS Code で NXP マイコン開発 3] FRDM-MCXN947 を使って Hello World を Debug してみた
注記:
Working with MCUXpresso Config Tools — MCUXpresso for VS Code 25.12 documentation
に記載がある通り、MCUXpresso Config Tools でプロジェクト設定を変更するためには、各種最新のバージョンにアップデートする必要があります。
もし、バージョンが古い場合、 [VS Code で NXP マイコン開発 2]【図1】 MCUXpresso Installer を使用した最新バージョンのコンポーネントの更新インストールを参考にバージョンアップを実施してください。
コンポーネント名 |
バージョン |
概要 |
|---|---|---|
| MCUXpresso for VS Code extension | 25.12 | VS Code の MCUXpresso extension |
| MCUXpresso SDK Developer | 25.12 | MCUXpresso SDK 開発に必要なツール |
| MCUXpresso Configuration Tools | 25.12 | MCU の PIN、Clock、Peripheral の設定を GUI 行う Tool |
1. MCUXpresso Config Tools の起動
FRDM-MCXN947 の Hello World プロジェクトを右クリックして、“Open with MCUXpresso Config Tools” をクリックします。
この時点で、VSCode拡張用MCUXpresso、MCUXpresso SDKおよびMCUXpresso設定ツール間の互換性バージョンチェックが行われます。初期起動は少し時間が掛かります。
サンプルによっては、ワーニングが出ますが、Update Code を実行することで、最新バージョンにさし変わりますので、OK を押します。
OverView 画面をまずは確認し、Configuration Tool が生成するコードの所在を確認します。
今回は Peripherals を使用しないので、OFF に変更します。
Close and Update Code を押してOverView 画面を閉じます。
Update Files の画面が表示されますので、OK を押します。
この手順で、確認したパスにファイルが生成されているかと思います。
ポイント:OverView 画面が出ない場合、左上にある
このアイコンを押します。
OverView 画面を閉じたら、Pin Tools の画面を表示させます。
デフォルトでは PRINTF を表示する LPUART の PIN アサインが設定されています。
ポイント:右上の、各アイコンを押すことで、Pin Tools と Clock Tools と Peripheral Tools の画面を変更可能です。
2. FRDM-MCXN947 の回路図から LED と スイッチの PIN アサインの確認
MCUXpressoを使用したFRDM-MCXN947開発ボード | NXP Semiconductors
サイトにある、デザインファイル FRDM-MCXN947 Design Files をダウンロードします。(My NXP が必須です)
FRDM-MCXN947-Design-Files\PDF\spf-90818_c.pdf が回路図になります。
ポイント:MY NXP はこちらのサイトを参考に登録ください。
NXP Semiconductors の My NXP 登録のメリットと登録方法 - NXP Semiconductors - マクニカ
| Pin name | 機能 | 概要 |
| P0_10 | LED_RED | GPIO を Low にすると LED が点灯 |
| P0_27 | LED_GREEN | GPIO を Low にすると LED が点灯 |
| P1_2 | LED_BLUE | GPIO を Low にすると LED が点灯 |
| P0_6 | スイッチ入力 | スイッチを押すと GPIO が Low になる |
ポイント:P0_10 などの名前は、Port0 の 10 番という意味になります。Pin 番号とは別に名前がついております。
Pin Tools でこの名前で設定ができるため、回路図上で Pin 番号を確認せずとも割り振りが可能です。
実際の開発の際は Pin 番号まで確認の上設計ください。
3. MCUXpresso Pins Config Tools にて Pin の設定と Upadte Code の実行
Pin Tools 画面で 表1:FRDM-MCXN947 LED と Switch の Pin 情報 の Pin アサインをしていきます。
Pin Name でソートをすると探しやすくなります。
該当の Pin name の左にあるチェックボックスを押します。
割り振りするペリフェラルを設定出来ますので、GPIO のチェックボックスを選択します。
Routing Details に設定した内容が反映されれば完了です。ほかの Pin も設定していきます。
実際に設定をすると図8のような画面になります。設定内容を箇条書きで記載しております。
- 生成するファイル内に定義を自動生成されるため、ラベルを設定しておきます
- 入出力設定と初期値の設定をしておきます
- スイッチは立下りエッジで割り込みを生成する設定にすることで、スイッチが押されたことを検知できます。
- 誤動作防止のため、Input には内部プルアップを有効化しておきます
を押すと、Pin 設定が反映されたファイルが自動生成されます。
生成されるパスはサンプルプロジェクトの中になります。
...\mcuxsdk\examples\_boards\frdmmcxn947\demo_apps\hello_world\pin_mux.c
...\mcuxsdk\examples\_boards\frdmmcxn947\demo_apps\hello_world\pin_mux.h
4. LED 点灯の確認
下記に示すコードを記述することで、LED の点灯を制御することが可能です。
今回は Hello World の標準で入っている エコーバック処理で使用している ch 変数に入る文字に応じて点灯を制御するコードを記述しました。
BOARD_InitHardware() の中で、Configuration Tool で設定した PIN の設定と GPIO の有効化を行っています。
使用している "BOARD_INITPINS_LED_RED_GPIO" などは Configuration Tool にて PIN のタグを設定することで自動生成されたものを使用しています。
ポイント:通常使用するペリフェラルのクロック設定も行う必要がありますが、GPIO の場合は PIN 設定の直前で実施している為 Clock 設定を今回は変更していません。
int main(void)
{
char ch;
/* Init board hardware. */
BOARD_InitHardware();
PRINTF("MCUX SDK version: %s\r\n", MCUXSDK_VERSION_FULL_STR);
PRINTF("hello world.\r\n");
while (1)
{
ch = GETCHAR();
PUTCHAR(ch);
// Ingnore enter
if (ch == '\r' || ch == '\n') {
continue;
}
if (ch == 'R' || ch == 'r') {
GPIO_PortToggle(BOARD_INITPINS_LED_RED_GPIO,
1U << BOARD_INITPINS_LED_RED_GPIO_PIN);
}
else if (ch == 'G' || ch == 'g') {
GPIO_PortToggle(BOARD_INITPINS_LED_GREEN_GPIO,
1U << BOARD_INITPINS_LED_GREEN_GPIO_PIN);
}
else if (ch == 'B' || ch == 'b') {
GPIO_PortToggle(BOARD_INITPINS_LED_BLUE_GPIO,
1U << BOARD_INITPINS_LED_BLUE_GPIO_PIN);
}
else {
PRINTF("\r\nUse R/G/B\r\n");
}
PRINTF("\r\n");
}
}5. Siwtch を押したら LED の点灯が変化するかどうかの確認
下記に示すコードを記述することで Switch の立下りエッジ割り込みを使って LED の点灯を制御することができます。
Configuration Tool で設定して割り込み設定は BOARD_InitHardware(); の中で実施されていますが、まだ割り込みは有効になっていないので、EnableIRQ(BOARD_SW_IRQ); を実行して有効化しています。
#define BOARD_SW_IRQ GPIO00_IRQn
#define BOARD_SW_IRQ_HANDLER GPIO00_IRQHandler
の定義はMCXN947_cm33_core0_COMMON.h や startup_mcxn947_cm33_core0.c で定義されていますので、それを使用しています。
/*******************************************************************************
* Definitions
******************************************************************************/
#define BOARD_SW_IRQ GPIO00_IRQn
#define BOARD_SW_IRQ_HANDLER GPIO00_IRQHandler
/*******************************************************************************
* Prototypes
******************************************************************************/
/*******************************************************************************
* Variables
******************************************************************************/
int switch_flag =0;
/*******************************************************************************
* Code
******************************************************************************/
/*!
* @brief Interrupt service fuction of switch.
*
* This function toggles the LED
*/
void BOARD_SW_IRQ_HANDLER(void)
{
GPIO_GpioClearInterruptFlags(BOARD_INITPINS_SWITCH_GPIO, 1U << BOARD_INITPINS_SWITCH_GPIO_PIN);
switch_flag=1;
}
/*!
* @brief Main function
*/
int main(void)
{
/* Init board hardware. */
BOARD_InitHardware();
EnableIRQ(BOARD_SW_IRQ);
PRINTF("MCUX SDK version: %s\r\n", MCUXSDK_VERSION_FULL_STR);
PRINTF("hello world.\r\n");
PRINTF("\r\nPlease push Switch for toggle BLUE LED");
while (1)
{
if(switch_flag==1){
GPIO_PortToggle(BOARD_INITPINS_LED_BLUE_GPIO,1U << BOARD_INITPINS_LED_BLUE_GPIO_PIN);
switch_flag=0;
}
}
}終わりに
VS Code での Configuration Tool の使い方を解説しました。GPIO を制御する基本的な処理ですが、PIN Tool を駆使することで PIN 設定を簡単に完了させてすぐ GPIO の動作確認に進むことができます。
他のペリフェラルを動作させる為には Clock Tool や Perpheral Tool も使用する必要があるため、次回ご紹介します。