睡眠模式配置

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
71个员额/ 0个新员额
最后发表
PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

>>我不理解为什么在睡眠模式下I2C数据不读取,即使按照你的建议初始化它

正如我已经提到的,在任何可用的睡眠模式下,都不可能使用任何外围块,包括I2C和SPI。这是设计好的!

该设备还可以在广告和连接间隔之间进入睡眠模式。

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

我的意思是,即使在重新初始化之后在醒来后,也无法读取数据。

另外,昨天我分享了一个观察,请检查相同的,并让我知道你的反馈。

感谢和问候

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

我这边有个最新消息,

我已经使用了外围计时器,并在睡眠模式下使用这个计时器配置的设备,即,10秒计时器设备是一个活动状态,在时间经过后进入延长睡眠,并使用app_easy_timer的5秒称为唤醒回叫。

有了这个配置,可以同时执行arch_extended_sleep()和periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER;检查使用支架。并且,能够读取I2C数据。

但唯一的是设备成功率的运行率下降,意味着超过了10个操作只有3个操作是成功,但休息7次操作越来越失败。

感谢和问候

罗希特R

Abahou.
离线
最后看到:1年2个月前
加入:2020-04-17 16:52
嗨,Rohit R

嗨,Rohit R

我正在设计与Azoteq IQS621相同配置的DA14583 Mcu

如果您是疑问,我们可以在这次项目上分享我们的经验感谢您联系我

致以最亲切的问候

Azdine Bahou.

azdinebahou@gmail.com

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨Azdine BAHOU,

嗨Azdine BAHOU,

很抱歉这么晚回复你,因为我在做其他的项目,所以没有查看你的信息。

是的,如果你能帮我解决这个问题就太好了。

你会在这里分享你的项目细节,还是我要单独邮寄给你?

感谢和问候

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

正如我以前解释的那样,使用外设定时器(定时器0)配置的睡眠模式。

脚步,

1)在user_config.h文件中,我已经启用了EXT_SLEEP_ON

2)使用外设计时器,10SEC名为ARCH_SET_EXTEDDE_SLEEP()函数并启动5SEC APP_EASY_TIMER()

3)在app_easy_timer回调函数中编写唤醒api如下:

静态孔隙app_wakeup_cb(空白)

periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER;
arch_disable_sleep ();
如果(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 ();

i2c_init ();/ /重新启动i2c

4)在user_peripher.c文件下面更改,

空白user_app_adv_undirect_complete (uint8_t状态)

//如果广告被取消,则更新广告数据并重新开始广告
if(status == gap_err_canceled)

ARCH_BLE_EXT_WAKEUP_ON();
user_app_adv_start ();

结果,

能够在外围定时器和app_easy_timer回调函数中保持BKT。

-能够发送我的数据包在广告。

-使用DMM测量我的定制板的电流消耗,它在1.012mA到791uA之间变化。

结论,

目前的消耗是远的,就像我之前告诉我的设备应该持续2年,但与此电流,我没有看到太多的区别,或者它不会进入睡眠。

我需要紧急帮助,我的团队给我压力,让我尽快解决这个问题。请查看这个反馈,并让我知道可以做些什么来增加设备寿命。

附件是代码链接-

https://drive.google.com/file/d/1s_0wgnqjhgmoy3aiod70uyj9datt_ygs/view?u ...

感谢和问候

罗希特R

PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

你提到过:

“使用DMM测量我的定制板的电流消耗,它在1.012mA到791uA之间变化。”

这是平均电流消耗,还是当设备处于延长睡眠模式时?您是仅测量DA14583的当前消耗,还是测量整个定制板的当前消耗?

我们强烈建议只测量DA14583的电流消耗-如果定制板有泄漏,消耗将会增加。

另外,由于它是DA14583,如果flash现在下电,那么消耗将再次增加。有一个函数用于将SPI置于关机模式- spi_flash_power_down() -在这种情况下,你将无法与flash交互,除非你指示SPI flash上电。在开始与flash交互之前,您应该调用spi_flash_release_from_power_down()。

一旦广告停止,设备进入睡眠模式,耗电量是多少?

请尝试运行SDK的ble_app_sleepmode(或prox_reporter)示例,让设备进入永久休眠模式,然后测量当前的消耗。

请检查附加的截图。突出显示部分中的消费量是多少?

//www.xmece.com/sites/default/files/training_04_sleep_mode_configurations.pdf

谢谢,PM_Dialog

附件:
Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

“这是当前的平均消耗,还是当设备处于长时间休眠模式时?”-我的设备会周期性地改变它的模式,即它在睡眠模式下保持5秒,然后在有源模式下保持10秒,根据我的观察,电流消耗大约是0.800mA(800uA)和1mA。参考这个,我得到平均电流大约900mA您是否只为DA14583或整个定制板测量目前的消耗?“ -我们测量了整个定制板的当前消耗量。

“另外,由于是DA14583,如果flash现在掉电,那么消耗会再次增加。有一个函数用于将SPI置于下电模式- spi_flash_power_down() -在这种情况下,您将无法与flash交互,除非您指示SPI flash上电。在开始与flash交互之前,您应该调用spi_flash_release_from_power_down()。-是否有任何示例解释使用SPI flash以降低功耗的步骤。意味着在包含这些“spi_flash_power_down()”和“spi_flash_release_from_power_down()”函数(如初始化或任何宏定义)之前必须注意的任何强制步骤。需要遵循这些步骤。

以及如何检查自定义板当前消费使用smarsnippet作为您共享的图像?我已经找过相关文件了,但没找到。请分享。

另外,请浏览我的代码,并让我知道你的反馈。有什么是我错过的,导致这个问题。

感谢和问候

罗希特R

PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

  1. 您提到1.012MA至791UA是整个板的平均电流消耗。这意味着您在何时处于主动和扩展睡眠模式时测量。我不知道设计的组件是什么,但建议将所有外围部件(例如,例子传感器)放入掉电模式。你现在正在衡量的是整个电流消耗,而不是DA14583!如果它可能会检查您的PCB是否有泄漏。

  1. 例如,如果您与一个I2C接口(在活动模式下)交互,那么预期平均消耗将增加,因为您正在测量整个电流:DA14583在活动模式和I2C接口以及其他组件和泄漏等。

  1. 在测量睡眠电流时,建议将FLASH设置为关机模式。您只需要在设备处于永久休眠模式时(当广告停止时)调用spi_flash_power_down()。这个功能会向FLASH发送适当的命令,然后将其置于低能量模式。在开始与flash交互之前,您应该调用spi_flash_release_from_power_down()。您只需要在应用程序文件中包含spi_flash.h头文件。

  1. 为了衡量DA14583消耗了多少,我建议您遵循建议的教程。让芯片进入永久休眠模式(广告停止),然后测量当前的消耗。目前延长睡眠模式的费用是多少?你能在你的设计中做一个快速测试吗?如果你能在Pro-DK中也这样做,以便比较数字,那就太棒了

  1. 系统也进入睡眠模式之间的间隔(广告或连接)-多少睡眠电流之间的广告间隔?因此,你可以理解,消费也密切依赖于间隔-如果间隔更大,那么系统将进入睡眠模式更多的时间,因此平均消费将更低。

  1. 你能在设备播放广告时和停止播放并进入睡眠模式时分享屏幕截图吗?正常情况下,是应该开始广告5秒,然后5秒延长睡眠。

  1. 我在你的代码中看到你在使用无定向可连接广告。您是否有兴趣使用与对等设备相连的DA14583 ?

  1. 另外,你提到:“我的设备会周期性地改变它的模式,即它保持在睡眠模式5秒,然后保持在活动模式10秒”——你的意思是当设备在发布时,在发布间隔之间的睡眠模式是active ?

  1. 一般来说,您可以从PRO主板J5引脚23供电您的定制板。这将允许您在SmartSnippets工具箱中使用PowerProfiler的所有功能。

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

感谢您的反馈,

我会按照你的建议测试所有的点。

关于点不。7-yes, I am connecting devices to mobile phones and assigning data through the app. And the same data I am storing into flash.

我没有按照你之前的建议在广告和连接间隔之间的睡眠时间配置设备。我使用定时器进入睡眠模式和唤醒使用app_easy定时器,你可以在我的代码中看到。

并且设备处于广告状态,我没有改变这一部分

空白user_app_adv_undirect_complete (uint8_t状态)

//如果广告被取消,则更新广告数据并重新开始广告
if(status == gap_err_canceled)

ARCH_BLE_EXT_WAKEUP_ON();
user_app_adv_start ();

请考虑以上几点,并让我知道你的看法。

同时,我会逐点测试,并让你知道我的结果。

感谢和问候

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

抱歉回复晚了,

我已经将对话开发工具包与我的I2C底座传感器连接起来。然后亮出我的固件,用一个智能代码片段试图计算功率配置。下面是附件的结果。

还有,我试图禁用flash,因为你的建议,但代码进入nmi_handder我没有得到为什么?我还包含了spi_flash.h文件。你能分享一下步骤吗?

在自定义板中,传感器在对话MCU的路径中直接使用3v3供电,所以我不能在自定义板中只测试对话部分。

但试图使用开发套件测试,在不连接传感器的情况下给我左右750mA。你能否建议任何改变。

此外,在智能代码段上进行功率配置计算的所有设置是什么?

谢谢提前

罗希特R

PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

在附加的屏幕截图中,您正在测试的示例是什么?睡眠模式下的当前消耗多少钱?你遵循教程吗?

在自定义板中,传感器在对话MCU的路径中直接使用3v3供电,所以我不能在自定义板中只测试对话部分。

这取决于你的设计——你正在测量整个定制板的当前消耗,

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

附件图片是自定义代码。

在此之前,正如教程文档中提到的,我在Development kit上尝试了prox_report示例,它显示了正确的阅读方法。

但我无法在定制板上测试相同的例子,因为传感器也在通电,由于电流很高。但对于我的自定义代码显示了更多的当前。你能帮我看看固件出了什么问题吗?

是的,我在测量整个定制板的当前消耗量。

谢谢提前

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

我这边有个最新消息,

在我的自定义代码中,我所做的是在广告期间配置睡眠模式,下面是代码片段,

1)在user_config.h文件中设置ext_sleep_on

2)在广告期间,在user_peripher.c文件中称为Arch_set_extended_sleep()

空白user_app_adv_start(空白)

//安排下一个广告数据更新
app_adv_data_update_timer_used = app_easy_timer(APP_ADV_DATA_UPDATE_TO, adv_data_update_timer_cb);

struct gapm_start_advertise_cmd * cmd;
cmd = app_easy_gap_undirected_advertise_get_active ();

//动态添加特定制造商的数据
mnf_data_update ();
app_add_ad_struct(cmd,&mnf_data,sizeof(struct mnf_specific_data_ad_structure));

//设置扩展睡眠在广告期间
arch_set_extended_sleep ();

app_easy_gap_undirected_advertise_start ();

通过上述更改,我在开发套件上测试了代码,并在没有将传感器连接到开发套件的情况下测量了电流消耗,我得到了更少的电流消耗。我还没有用代码编写唤醒程序。

现在,我的下一步是使用中断的唤醒设备。我有一个传感器rdy引脚,每5秒给予我低。我试图在RDY_PIN中断处理程序中唤醒设备,但我不能我的设备确实唤醒了。

下面是检测低脉冲的GPIO配置。你能检查这个片段是什么问题在配置或任何其他参数需要启用在引脚配置。

1)硬件侧RDY引脚输入,并用雷带拉起

2)配置片段,

/ / IQS62X_RDY_PIN
GPIO_ConfigurePin(IQS62X_GPIO_PORT, IQS62X_RDY_PIN, INPUT_PULLUP, PID_GPIO, false);
GPIO_EnableIRQ(IQS62X_GPIO_PORT, IQS62X_RDY_PIN, GPIO1_IRQn, true, true, 0);
GPIO_RegisterCallback (GPIO1_IRQn rdyinthaldr);

