使用外部中断输入从外部睡眠异步唤醒

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
8个职位/0个新职位
最后一篇文章
Tobe君一
离线
最后一次见到:6个月1周前
已加入:2016-04-01 10:39
使用外部中断输入从外部睡眠异步唤醒

您好,支持人员,

我正在考虑使用外部中断输入的da14585异步返回(从扩展睡眠)使用外部MPU。
我指的是文档(Training\u 04\u Sleep mode configurations and power measurement\u 0.pdf)(第9页)

SDK:6.0.8.509。
外部MPU和DA 14585使用SPI I/F连接。

我有两个问题。

问题1。在睡眠中
Keil uVision调试操作和实际操作的行为是不同的。
首先,当da14585不通信时,我设置为“exteded sleep”,并使用端口中断从睡眠状态恢复da14585。

我想在回来后马上和SPI联系,
在uVision和J-LINK调试环境中,它可以正常工作。
接下来,如果我将这个程序写入外部SPI flash并让它独立运行,它将停止工作(它不会回来。)
从当前值来看,DA14585似乎已经恢复。然而,SPI与外部微机的通信似乎没有完成。
调试环境(Keil-uVision和J-LINK)和真实环境(使用flash)之间的操作有什么不同吗?
(例如,在调试环境中,RAM的电源实际上没有关闭。)

(2) 正在进行蓝牙通信
如果我在蓝牙通信中以同样的方式使用端口中断执行返回操作,
调用函数lld\u sleep\u compensate\u func(在rwble.c中),
然后它在最后一行以ASSERT\u警告(0)停止。
这种现象发生在调试环境(uVision和J-LINK)和真实环境(使用flash)中。
是不是睡眠时间太短了?或者你有什么要考虑的?
你能告诉我解决办法吗。

除上述资料外,如有需要,请向我们索取。

当做,

君一

设备:
PM\U对话框
离线
最后一次见到:3天51分钟前
工作人员
已加入:2018-02-08 11:03
嗨,Tobe君一,

嗨,Tobe君一,

如果我能理解你想在你的项目中完成什么是唤醒DA14585使用外部微处理器中断?你能澄清一下你想说什么吗?另外,请您说明一下您在第一个问题中提到的“退货”是什么意思?你的意思是唤醒设备?我理解对了吗?你的问题是你不能唤醒DA14585?如果您遵循DEVELOPMENT\u DEBUG定义,您将能够看到调试环境(Keil-uVision和J-LINK)与实际环境之间没有任何区别,并且RAM已关闭。关于第二个问题,请注意,如果此断言命中,则LP ISR持续的时间将长于通过LP\u ISR\u time\u XTAL32\u CYCLES和LP\u ISR\u time\u USEC保留的时间。如果您有任何SPI事务进入periph\u init()函数并且它们花费的时间太长,请告诉我好吗?

谢谢,下午好

Tobe君一
离线
最后一次见到:6个月1周前
已加入:2016-04-01 10:39
谢谢你的评论。

谢谢你的评论。

关于Q1
我要完成的是使用外部MCU和外部中断异步唤醒休眠[扩展睡眠]DA14585。

(a) 在Keil的调试模式下,DA14585可以从睡眠中醒来。
(b) 另一方面,如果FW写入DA14585的外部SPI闪存,则无法将DA14585从睡眠状态唤醒。

(a)和(b)在操作上有什么区别?
如何使其在环境(b)中正常工作?
或者,如何在环境(a)和(b)中验证RAM是打开还是关闭的?

当做,

君一

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
嗨,一君,

嗨,一君,

好吧,如果585能够从flash正确引导,那么从flash运行代码和调试唤醒过程之间应该没有任何区别。如果设备在从flash启动时没有唤醒,那么您应该检查设备是否真的启动了(设备启动时您会做广告吗?你有
是否有设备已启动的迹象?)。我想你也在使用睡眠,那么你在使用什么样的睡眠呢?你试过在没有睡眠的情况下从flash启动吗?它是
那样运作?另外,当从flash启动时(睡眠时),您应该能够连接到设备上,以检查设备是否卡在断言或硬故障上。

你还可以尝试在flash中烧录ble\u app\u sleepmode(它的功能与我认为你所做的类似,它进入睡眠状态并从外部中断中醒来)。所以,试着在flash中烧录SDK的时候唤醒这个示例,并检查它是否在你这边工作。

谢谢你的对话

Tobe君一
离线
最后一次见到:6个月1周前
已加入:2016-04-01 10:39
你好!

你好!

>>我想你也在使用睡眠,那么你在使用什么样的睡眠呢?
-->我使用了“延长睡眠”模式。

如果使用延长睡眠,根据调试环境,RAM状态是否有任何差异?

当做,

君一

Tobe君一
离线
最后一次见到:6个月1周前
已加入:2016-04-01 10:39
你好!

你好!
关于问题2:
在从睡眠中醒来的过程中,包括SPI通信
正如你所说的,我发现时间太长了!

通过对相应部分的修正,解决了这一问题。

非常感谢。

君一

Tobe君一
离线
最后一次见到:6个月1周前
已加入:2016-04-01 10:39
你好!

你好!

我报告了关于Q1的测试环境(在延长睡眠期间)

基本示例项目:ble\u app\u peripheral
SPI处理:在“SPI\u hcl.c”中实现

我来描述一下程序。
[主机MPU(SPI主机)→ DA 14585(从属)]
1) 使用端口中断唤醒DA 14585。
2) 调用函数arch\u set\u sleep\u mode(arch\u sleep\u OFF)唤醒。
3) 在DA 14585通信后,设置端口中断并调用函数arch\u set\u sleep\u mode(arch\u EXT\u sleep\u OTP\u COPY\u ON)
把它设为长时间睡眠。

[从DA14585(从)到主机MPU(SPI主)的SPI传输]
当DA14585执行蓝牙通信时,它输出可怕的信号并执行SPI通信。
此时,DA14585不会更改睡眠设置。

结果(电流测量)
[当项目写入SPI flash并执行时]
调用arch\u set\u sleep\u mode(arch\u sleep\u OFF)时;在端口中断中,
电流消耗在几秒钟内从大约400 uA增加到600 uA,DA 14585将不接受来自主机MPU的SPI通信。
在消耗电流为400 uA时发送播发启动命令时,播发启动。
如果我在关闭ARCH\u SLEEP\u之后调用wdg\u freeze(),电流似乎暂时不会增加。
因为几秒钟后就不正常了,我以为看门狗定时器在工作。
我认为wdgèu冻结功能似乎很有效。

这只是当我写的FW到SPI闪存。

[使用Keil的调试器运行]
端口中断后,接受SPI命令。
之后,DA14585还可以执行蓝牙通信。

根据执行环境的不同,差异在哪里?内存设置?生成设置?

当做,

君一

PM\U对话框
离线
最后一次见到:3天51分钟前
工作人员
已加入:2018-02-08 11:03
嗨,Tobe君一,

嗨,Tobe君一,

你能不能试着更清楚地描述一下你想完成什么,你的问题是什么?对不起,我不明白哪一个是你的问题。关于Q1,正如你在上一篇文章中提到的,你已经解决了你的问题。对吗?现在你想做什么?从SPI闪存引导,使用外部MCU向DA14585发送命令?关于目前的消费,问题是当嘘声从SPI闪存?我理解对了吗?

谢谢,下午好