0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FRDM-MCXA153(その1:MCUXpresso IDE)

0
Posted at

MCUXpressoでFRDM-MCXA153を使う

いつぞやのCQ出版のセミナーでもらった、NXP製のFRDM-MCXA153に久しぶりに触った。IDEとしては、基本であるMCUXpresso IDEを使う。備忘録レベルの内容。

手順(参考記事)

本家サイトにある記事「MCUXpresso IDEとSDKのインストール (日本語ブログ)」に従って進める。まずは、ダウンロード(NXPアカウント必要)。

以降、本IDEの使い方などの解説。文字が小さいキャプチャが多数あるが、ご容赦願いたい。

サンプル

MCUXpresso IDE起動。

トップ画面のコピー.png

IDE(赤枠)をクリック。

トップ画面でIDEクリック後のコピー.png

温度センサー

FRDM-MCXA153にはI3Cでハンドリングできる温度センサーがある。これを例とする。トップ画面かIDE画面で「Import from Application Code Hub」をクリック(上図赤枠)。

I3Cで検索のコピー.png

I3Cで検索。

GitHubLinkクリック後Nextのコピー.png

「GitHub Link」をクリックすると、Nextできる。

Next.png

適宜、続ける。

Location.png

格納場所を指定。

Eclipse.png

「Eclipse projects」選択。

Select.png

FRDM-MCXA153を選択。

image.png

Warningが出るが、そのまま進むと、下記となる。

Demo.png

ソースコードの一部を抜粋。

/*
 * Copyright 2024 NXP
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

 <略>

 int main( void )
{
	init_pin_control();
	i3c.set_IBI_callback( ibi_trigger_output );

	PRINTF("P3T1755 (Temperature sensor) I3C operation sample: getting temperature data and IBI\r\n");

	DAA_set_dynamic_ddress_from_static_ddress( P3T1755_ADDR_I2C, P3T1755_ADDR_I3C );
	p3t1755.address_overwrite( P3T1755_ADDR_I3C );

	float ref_temp	= p3t1755;
	float low		= ref_temp + 1.0;
	float high		= ref_temp + 2.0;

	p3t1755.thresholds( low, high );

	PRINTF( "  T_LOW / T_HIGH registers updated: %8.4f˚C / %8.4f˚C\r\n", low, high );
	PRINTF( "      based on current temperature: %8.4f˚C\r\n", ref_temp );

	p3t1755.bit_op8( P3T1755::Conf, ~0x02, 0x02 );	// ALART pin configured to INT mode
	p3t1755.ccc_set( CCC::DIRECT_ENEC, 0x01 );		// Enable IBI

	info( p3t1755 );

	float		temp;
	uint8_t		ibi_addr;
	uint32_t	count	= 0;

	while ( true )
	{
		if ( (ibi_addr	= i3c.check_IBI()) )
			PRINTF("*** IBI : Got IBI from target_address: 7’h%02X (0x%02X)\r\n", ibi_addr, ibi_addr << 1 );

		temp	= p3t1755;
		PRINTF( "Read at %4lu sec: Temperature: %8.4f˚C\r\n", count++, temp );

		led_set_color( temp, ref_temp );
		wait( WAIT_SEC );
	}
}

<略>

Build(下記赤枠)。

StartDebuggingProjectのコピー.png

そのまま続ける。

Probe選択.png

実行.png

実行(下記赤枠)。

ResumeF8のコピー.png

実行中のConsoleの様子は下記となる。

実行中.png

OK。

SDK:GPIO

本IDEから辿れるSDKサンプルにGPIO制御が見つかる。ボタン押下を検知し、メッセージを表示するもの。

ImportSDKsamplesのコピー.png
GoStraight.png

image.png

本ボード(FRDM-MCXA153)を選択。

image.png

「gpio_input_interrupt」を選ぶ。

GPIOインポート後.png

ここでも、ソースコードの一部抜粋。

/*
 * Copyright (c) 2015, Freescale Semiconductor, Inc.
 * Copyright 2016-2018, 2023 NXP
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

<略>

int main(void)
{
    /* Define the init structure for the input switch pin */
    gpio_pin_config_t sw_config = {
        kGPIO_DigitalInput,
        0,
    };

    /* Define the init structure for the output LED pin */
    gpio_pin_config_t led_config = {
        kGPIO_DigitalOutput,
        0,
    };

    BOARD_InitHardware();

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

    /* Print a note to terminal. */
    PRINTF("\r\n GPIO Driver example\r\n");
    PRINTF("\r\n Press %s to turn on/off a LED \r\n", BOARD_SW_NAME);

/* Init input switch GPIO. */
#if (defined(FSL_FEATURE_PORT_HAS_NO_INTERRUPT) && FSL_FEATURE_PORT_HAS_NO_INTERRUPT) || \
    (!defined(FSL_FEATURE_SOC_PORT_COUNT))
    GPIO_SetPinInterruptConfig(BOARD_SW_GPIO, BOARD_SW_GPIO_PIN, kGPIO_InterruptFallingEdge);
#else
    PORT_SetPinInterruptConfig(BOARD_SW_PORT, BOARD_SW_GPIO_PIN, kPORT_InterruptFallingEdge);
#endif
    EnableIRQ(BOARD_SW_IRQ);
    GPIO_PinInit(BOARD_SW_GPIO, BOARD_SW_GPIO_PIN, &sw_config);

    /* Init output LED GPIO. */
    GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED_GPIO_PIN, &led_config);

    while (1)
    {
        if (g_ButtonPress)
        {
            PRINTF(" %s is pressed \r\n", BOARD_SW_NAME);
            /* Toggle LED. */
            GPIO_PortToggle(BOARD_LED_GPIO, 1U << BOARD_LED_GPIO_PIN);
            /* Reset state of button. */
            g_ButtonPress = false;
        }
    }
}

<略>

「Start Debugging」(赤枠)をクリックするとBuild実行。

StartDebuggingのコピー.png

「Resume」(赤枠)で実行。

Resumeのコピー.png

が、ボタンを押しても、Consoleに何も表示されない(下記)。

Terminal.png

調べると、Terminalタブでシリアル設定が必要とのこと。下記赤枠クリック。

OpenTerminal1のコピー.png

設定画面が表示される。

TerminalConfiguration.png

適切なシリアルポートおよび115200bpsを選択。

見える.png

すると、TerminalにPRINTF()の内容が表示される(ボタン押下の状況など)。

終わりに

シリアルを使って表示ができれば、他のマイコンボードと同じように扱える。適宜、トライしていく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?