⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
11个员额/ 0个新员额
最后发表
Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
唤醒斗争

用于开发的基本设计工具包
DA14580(定制板上的Murata模块)
SDK 5.0.4

你好,对话框,
我以前使用过SDK 5.0.3,调用扩展的睡眠和唤醒函数没有问题。现在我有一个新的设计,我使用SDK 5.0.4。出于某种原因,唤醒的功能似乎不太一样。当设置唤醒pin激活时,我不会得到唤醒。我尝试遵循ble_app_sleepmode示例,这似乎与我之前在SDK 5.0.3中所做的几乎相同。他们添加了app_easy_wakeup_set(app_wakeup_cb);这句话我以前没用过。我包括了这个和回叫,看起来像是重新开始广告。我在想如果我应该只有一个回叫和重新开始广告那里,但我尝试了,它没有工作。

是否有需要检查的配置参数?在此之前,我必须使用#define WKUP_ENABLE,但这个示例似乎不需要这样做。

我有app_default_sleep_mode = ARCH_EXT_SLEEP_ON和#define CFG_MEM_MAP_EXT_SLEEP set。

为了在我做的广告中唤起睡眠:

app_easy_wakeup_set (app_L0_wakeup_cb);
wkupct_register_callback (app_L0_wakeup_cb);
wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_PORT_0, GPIO_PIN_7), //选择DIALOG_WAKEUP引脚P0_7 . WKUPCT_PIN_SELECT(GPIO_PORT_0, GPIO_PIN_7
wkupct_pin_极性(GPIO_PORT_0, GPIO_PIN_7, WKUPCT_PIN_POLARITY_HIGH), //极性高
1, // 1事件
0);//恢复时间= 0

arch_ble_ext_wakeup_on ();//进入休眠等待唤醒引脚输入
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

当我切换P0_7引脚时,我没有看到广告重启,所以我不确定我是否曾经到达wakeup_register_callback,但我有:

静态孔隙app_L0_wakeup_cb(空白)

如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))

periph_init ();

如果(arch_ble_ext_wakeup_get ())

arch_set_sleep_mode (app_default_sleep_mode);
arch_ble_force_wakeup ();
arch_ble_ext_wakeup_off ();
app_easy_wakeup ();

//开始30秒的计时
//如果在30秒内没有连接,将返回睡眠
Sleep_timer = app_easy_timer(3000, sleep_timer_cb_handler);//设置为30秒
/ /重新启动广告
user_app_adv_start ();


--------------------------------------------------------------------------------------------------------------------------------------------------------

如果你发现有什么明显的问题,请告诉我。

谢谢你,马克斯

设备:
MT_dialog
离线
最后看到:4个月2个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

我不该看到的东西是错误的,您已经实现的代码,代码看起来与ble_app_sleepmode相同,因此它应该工作,我可以看到,大多数可能出错的条件与arch_ble_ext_wakeup_get检查(),如果函数返回0然后将执行在这个条件,因此,检查中断是否被触发,并执行app_L0_wakeup_cb()函数。除此之外,您还应该检查P07上连接的线实际上是由P07引脚上连接的外部设备或传感器或任何东西切换的。

由于MT_dialog

Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
太,

太,
谢谢。的输入。
今天早上我确实验证了P0_7引脚正在被设置。它由一个外部MCU驱动,我设置了一个测试开关。我可以从DA14580代码中读取状态,因此连接看起来很好。
我还查看了DA寄存器,我看到P0_7被选中,并在WKUP_SELECT_P0_REG和WKUP_POL_P0_REG中设置高极性。我还看到在WKUP_CTRL_REG中启用了唤醒中断。
我之前尝试过消除arch_ble_ext_wakeup_get()条件,但我将再次访问它,看看是否能以某种方式验证中断正在被触发。我发现当睡眠模式被调用时很难调试。
问候,马克斯

Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
太,

太,
一些额外的信息。这个设计与我们以前的没有32KHz晶体连接。我假设我们可以使用内部低速振荡器,我将GFG_LP_CLK配置为LP_CLK_RCX20。看看这个设置这里有一个“超低频率”设置。我不太清楚这是什么意思。另外,我在另一篇关于使用RCX20的文章中读到一些PMU设置可能是必需的?我不知道该怎么做,也不知道这是否会影响唤醒中断。我们正在使用一对3.3V的AA电池进行测试,但最终会改用一个电压稍低的硬币电池。
谢谢你,马克斯

MT_dialog
离线
最后看到:4个月2个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

因为你是在巴克运营模式不需要使用一个外部XTAL32和您可以配置,通过定义LP_CLK_RCX20 CFG_LP_CLK使用,我不明白你的意思与“额外的低频率”,我上面提到的是你唯一应该做的为了配置操作与内部RCX振荡器,我认为这不会影响580的唤醒定时器模块。

由于MT_dialog

Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
太,

太,

buck模式是自动发生的吗?不需要配置设置?

我提到的“超低频率”是数据表中寄存器CLK_RCX20K_REG中的一个位。我查看了该寄存器以验证RCX20是否已启用。如果您说LP_CLK_RCX20正确配置了RCX20,我不会担心它。

所以…谢谢你的额外信息。我又要试着确定唤醒中断是否被触发了。

问候,马克斯

MT_dialog
离线
最后看到:4个月2个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

是的,设备将自动检测应用程序的操作模式,这取决于外部连接,使用硬件连接的状态机,每次系统启动时激活,没有额外的配置,应该在SDK中完成。同样代表改变LP时钟从RCX和XTAL32通过#define设备将自动配置,并通过SDK启用适当的振荡器。

由于MT_dialog

omesa
离线
最后看到:5个月2个星期前
加入:2014-12-07 17
你好,马克斯,

你好,马克斯,
我的开发的基本来源也是ble_app_sleepmode参考设计。
也许你也有同样的问题,我也有。
在函数void user_app_adv_start中,它被写入:arch_set_deep_sleep() !
如果你使用的是延长睡眠模式,这是错误的。
然后你必须修改arch_set_extended_sleep()
花费了我2天,因为在休眠模式下调试器的功能是有限的。
祝你过得愉快
欢呼声Siegmar

Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
谢谢Siegmar。我将待

谢谢Siegmar。我会远离深度睡眠模式。
马克斯

Max44
离线
最后看到:11个月,2个星期前
加入:2016-02-08等等
太,

太,

我终于把这一切都搞定了。正如你说的,RCX20振荡器工作良好,我正在从P0_7被外部MCU切换中断和回调。我发现app_easy_wakeup_set的设置有一个错误。我从示例中复制了回调,但没有将它更改到我的例程中,这导致了故障。我在最初的帖子中更正了这一点,所以它不会被其他人当作一个坏的例子。

所以我们在这个问题上做得很好,你可以结束这个话题了。再次感谢您一贯的支持。

马克斯

MT_dialog
离线
最后看到:4个月2个星期前
工作人员
加入:2015-06-08 34
嗨Max44,

嗨Max44,

谢谢你告诉我们,我很乐意。

MT_dialog问好