【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


leslieli
Posts: 87

tlsr8258 tuyaos的sdk3.9.0 蓝牙单点 如何在休眠的情况下检测高频的脉冲输入 同样的芯片平台zigbee的ztu可以有高速脉冲但是z蓝牙的好像不行

jinyuan
Posts: 56

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

将对应的GPIO配置成唤醒口就可以在休眠的时候对脉冲进行响应:

Code: Select all

TUYA_WAKEUP_SOURCE_BASE_CFG_T wakeup_cfg = {
    .source = TUYA_WAKEUP_SOURCE_GPIO,
    .wakeup_para.gpio_param.gpio_num = BOARD_KEY_PIN,
    .wakeup_para.gpio_param.level = TUYA_GPIO_LEVEL_LOW,
};
tkl_wakeup_source_set(&wakeup_cfg);
leslieli
Posts: 87

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

jinyuan 2024年 Jan 9日 14:01

将对应的GPIO配置成唤醒口就可以在休眠的时候对脉冲进行响应:

Code: Select all

TUYA_WAKEUP_SOURCE_BASE_CFG_T wakeup_cfg = {
    .source = TUYA_WAKEUP_SOURCE_GPIO,
    .wakeup_para.gpio_param.gpio_num = BOARD_KEY_PIN,
    .wakeup_para.gpio_param.level = TUYA_GPIO_LEVEL_LOW,
};
tkl_wakeup_source_set(&wakeup_cfg);

可以设置多个唤醒io口么

jinyuan
Posts: 56

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

可以的, 将 wakeup_para.gpio_param.gpio_num 字段赋予想要唤醒的IO 编号就可以了

leslieli
Posts: 87

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

jinyuan 2024年 Jan 9日 14:09

可以的, 将 wakeup_para.gpio_param.gpio_num 字段赋予想要唤醒的IO 编号就可以了

你好我试了 可以快速唤醒但是无法进入中断怎么回事

jinyuan
Posts: 56

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

泰凌微的芯片在休眠后GPIO的中断会失能,需要重新初始化。
芯片唤醒后会再执行一次 tuya_init_third 这个函数,所以可以在 这里执行芯片外设相关的初始化,包括中断

leslieli
Posts: 87

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

jinyuan 2024年 Jan 9日 16:19

泰凌微的芯片在休眠后GPIO的中断会失能,需要重新初始化。
芯片唤醒后会再执行一次 tuya_init_third 这个函数,所以可以在 这里执行芯片外设相关的初始化,包括中断

我初始化过了 没有用

leslieli
Posts: 87

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

leslieli 2024年 Jan 9日 16:21
jinyuan 2024年 Jan 9日 16:19

泰凌微的芯片在休眠后GPIO的中断会失能,需要重新初始化。
芯片唤醒后会再执行一次 tuya_init_third 这个函数,所以可以在 这里执行芯片外设相关的初始化,包括中断

我初始化过了 没有用

但是我zigbee的可以通过引脚唤醒并且计数的

jinyuan
Posts: 56

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

首先 检查一下初始化的流程有没有问题,可以参考 app_key.c中的app_key_init函数。
其次 目前只支持2路的中断处理, 是否是因为初始化了多个中断导致后面的初始化失败?
如果要增加支持中断的数量可以修改宏 BOARD_GPIO_IRQ_NUM(留意内存空间的使用)

leslieli
Posts: 87

Re: 【求助】泰凌微tuyaosask 休眠如何快速唤醒中断

jinyuan 2024年 Jan 9日 16:43

首先 检查一下初始化的流程有没有问题,可以参考 app_key.c中的app_key_init函数。
其次 目前只支持2路的中断处理, 是否是因为初始化了多个中断导致后面的初始化失败?
如果要增加支持中断的数量可以修改宏 BOARD_GPIO_IRQ_NUM(留意内存空间的使用)

修改了的 改成了3个 可以唤醒但是无法进中断

Post Reply