⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//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。由于某些原因,醒来后的人的功能似乎不太一样。当设置唤醒引脚激活时,我没有得到唤醒。我尝试遵循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设置。

在我正在做的广告完整例程中调用sleep:

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), // select DIALOG_WAKEUP pin P0_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模式是自动发生的吗?不需要配置设置?

我提到的“Extra low frequency”在数据表中的寄存器CLK_RCX20K_REG中有一点。我查看了该寄存器,以验证RCX20是否已启用。如果你说RCX20由LP_CLK_RCX20正确配置,我不会担心它。

所以…谢谢你提供的额外信息。我又开始尝试确定是否唤醒中断被触发了。

问候,马克斯

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

嗨Max44,

是的,设备将自动检测应用程序的操作模式,这取决于使用硬连接状态机所建立的外部连接,该状态机在每次系统上电时都被激活,SDK中不需要做任何额外的配置。相同的立场从RCX和XTAL32改变LP时钟通过#定义设备将自动配置和启用适当的振荡器通过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问好