工具/软件:
您好:
我按照 本教程 和 其他教程 尝试将 MCU_GPIO0_16 设置为电路板的唤醒源。
我已经按照第二个教程的建议修改了第 35 行的“k3-am62x-sk-lpm-wkup-sources.dtso"。“。 我注意到、还需要修改“wak_mcugpio1_pins_default",“,这、这是我在第 63 行做的。 请参阅此处的文件:
// SPDX-License-Identifier: GPL-2.0 /** * AM62 family of devices can wakeup from Low Power Modes via * multiple wakeup sources. This overlay enables MAIN GPIO, MCU GPIO, * and MCU MCAN pins. * * Copyright (C) 2023 Texas Instruments Incorporated - http://www.ti.com/ */ /dts-v1/; /plugin/; #include <dt-bindings/input/input.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include "k3-pinctrl.h" &{/} { gpio_key { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&main_gpio1_pins_default>; switch { label = "WKGPIO"; linux,code = <KEY_WAKEUP>; interrupts-extended = <&main_gpio1 10 IRQ_TYPE_EDGE_RISING>, <&main_pmx0 0x1a0>; interrupt-names = "irq", "wakeup"; }; }; mcu_gpio_key { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&wake_mcugpio1_pins_default>; interrupt-parent = <&mcu_gpio0>; interrupts = <16 IRQ_TYPE_EDGE_RISING>; switch { label = "MCUGPIO"; linux,code = <143>; gpios = <&mcu_gpio0 16 GPIO_ACTIVE_LOW>; wakeup-source; }; }; }; &main_pmx0 { main_gpio1_pins_default: main-gpio1-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x1a0, PIN_INPUT_PULLUP, 7) /* (E18) MCASP0_AXR0.EHRPWM1_B */ >; }; }; &mcu_pmx0 { wake_mcugpio1_pins_default: wake-mcugpio1-pins-default { pinctrl-single,pins = < /* AM62X_MCU_IOPAD(0x0010, PIN_INPUT, 7) (D8) MCU_SPI0_D1.MCU_GPIO0_4 */ AM62AX_MCU_IOPAD(0x0040, PIN_INPUT, 7) /* (B9) MCU_GPIO0_16 */ >; }; mcu_mcan0_tx_pins_default: mcu-mcan0-tx-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */ >; }; mcu_mcan0_rx_pins_default: mcu-mcan0-rx-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */ >; }; mcu_mcan0_rx_pins_wakeup: mcu-mcan0-rx-pins-wakeup { pinctrl-single,pins = < AM62X_IOPAD(0x038, PIN_INPUT | WKUP_EN, 0) /* (B3) MCU_MCAN0_RX */ >; }; mcu_mcan1_tx_pins_default: mcu-mcan1-tx-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */ >; }; mcu_mcan1_rx_pins_default: mcu-mcan1-rx-pins-default { pinctrl-single,pins = < AM62X_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */ >; }; mcu_mcan1_rx_pins_wakeup: mcu-mcan1-rx-pins-wakeup { pinctrl-single,pins = < AM62X_IOPAD(0x040, PIN_INPUT | WKUP_EN, 0) /* (D4) MCU_MCAN1_RX */ >; }; mcu_uart0_pins_default: mcu-uart0-pins-default { pinctrl-single,pins = < AM62X_MCU_IOPAD(0x001c, PIN_INPUT, 0) /* MCU_UART0_CTSn */ AM62X_MCU_IOPAD(0x0020, PIN_OUTPUT, 0) /* MCU_UART0_RTSn */ AM62X_MCU_IOPAD(0x0018, PIN_OUTPUT, 0) /* MCU_UART0_TXD */ >; }; mcu_uart0_rxd_pins_default: mcu-uart0-rxd-pins-default { pinctrl-single,pins = < AM62X_MCU_IOPAD(0x0014, PIN_INPUT, 0) /* MCU_UART0_RXD */ >; }; mcu_uart0_rxd_pins_wakeup: mcu-uart0-rxd-pins-wakeup { pinctrl-single,pins = < AM62X_MCU_IOPAD(0x0014, PIN_INPUT | WKUP_EN, 0) /* MCU_UART0_RXD */ >; }; }; &mcu_gpio0 { status = "okay"; }; &mcu_gpio_intr { status = "okay"; }; &mcu_mcan0 { pinctrl-names = "default", "wakeup"; pinctrl-0 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_default>; pinctrl-1 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_wakeup>; status = "okay"; }; &mcu_mcan1 { pinctrl-names = "default", "wakeup"; pinctrl-0 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_default>; pinctrl-1 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_wakeup>; status = "okay"; }; &mcu_uart0 { pinctrl-names = "default", "wakeup"; pinctrl-0 = <&mcu_uart0_pins_default>, <&mcu_uart0_rxd_pins_default>; pinctrl-1 = <&mcu_uart0_pins_default>, <&mcu_uart0_rxd_pins_wakeup>; status = "ok"; };
我完全按照说明将此文件编译到.dtbo、并将其包含在设备树中、还按照规定修改了 uEnv.txt。
当我进入深度睡眠或仅 MCU 模式时、将引脚 (J8 MCU 接头上的引脚 11) 接地并不能唤醒器件(根据教程的建议)。 将引脚连接到 3.3V 也无法唤醒器件。
我知道、RTC 以及 WKUP_UART 都能够从深度睡眠中唤醒器件。
我还应该怎么做才能使用可在 J8 MCU 接头上访问的 MCU GPIO 唤醒器件?

