你好,
我正在使用DA14580 BLE和基本套件,并连接了GPIO上的一个按钮。
现在我想在DA14580 BLE上实现以下功能。
1.开机深度睡眠意味着它会永久休眠,只有外部GPIO才能唤醒它。(没有广告也)
2.深度睡眠后,在GPIO中断时将其唤醒。
3.在没有连接的情况下,再次对来自应用程序或定时器的请求设置深度睡眠,直到或除非GPIO中断不会到来。
我已经参考了Training_04_sleep_modes_current_measurement_v1.0.pdf,但是我不知道如何将DA14580置于永久深度睡眠(只有GPIO中断可以唤醒它),以及在唤醒后如何重新启动BLE profile。
如何使用GPIO中断实现以上深度睡眠和唤醒?
设备:
嗨JBaczuk,
你可以看看SDK的例子ble_app_sleepmode,它确实做了你正在请求的深度睡眠,广告几秒钟,然后进入永久睡眠,直到GPIO中断(按钮)触发它,然后开始再次广告。
由于MT_dialog
谢谢,
我已经检查SDK示例ble_app_sleepmode。
已将PORT2_2 GPIO连接到输入中断按钮,工作正常。
但是有一个查询,我已经参考了wkupct_enable_irq函数的定义。
"
/**
****************************************************************************************
* @brief启用唤醒IRQ。
* @param[in] sel_pins选择启用的输入(0-disabled, 1-enabled)
* - Bits 0-7 ->端口0(P00..P07)
* -位8-13 ->端口1(P10..P15)
* -比特14-15 ->端口2(P28,P29)
* -比特16-23 ->端口2(P00..P07)
* - Bits 24-31 ->端口3(P30..P37)
* @param[in] pol_pins输入的极性(0-高,1-低)
* - Bits 0-7 ->端口0(P00..P07)
* -位8-13 ->端口1(P10..P15)
* -比特14-15 ->端口2(P28,P29)
* -比特16-23 ->端口2(P00..P07 .
* - Bits 24-31 ->端口3(P30..P37)
* @param[in] events_num唤醒中断前的事件数。Max 255。
* @param[in] deb_time恢复时间。Max 0x3F (6msec)
* @return无效
****************************************************************************************
*/
Void wkupct_enable_irq(uint32_t sel_pins, uint32_t pol_pins, uint16_t events_num, uint16_t deb_time);
"
根据注释,我不能使用PORT2_2来启用唤醒IRQ,但现在它可以工作了。
是否推荐使用PORT2_2作为中断输入?
谢谢
嗨JBaczuk,
你可以使用端口/引脚2_2作为唤醒中断,使用它没有问题。
由于MT_dialog
嗨MT_dialog,
请问如何在BLE定时器唤醒(不是Port/Pin唤醒)的情况下使DA14580进入深度睡眠?
你能给我一个基于SDK 5.0.3的演示项目吗?
谢谢你!
嗨xuguizhong,
请查看你其他帖子的回复。
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。
由于MT_dialog
嗨,MT_dialog
Ble_app_sleepmode的工作方式正如你所描述的。但当我解开
#定义CFG_DEVELOPMENT_DEBUG
对于关闭SYSRAM,我看到设备定期重新启动——每隔几秒钟,我就会看到引导加载程序通过UART发送一些东西(像往常一样,当它启动时),我还观察到当前的消耗激增。设备没有广告,只是定期重启的迹象。所以,你能告诉我,如何关闭RAM并进入永久和完全的深度睡眠,所有外设,时钟和BLE都关闭电源,而不需要重新启动?
我正在使用TDK SESUSB-PAN-D14580 EVK USB dongle。
你好弗拉德,
你在OTP中应用了图片吗?如果你不燃烧的OTP ble_app_sleepmode弗兰克-威廉姆斯,你只是下载弗雷德里克基尔设备通过将保持清醒和广告2秒后,将去睡觉,醒来在接下来的广告间隔,所以它将尝试执行一个OTP为了继续复制广告,所以OTP中没有图像,设备将处于未定义状态,显然将重置并运行主引导加载程序。如果您已经在OTP中应用了该映像,显然您在OTP中下载的fw会重置设备(发生NMI或硬故障)。你是否尝试过ble_app_sleepmode,在OTP中燃烧它,并看到这种行为?因为我不能复制它(在一个对话开发工具包,因为我没有一个tdk usb dongle)。使用深度睡眠的过程包括:设置app_default_sleep_mode = ARCH_DEEP_SLEEP_ON;并配置#define CFG_MEM_MAP_DEEP_SLEEP,取消定义CFG_DEVELOPMENT_DEBUG并在OTP中烧制映像,这将设置设备为深度睡眠模式,并关闭所有外设,包括系统ram。
由于MT_dialog
感谢您的快速回复!不,我没有闪过OTP。代码从flash启动。这是否意味着我们不能使用DEEP SLEEP如果代码是从flash镜像的?
你好弗拉德,
是的,深度睡眠模式只能在fw烧录OTP时使用,当设备从flash启动时不能使用深度睡眠模式。
由于MT_dialog