1993807_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1993807_ja-JP

1993807_ja-JP

imx8m mini evk の GPIO ピン 18 (GPIO5_Io11) で出力を取得する

サンプルコードを使用して、GPIO 5ピン11(物理的にはピン18)でLEDを点滅させる出力を取得しようとしていますが、結果を取得できません。

マルチメータを使用して、ピン18であるグランド(ピン20)に対する電圧をチェックしています。

これがコードです


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

#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "fsl_debug_console.h"
#include "fsl_gpio.h"
#include "fsl_iomuxc.h" // Include the IOMUXC header if not already included


/*******************************************************************************
 * Definitions
 ******************************************************************************/
#define EXAMPLE_LED_GPIO     GPIO5
#define EXAMPLE_LED_GPIO_PIN 11U

/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Variables
 ******************************************************************************/
/* The PIN status */
volatile bool g_pinSet = false;
/*******************************************************************************
 * Code
 ******************************************************************************/
/*!
 * @brief Main function
 */
int main(void)
{
    /* Define the init structure for the output LED pin*/
    gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};

    /* Board pin, clock, debug console init */
    /* Board specific RDC settings */
    BOARD_RdcInit();

    BOARD_InitBootPins();
    BOARD_BootClockRUN();
    BOARD_InitDebugConsole();
    BOARD_InitMemory();

    /* Configure the IOMUXC for GPIO5_IO08 (physical pin 18) */
    IOMUXC_SetPinMux(IOMUXC_ECSPI2_MOSI_GPIO5_IO11, 0U);
    IOMUXC_SetPinConfig(IOMUXC_ECSPI2_MOSI_GPIO5_IO11, 0x10B0u);

        /* Init output LED GPIO. */
    GPIO_PinInit(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, &led_config);

    /* Print a note to terminal. */
    PRINTF("\r\n GPIO Driver example\r\n");
    PRINTF("\r\n The LED is blinking.\r\n");



    while (1)
    {
        SDK_DelayAtLeastUs(300000, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY);
#if (defined(FSL_FEATURE_IGPIO_HAS_DR_TOGGLE) && (FSL_FEATURE_IGPIO_HAS_DR_TOGGLE == 1))
        GPIO_PortToggle(EXAMPLE_LED_GPIO, 1u << EXAMPLE_LED_GPIO_PIN);
#else
        if (g_pinSet)
        {
            GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
            g_pinSet = false;
        }
        else
        {
            GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
            g_pinSet = true;
        }
#endif /* FSL_FEATURE_IGPIO_HAS_DR_TOGGLE */
    }
}
Re:imx8m mini evkのGPIOピン18(GPIO5_Io11)で出力を取得する

ご提案とテストビデオのご@Chaviraいただきありがとうございます。

主な問題は、内部プルアップ/ダウン抵抗を有効にするPKEビットを有効にしていないことでした。2つ目は、フルドライブの強度とフルスピードを設定することで、PIN番号19で3.3ボルトを得ることができました(@Chaviraによって修正されました)。

登録内容は下記の通りです。

Bits | Field | Value
-----|-------|------
[15] |       | 0
[14] |       | 0
[13] |       | 0
[12] | HYS   | 1

[11] | PUS1  | 1
[10] | PUS0  | 1
[9]  | PUE   | 1
[8]  | PKE   | 1

[7]  | ODE   | 0
[6]  | DSE3  | 1
[5]  | DSE2  | 1
[4]  | DSE1  | 1

[3]  | DSE0  | 1
[2]  | SPEED1| 1
[1]  | SPEED0| 1
[0]  | SRE   | 0

0001 1111 0111 1110

0x1F7E

初期化は、以下の通りです。

    IOMUXC_SetPinMux(IOMUXC_ECSPI2_MOSI_GPIO5_IO11, 0U);
    IOMUXC_SetPinConfig(IOMUXC_ECSPI2_MOSI_GPIO5_IO11, 0x1F7Eu);

 

@Chavira、添付の図に示されているように、11でGPIO5の拡張 IO信号を示すようにEXP_IO11ピン16を使用していない理由を説明できるでしょうか。私には理解できません。(付属のハードウェアユーザーガイドの13ページの表6にも示されています。

感謝


Re:imx8m mini evkのGPIOピン18(GPIO5_Io11)で出力を取得する感謝。はい、vscodeでもデバッグできますが、Ozoneはメモリの詳細を表示しますが、これはより良く見えます。GPIOが機能するための提案はありますか。Linuxを使用してGPIOが見つからないと表示されるため、確認することさえできません。デバイスツリーでは、gpiodetectは4つのチップを示しています。

何か提案はありますか?

ご心配をおかけしていただきありがとうございます
Re:imx8m mini evkのGPIOピン18(GPIO5_Io11)で出力を取得する

返信とテストをしてくださった@Chaviraに感謝します。


私はvscodeとvscodeのmcuxpresso拡張子を使用してプログラムをコンパイルしています(MCUXpresso IDEではimx8m mini evkをサポートしていないため)、Ozone(JTAG)を使用してelfファイルを実行しています。


電圧計で18ピンと19ピンの両方を確認しましたが、そこには電圧が表示されません。


imx8mm-evk-rpmsg.dtbデバイスツリーファイルとLF_v6.6.36-2.1.0_images_IMX8MMEVKを使用していますA53 側の Linux イメージ。何が間違っているのか、デフォルトのデバイスツリーであるimx8mm-evk.dtbで確認したかどうかはわかりませんが、運が良かったわけではありません。

cortex M4のデバッグメッセージは、デバッグコンソールでも確認できます

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 03:04 PM
Updated by: