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

了解更多常见问题解答教程

8个帖子/ 0新
最后一篇
Jun-ichi Tobe
离线
最后一次露面:3个月3周前
加入:2016-04-01 10:39
使用外部中断输入异步从Exted睡眠中唤醒

你好支持,

我正在考虑使用DA 14585的外部中断输入来异步返回(从Exted睡眠)使用外部MPU。
我指的是文档(training_04_sleep模式配置和电源测量_0.pdf)。(第9页)

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

我有两个问题。

Q1。在exteded睡觉期间
Keil-UVISION调试操作和实际操作之间的行为不同。
当DA 14585未通信时,首先我设置为“Exted Sleep”,并使用端口中断将动作从休眠状态从恢复DA 14585设置。

返回后,我想立即与SPI进行沟通。那
在UVISION和J-LINK调试环境中,它没有问题。
接下来,如果我将此程序写入外部SPI Flash并让它运行独立,它将停止工作。(它不会返回。)
查看当前值,看起来DA14585已恢复。但是,与外部微电脑的SPI通信似乎不得进行。
调试环境(KEIL - UVISION和J - LINK)和真实环境(使用FLASH)之间的操作是否存在差异?
(例如,在调试环境中,RAM的电源实际上并未关闭。)

(2)正在进行的蓝牙通信
如果我在蓝牙通信期间以相同的方式使用端口中断进行返回操作,
调用函数lld_sleep_compensate_func(在rwble.c中),
然后它在最后一行上停止使用Assert_warning(0)。
这种现象发生在调试环境(UVISION和J-LINK)和真实环境(使用FLASH)中。
这是睡眠时期太短了吗?或者你有什么可以想到的吗?
你能告诉我解决方法吗?

除上述信息外,如果需要,请向我们申请。

问候,

Jun-Ichi.

设备:
PM_DIALOG.
在线的
最后一次露面:1分50秒前
职员
加入:2018-02-08 11:03
嗨jun-ichi tobe,

嗨jun-ichi tobe,

如果我能够了解您想要在项目中完成的内容是要使用外部MPU中断唤醒DA14585?你能澄清你想要的东西吗?此外,您可以明确您在第一个问题中提到的“返回”的意思是什么意思?你的意思是唤醒设备吗?我明白了吗?你的问题是你无法唤醒DA14585?如果您遵循Development_debug定义,您将能够看到他调试环境(Keil - Uvision和J - Link)之间没有任何差异,并且RAM关闭电源。关于您的第二个问题,请注意,如果此断言命中,则LP ISR持续时间长于通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留的时间。如果您对Periph_init()函数有任何交易,请您告诉我吗?

谢谢,PM_DIALOG.

Jun-ichi Tobe
离线
最后一次露面:3个月3周前
加入:2016-04-01 10:39
感谢您的评论。

感谢您的评论。

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

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

(a)和(b)之间的操作有什么差异?
如何在环境中正确地工作(B)?
或者,如何在环境(a)和(b)中验证RAM是否打开或关闭?

问候,

Jun-Ichi.

mt_dialog.
离线
最后一次露面:6天4小时前
职员
加入:2015-06-08 11:34
嗨Jun-Ichi,

嗨Jun-Ichi,

嗯,如果585能够从闪光灯正确启动,那么它不应在从闪存中运行代码之间的任何区别,或者在关于唤醒过程的调试时之间的任何区别。如果设备在从闪存启动时醒来可能会检查设备是否实际启动(您是否宣传设备启动时?您有吗?
设备启动的任何指示?)。我也想你也在使用睡眠,所以你正在使用什么样的睡眠?你试图从闪光灯引导,没有睡觉吗?是吗
那样运作?此外,当从Flash启动(睡眠时),您应该能够在设备上附加,以检查设备是否卡在断言或硬盘上。

您也可以尝试的是刻录闪存中的BLE_APP_SLEEPMODE(它有类似的功能,我认为自己的函数,它会睡觉并从外部中断唤醒)。所以尝试唤醒SDK的示例,同时在闪光灯中燃烧并检查它是否在您身边。

谢谢mt_dialog.

Jun-ichi Tobe
离线
最后一次露面:3个月3周前
加入:2016-04-01 10:39
你好!

你好!

>>我也想你正在使用睡眠,所以你正在使用什么样的睡眠?
- >我已经使用了“延长睡眠”模式。

如果使用延长睡眠,则根据调试环境是否存在RAM状态差异?

问候,

Jun-Ichi.

Jun-ichi Tobe
离线
最后一次露面:3个月3周前
加入:2016-04-01 10:39
你好!

你好!
关于问题2:
在从睡眠中醒来的过程中,包括SPI通信
当你指出时,我发现花了太久了!

通过校正相应的部分来解决。

谢谢!

Jun-Ichi.

Jun-ichi Tobe
离线
最后一次露面:3个月3周前
加入:2016-04-01 10:39
你好 !

你好 !

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

基础示例项目:BLE_APP_PERITITALAL
SPI处理:在“SPI_HCL.C”中实施

我会描述这个程序。
[主机MPU(SPI Master)→DA 14585(奴隶)]
1)使用端口中断唤醒DA 14585。
2)调用函数ARCH_SET_SLEEP_MODE(ARCH_SLEEP_OFF)唤醒。
3)DA 14585通信后,设置端口中断并调用函数ARCH_SET_SLEEP_MODE(ARCH_EXT_SLEEP_OTP_COPY_ON)
并将其设置为延长睡眠。

[从DA14585(从机)的SPI传输到主机MPU(SPI Master)]
当DA14585执行蓝牙通信时,它会输出变量信号并执行SPI通信。
此时,DA14585不会更改睡眠环境。

结果(电流测量)
[将项目写入SPI闪存并执行时]
调用ARCH_SET_SLEEP_MODE(ARCH_SLEEP_OFF)时;在端口中断,
几秒钟内,电流消耗从大约400 UA到600 UA增加,DA 14585将不接受来自主机MPU的SPI通信。
在消耗电流的同时发送广告启动命令时,已启动广告。
如果我在调用Arch_sleep_off后调用wdg_freeze(),似乎当前的时刻不会增加。
因为它在几秒钟内变得异常,所以我认为看门狗定时器正在工作。
我认为,WDG_FREEZE函数似乎有效。

只有当我将FW写入SPI闪光时,这只是才会。

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

根据执行环境的差异在哪里?内存设置?构建设置?

问候,

Jun-Ichi.

PM_DIALOG.
在线的
最后一次露面:1分50秒前
职员
加入:2018-02-08 11:03
嗨jun-ichi tobe,

嗨jun-ichi tobe,

您能否尝试更清楚地描述你想要完成的事情,这是你的问题吗?对不起,但我无法理解哪个是你的问题。关于Q1,正如您之前在上一篇文章中提到的那样,您将查明您的问题。那是对的吗?现在你想要做什么?您从SPI Flash启动,您正在使用外部MCU才能将命令发送到DA14585中?关于当前的消耗,问题是从SPI闪光嘘?我明白了吗?

谢谢,PM_DIALOG.