ST意法半导体
直播中

贾永世

8年用户 1901经验值
私信 关注
[问答]

我需要在RCC_MP_BOOTCR中设置MPU_BEN位吗?

大家好!
我已经使用唤醒引脚 PI11(和 PI8)测试了从待机模式唤醒。但这是行不通的
我已经删除了所有关于 dts 中唤醒引脚的定义,除了它在 STM32mp151.dtsi 中定义为唤醒引脚的地方
通过输入“echo mem > /sys/power/state”进入待机模式。之后 MPU 不会因我作用于引脚 PI11 或 PI8 而唤醒。
我在 /sys/kernel/debug/wakeup_sources 中没有看到任何 WAKE UP Pins,也许我需要在进入待机状态之前激活它?
在进入待机模式之前,我需要在 RCC_MP_BOOTCR 中设置 MPU_BEN 位吗?如果是——怎么样?
也许我的另一个误解?

回帖(1)

唐晓莉

2022-12-30 10:02:00
实际上 IRQ EXTI 从 55 到 60. 分别连接到 wkup 引脚 1 到 6。这些唤醒引脚是硬编码的。你可以参考他们分别的Datasheet
             唤醒-gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>,
                                      <&gpioa 2 GPIO_ACTIVE_HIGH>,
                                      <&gpioc 13 GPIO_ACTIVE_HIGH>,
                                      <&gpioi 8 GPIO_ACTIVE_HIGH>,
                                      <&gpioi 11 GPIO_ACTIVE_HIGH>,
                                      <&gpioc 1 GPIO_ACTIVE_HIGH>;
IRQ EXTI 55对应PA0,IRQ EXTI 56对应PA2等。
因此,要使用 PI8 和 PI11,您需要在 DT 中分别使用:
中断扩展 = <&exti_pwr 58 IRQ_TYPE_EDGE_FALLING>;  
中断扩展 = <&exti_pwr 59 IRQ_TYPE_EDGE_FALLING>;  
相应的驱动需要使用IRQ EXTI。作为示例驱动程序,您可以使用“gpio-keys”
/
...
test_wkup {
        兼容=“gpio键”;
        #address-cells = <1>;
        #size-cells = <0>;
        自动重复;
        状态=“好的”;
        按钮@4 {
              标签 = "WakeUp4";
              Linux,代码 =
              中断扩展 = <&exti_pwr 58 IRQ_TYPE_EDGE_FALLING>;
              状态=“好的”;
              唤醒源;
        };
};
root@stm32mp1:~# cat /sys/kernel/debug/wakeup_sources              
名称 active_count event_count wakeup_count expire_count e
test_wkup 5 5 0 0 0
10000000.m4 0 0 0 0 0
mmc1 0 0 0 0 0
mmc0 0 0 0 0 0
5c002000.i2c:stpmic@33:onkey 0 0 0 0
alarmtimer.0.auto 0 0 0 0 0
5c004000.rtc 0 0 0 0 0
删除 0 0 0
举报

更多回帖

发帖
×
20
完善资料,
赚取积分