请帮我解决一下这个。

谢谢提前

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

关于我之前的帖子有什么更新吗?

当i2c上有数据时,我得到这个RDY中断引脚低。根据传感器文档,当有任何数据时,我得到RDY低。你能帮助我如何读取i2c,无论在睡眠期间或睡眠后是否有数据?

此外,在唤醒睡眠之后,我想广告我的从设备控制广告中的数据包。您能否帮助我解决这个功能,这会在唤醒之后向广告中发送数据包。表示更新所有数据包,然后转到睡眠状态,然后在当前固件中进行睡眠状态,我正在更新MNF_Data_update()函数中的数据包。唤醒后,我的要求是发送所有数据包,然后睡觉才醒来直到数据包完成。

在下面的功能中需要遵循哪些更改以实现我的要求?

/**
****************************************************************************************
* @brief应用唤醒回调函数。在API消息实用程序中注册。
* @return void.
****************************************************************************************
* /
静态孔隙app_wakeup_cb(空白)

//如果状态不空闲,请忽略该消息
if (ke_state_get(TASK_APP) == APP_CONNECTABLE)

user_app_adv_start ();

谢谢提前

罗希特R

PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

我们会直接联系你的。

问候,PM_Dialog

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

从我的结局更新,我能够在RDY引脚变低时配置唤醒设备。我在广告期间配置了睡眠,并在RDY引脚变低时唤醒。

但是我在外围定时器0中面临着不同的问题。我已经配置了定期定时器0,其中包含200msec重新加载时间。在我的自定义应用程序中,我的要求是当检测到启动30SEC定时器的事件时,当定义的计时器经过时间计时= 0时,当没有睡眠配置时绝对工作很好,现在我已经合并了睡眠定时器0无法正常运行。

也就是说,我的时间计数在30秒计时器结束前的15秒内为零。我并没有低估这个问题。甚至我也尝试了1分钟计时器,在1分钟计时器时间计数在30秒内为0之前。

你能帮我看看是什么问题吗?我在调试模式下检查。

谢谢提前

罗希特R

PM_Dialog
离线
最后看到:29分21秒前
工作人员
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

如果你想通过RDY中断唤醒,你可以使用唤醒控制器。实现应该与ble_app_sleepmode示例以及如何使用外部GPIO作为唤醒源类似。因此,既然您提到可以通过RDY唤醒,那么我假定您已经完成了类似的实现。

关于您关于SW定时器0的后续问题,如果我理解正确,那么当设备处于睡眠模式时,问题就没有正确计数?我的理解是否正确?它是预期的,因为延长睡眠时,系统可以通过唤醒控制器通过外部中断(输入)同步地唤醒,可以同步地唤醒或异步。

我们强烈建议每一个问题提出一个新的论坛代码,这样我们可以更好地处理您的问题。你的所有问题都有一张票,很难获得和搜索所有可用的信息。

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

感谢您的反馈。

是的,我做了与ble_sleep_mode示例相同的操作,使用RDY引脚唤醒设备。

当RDY引脚低,然后设备醒来,它也从传感器事件,所以如果事件我开始计时器0,等待30秒或1分钟的定义时间,然后时间过去后计数0。在这里,我的计时器正在减少意味着如果我开始30秒计时器,它将在30秒之前结束。

在添加睡眠后提出这个问题。我知道在睡眠期间其他外围设备关闭但我的问题是醒来之后。请建议我如何处理这个问题。

感谢和问候

罗希特R

Rajapurerohit.
离线
最后看到:1年1个月前
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

我试图用低RDY引脚唤醒设备,但设备不稳定。我无法正常读取I2C数据。有时我得到数据,有时没有,我的RDY引脚低,只有当有数据在I2C寄存器的地址。

请帮助我,我应该做什么,使设备稳定,睡眠和唤醒正常,没有任何问题。这件事对我来说很紧急。

谢谢提前

罗希特R

页面