DA14580准备在唤醒后接收UART

⚠️
你好。。谢谢你来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有帖子和账号都已迁移。我们现在只接受新论坛的流量-请在//www.wsdof.com/support.我们将在未来几天内修复漏洞/优化搜索和标记。
8个职位/0个新职位
最后一篇帖子
避免
离线
最后一次见到:4年5个月前
加入:2016-09-19 15:21
DA14580准备在唤醒后接收UART

你好

我触发一个中断来唤醒DA14580。
我想知道的是什么时候可以接收UART信息并发送它们。它是在回调函数的末尾还是在代码的后面?
提前谢谢。

设备:
MT_对话
离线
最后一次见到:1年1周前
工作人员
加入:2015-06-08 11:34
你好,阿沃艾,

你好,阿沃艾,

在睡眠模式下,设备会关闭XTAL16,这对UART的时钟生成至关重要,因此醒来后,您必须等待XTAL16稳定下来。确保XTAL16已安装的最安全的地方是在app_on_ble_支持的回调中(因为内核也需要XTAL16才能运行),在完成该功能后,只要您不睡觉,设备将安装XTAL16并准备就绪,您将能够通过UART接收数据。

谢谢你的对话

避免
离线
最后一次见到:4年5个月前
加入:2016-09-19 15:21
你好

你好

谢谢你的回答。
我实际上使用的是V.150.2版,我找不到任何应用程序支持的功能。你知道我使用的版本中是否有类似的版本吗。

提前谢谢

当做

MT_对话
离线
最后一次见到:1年1周前
工作人员
加入:2015-06-08 11:34
你好,阿沃艾,

你好,阿沃艾,

在所有SDK5版本中,即使在SDK5中,回调也被命名为app_on_ble_powered。0.2.1这是第一个SDK 5版本,我想您使用的是SDK3。在这种情况下,没有可以附加源代码的回调,可以放置代码的相关挂钩是app_asynch_trm()函数。但我强烈建议转到SDK 5。

谢谢你的对话

避免
离线
最后一次见到:4年5个月前
加入:2016-09-19 15:21
你好

你好

好的,我明白了。
我试图做的是将BLE模块从延长睡眠模式唤醒,并向uC发送中断,以在UART就绪时发出警告。
有没有可能为我提供一个回调函数,可以正确唤醒BLE模块所有必要的函数?之后我会添加中断以符合我的要求。

当做

避免
离线
最后一次见到:4年5个月前
加入:2016-09-19 15:21
你好

你好

差不多完成了,callbcack函数被正确调用,我在内部切换BLE_int以在uC上生成中断。
问题是,在整整3次醒来后,它毫无理由地不再切换BLE_int。
下面是我的回调函数的代码:

void ext_wakeup_cb(void)
{
如果(fsleep==ARCH_EXT_SLEEP_ON)
{
if(GetBits16(系统统计,PER下降))
{

if(开发调试){
GPIO_预订部();
}
}

设置32(GP_CONTROL_REG,BLE_WAKEUP_REQ,1);
fsleep=ARCH_SLEEP_OFF;
}
其他的
fsleep=ARCH_EXT_SLEEP_ON;

GPIO_设置激活(GPIO_端口0、GPIO_引脚7)//向uC发出警告UART的信号已准备就绪
wkupct_enable_irq(0x40,0x00,1,0);
wkupct_寄存器_回调(ext_wakeup_cb);
GPIO_设置不活动(GPIO_端口_0,GPIO_引脚_7)//向uC发出警告UART的信号已准备就绪
}

我的函数中一定有我看不到的错误。

提前谢谢

MT_对话
离线
最后一次见到:1年1周前
工作人员
加入:2015-06-08 11:34
你好,阿沃艾,

你好,阿沃艾,

我不确定这是否是您想要的,但为了强制唤醒BLE(没有计划挂起的事件,因此应用程序必须强制唤醒BLE),您必须调用arch_BLE_force_wakeup();完成此操作后,设备应启动Core的唤醒过程,一旦Core唤醒,app_asynch_trm()将被执行。

关于你在后面的帖子中提到的问题,我想你没有看到GPIO像你预期的那样切换,我没有看到回调函数中的任何地方调用periph_init()函数来初始化你的管脚,因此,当设备切换pin时,设备和外围设备可能处于唤醒状态。还有一些注释,没有必要调用GPIO_reservations(),该函数在系统初始化期间只调用一次,没有必要再次调用它。如果我没记错的话,你可以使用arch_ble_force_wakeup()函数,而不是通过直接在寄存器上写来启用ble内核。SDK 3上的app_ble_force_wakeup()也有同样的功能。请允许我再次指出,您请求唤醒BLE core并不意味着core会立即唤醒,正如我之前提到的,只要设备进入app_asynch_trm(),core就会立即唤醒。请查看SDK5中的ble_app_sleepmode示例。它可能与SDK稍有不同,但唤醒顺序在SDK之间非常相似。我坚持使用最新的SDK。

谢谢你的对话

避免
离线
最后一次见到:4年5个月前
加入:2016-09-19 15:21
你好

你好

非常感谢你的帮助。
我将转到最新的SDK,并设法使一切工作与您的提示。
主题可以关闭。

当做

奥雷利昂