BK3633QN48_M_TuyaOS-3.11.0 使用 tuyaos_demo_ble_peripheral 范例,我先设置 GPIO32中断和1个10秒为周期的持续的tal_sw_timer(每10秒亮灭led一次),都能正常工作。
但若调用tal_cpu_allow_sleep()进入睡眠后,无论是GPIO的中断还是timer都不会再触发,所以也无法执行唤醒。这在FR8018的tuyaos中就不会,睡眠后gpio还是timer都能正常中断。
请问如何解决?
BK3633QN48_M_TuyaOS-3.11.0 使用 tuyaos_demo_ble_peripheral 范例,我先设置 GPIO32中断和1个10秒为周期的持续的tal_sw_timer(每10秒亮灭led一次),都能正常工作。
但若调用tal_cpu_allow_sleep()进入睡眠后,无论是GPIO的中断还是timer都不会再触发,所以也无法执行唤醒。这在FR8018的tuyaos中就不会,睡眠后gpio还是timer都能正常中断。
请问如何解决?
你好,我们测试了一下,bk3633进入休眠后gpio中断和timer中断能正常触发。
可以参考该链接下载tuya logic上位机https://developer.tuya.com/cn/docs/iot- ... 1%E6%89%8B,进行测试。
SDK里默认GPIO32是唤醒脚,不需要调整。
tuya_init_last函数中添加指示灯周期性闪烁
TUYA_GPIO_BASE_CFG_T gpio_cfg = {
.mode = TUYA_GPIO_PUSH_PULL,
.direct = TUYA_GPIO_OUTPUT,
.level = TUYA_GPIO_LEVEL_LOW,
};
tal_gpio_init(TUYA_GPIO_NUM_20, &gpio_cfg);
tal_gpio_write(TUYA_GPIO_NUM_20, TUYA_GPIO_LEVEL_HIGH);
Code: Select all
app_led_timer_init();
app_led_timer_start();
BK3633串口1 波特率9600连接logic上位机发送[功耗管理->进入低功耗->模式0(最低功耗)/模式1(保持广播)]指令
串口2 波特率 115200 查看log
上位机发送低功耗指令后,设备进入休眠,此时指示灯(P20)保持闪烁,P30接按键 短按按键唤醒,此时可以继续响应logic上位机发送的其他指令。
你好,我不知道你们测试的是否是 BK3633QN48_M_TuyaOS-3.11.0
我重新使用干净的 BK3633QN48_M_TuyaOS-3.11.0 tuyaos_demo_ble_peripheral 范例,不做其他更改,按照你们的说明只在tuya_sdk_callback的tuya_init_last最后增加
TUYA_GPIO_BASE_CFG_T gpio_cfg = {
.mode = TUYA_GPIO_PUSH_PULL,
.direct = TUYA_GPIO_OUTPUT,
.level = TUYA_GPIO_LEVEL_LOW,
};
tal_gpio_init(TUYA_GPIO_NUM_20, &gpio_cfg);
tal_gpio_write(TUYA_GPIO_NUM_20, TUYA_GPIO_LEVEL_HIGH);
Code: Select all
app_led_timer_init();
app_led_timer_start();
编译下载运行后led灯闪烁,正确。
但当我使用Logic发送进入低功耗(模式0)后,灯就灭了,不闪了。
(使用的开发板是原厂 BK3633_EVB_V3 QFN48_6x6)
我们测试代码应该是完全相同的,排查一下硬件差异,推测可能是以下原因:
顺便一提:
谢谢你们的耐心解答,问题已解决。
本项目确实需要用到主从双角色,但tuya商城没有相应的开发板,跟厂商(的代理商,联系原厂都被转介到代理商)问询开发板,他们说只有BK3633的,所以暂时先用BK3633的测试基本框架。