⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
71个员额/ 0个新员额
最后一篇
Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
睡眠模式配置

大家好,

我一直在使用DA14583 MCU。现在我的定制板与PIR传感器Azoteq(IQS621)MCU准备好了。

与DA14583接口的Azoteq传感器的所有功能都正常工作,没有任何问题。

现在,我需要进行睡眠模式配置,我的自定义设备持续长时间用于2年的电池寿命。

我用2个AAA电池为设备供电。

我不能配置带有中断的睡眠模式,因为Azoteq传感器为I2C通信每10ms中断一次Dialog MCU。

因此,任何一个人都可以帮助我如何在睡眠模式配置中配置对话框MCU,以获得最长时间,并且只要有来自Azoteq传感器的数据即可唤醒它。

与此同时,我用Azoteq MCU检查我如何降低当前消耗量,如果您有助于对话框MCU部分进行睡眠模式配置,它将真正有帮助。

谢谢和问候

Rohit R.

设备:
mhv_dialog.
离线
最后一次露面:1个月2个星期前
工作人员“title=
加入:15 2013-12-06
嗨罗希特,

嗨罗希特,

对不起,从您的问题中不清楚您是否希望或不希望从传感器的外部中断中醒来。

您可以启用睡眠模式,并指定一个或多个gpio来生成唤醒(有关唤醒计数器的详细信息,请参阅SW参考手册)。接近记者项目利用了这种唤醒机制。

如果您不想从传感器中断唤醒中断,则只需启用延长睡眠并设置计时器以唤醒设备即可从传感器查询数据,从而决定是否保持清醒或返回睡眠状态。

/MHv

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
你好,MHv,

你好,MHv,

我不想用GPIO中断唤醒设备。由于传感器中断是每10毫秒一次,所以我不能用它来唤醒设备,因为它和设备一样好,而不仅仅是睡眠状态。我在硬件方面没有任何按钮。

“如果您不想在传感器中断时醒来,您只需启用延长睡眠并设置一个定时器来唤醒设备,以查询来自传感器的数据,从而决定是保持清醒还是恢复睡眠。”

-根据你的评论,以下是我的理解,如果我错了,请纠正我。

1.我必须使用计时器0或计时器1,其中我必须在设备进入睡眠状态时启动计时器,并在计时器的中断处理程序中将其唤醒[调用处理程序的时间段由我根据应用程序决定]

但是,根据上述了解,我对此我想了解你的建议很少

1.在当前的固件中,我配置了定时器0 200毫秒来执行应用程序的其他任务。那么,我是否应该按照您的建议或其他方式使用相同的时间来实现唤醒算法,以便我可以实现2年的电池寿命?

谢谢和问候

Rohit R.

mhv_dialog.
离线
最后一次露面:1个月2个星期前
工作人员“title=
加入:15 2013-12-06
嗨罗希特,

嗨罗希特,

推荐的方法是利用应用程序计时器(app_easy_timer)。让我们假设您希望每秒钟醒来并查询传感器。这可以通过设置计时器来实现,如下所示:

cb_my_timeout app_easy_timer (100);

第一个参数指定在100 * 10ms = 1000ms = 1s之后超时的定时器。此时将调用回调cb_my_timerout() get。在这个回调函数中,您将实现数据轮询并再次设置计时器。Se SW参考手册,了解app_easy_timer的详细信息(提示:它很容易使用;o)

您有很大的电池,所以我希望您可以轻松实现2年的电池寿命。

/MHv

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
你好,MHv,

你好,MHv,

感谢您的反馈意见,

我也会执行同样的操作,然后回复你。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
谢谢mhv_dialog为你的

感谢MHv_Dialog的建议!

嗨rajapurerohit,

抱歉在这个论坛线程中跳跃。如果您需要进一步支持,您可以让我们知道吗?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我正在努力,我的实现尚未完成。

因为我同时也在做其他的工作。所以我没有回答。

一旦我完成了我就会给你回复。

感谢您的理解

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨rajapurerohit,

嗨rajapurerohit,

是的,请告诉我们当您继续执行时

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我已经开始使用app_easy_timer()实现睡眠模式,并像前面建议的那样在回调中唤醒。

但我很少有疑惑,

情况1:

1)我已经在user_config.h中将设备配置为ARCH_EXT_SLEEP_ON

2)然后使用5秒定时器作为计数,5秒时间经过后调用app_easy_timer() start [2sec],然后使用arch_set_extended_sleep()函数启用睡眠。

3)然后,在App_easy_Timer禁用睡眠的回调函数中,首先尝试仅通过调用arch_disable_sleep()才能成功,因此接下来尝试了以下函数

arch_disable_sleep ();

if(getBits16(sys_stat_reg,per_is_down))
{
periph_init ();
}

if(arch_ble_ext_wakeup_get()))
{
拱设置睡眠模式(应用默认睡眠模式);
arch_ble_force_wakeup ();
arch_ble_ext_wakeup_off ();
app_easy_wakeup();
}

4)调试后来知道我的5秒定时器函数只不执行,所以这导致了整个睡眠逻辑的错误。

案例2:

1)然后我保持ARCH_SLEEP_OFF在user_config.h

2)与病例1相同的步骤1.但是此时间在5SEC定时器经过的arch_set_extended_sleep()函数和设备停止广告

3)但是回调cb_my_timeout()函数没有执行,所以我不能看到设备正常唤醒和发布。

不明白是什么问题,你可以帮助我做错了什么。

如果您引导我开发睡眠模式,对我来说非常有帮助。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨rajapurerohit,

嗨rajapurerohit,

你能检查一下SDK5.0.4的ble_app_sleepmode例子吗?它位于projects\target_apps\ble_examples\ble_app_sleepmode SDK路径下。在本例中,app_easy_timer()用于停止发布并使系统进入睡眠模式。然后,您可以通过GPIO中断唤醒芯片。

如果您正在开始新的设计或项目,我们建议您从最新的Smartbond设备DA14531开始。SDK有了很大的改进,我们有很多代码示例和改进的文档,还有软件路线图支持。DA14580产品系列和SDK5没有任何软件路线图支持。

请查看DA14531产品页面:

//www.xmece.com/亚博电竞菠菜products/connectivity/bluetooth-low-energy/products/da14531

DA14531应亚博国际官网平台网址用程序:

-连接消费者:信标,智能标签,遥控器,接近标签,连接手表,笔,鼠标,玩具,低功耗传感器,蓝牙LE增加了“BLE管道”到现有的应用程序亚博国际官网平台网址

- 连接的健康:连接的注射器,吸入器,葡萄糖显示器,智能贴片,血压计,温度计

- 汽车:轮胎压力,监控系统和低功耗无线传感器

DA14531的大益处是超低成本和功率!

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

谢谢你的回复,

我看到ble_sleep的例子,但这对我没有用处。因为我没有使用任何外部的GPIO来唤醒设备,因为在这个产品的设计中没有使用GPIO引脚。

在BLE_SLEEP示例中,它们正在使用GPIO而不是定期唤醒设备。在我的系统中,我想要定期睡眠并唤醒逻辑。

所以请帮助我们定期起床和睡觉。

我的设备是并且它运行如下,请找到设备的功能,并帮助我如何实现这款设备的电池寿命2年。

1)使用IQS621 I2C底座的代理传感器接口与DA14583单片机对话

2)这里,我在“RDY”引脚上读取数据。IQS621传感器的此Rdy引脚每10ms的中断可读取数据[类似触摸,代理和als]。基本上这个RDY引脚10MS中断窗口用于读取传感器I2C数据。[此RDY中断我无法使用睡眠中的设备从睡眠中打断时,每10ms窗口中断]

3)接下来,如果可用的触摸数据我将操作命令发送给其他设备,如果检测到任何人时刻[即,代理]然后我再次向其他设备发送操作命令。

4)在这里,当读取PIR数据[人时刻],我检查一些阈值的ALS数据,如果两者都是正的,然后只向设备发送操作命令。如果一个人不在场,那么就不要发出命令。

5) 上述功能正在运行并得到验证。设备正在按预期工作。

6) 现在,为了延长设备寿命,我的下一步是睡眠模式配置。

因此,我想开发一种无任何GPIO中断的睡眠模式配置。我的最终目标是“在几秒钟内(例如2到5秒)检查I2C基本传感器是否有任何数据,如果没有数据,则进入睡眠模式,并在一段时间后再次醒来检查数据。如果有数据持续保持清醒,不要睡觉。这种重复动作应该发生。”

而且不,我不会开始一个新项目。

它是一个已经开发的设备,使用SDK 5.0.4,使用DA14583单片机。所有的功能都是经过验证的,最终的部署只在此设备的电源管理开发中。所以现在我关注的是睡眠模式。

我将查看DA14531设备相关文档,以了解您共享的用途。

但我需要帮助是SDK 5和DA14583与设备相关的开发。

使用ble_app_sleepmode示例,我将尝试实现睡眠模式和管理设备睡眠,唤醒算法。如果有任何更新,我会尽快回复你。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

请查看随附的用于在SDK的ble_app_睡眠模式示例中实现定期唤醒和睡眠的差异文件。为了从永久睡眠模式中醒来,使用了一个BLE定时器。在本演示中,系统将播放广告5秒钟,然后停止播放广告并进入睡眠模式。它将在5秒后醒来,并将重新启动广告。请记住,在广告和连接间隔之间,设备将进入睡眠模式。此外,当处于睡眠模式时,所有外围域都断电。这个简单的演示展示了如何使用app_easy_timer()API来唤醒和睡眠。您可以根据项目要求对其进行调整。

谢谢,PM_Dialog

依恋:
Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

感谢您使用该示例的更新。

我正在通过示例文件,但我不理解哪行代码是注释和使用。

diff文件不支持,所以我在note pad++上打开了它,但有些行让人难以理解。

右括号和右括号混淆了,不理解@代表什么,有些行显示+,有些行前面有-。

例如,

-static void app_button_press_cb(void)
+ * /
+静态孔隙app_wakeup_cb(空白)//开放支架,其是关闭支架,哪个部分排除在外
{
-if(GetBits16(系统状态寄存器,PER向下))
+ periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER;
+
+
+if(GetBits16(系统状态寄存器,PER向下))
{
periph_init ();
}
@@ - 23,39 + 23,14 @@ static void app_button_press_cb(void)
arch_ble_ext_wakeup_off ();
app_easy_wakeup();
}
- - - - - -}
-
- / * *
- ******************************************************************************************
-*@brief应用程序唤醒回调函数。在API消息实用程序中注册。
- * @return void
- ******************************************************************************************
- * /
静态孔隙app_wakeup_cb(空白)
——{
+
//如果状态不是空闲,则忽略该消息
if(ke_state_get(task_app)== app_connectable)
- {
+ {
user_app_adv_start();
}
}

抱歉,但是如果可能的话,请您共享不同格式的文件,这样可以很容易地打开,并了解哪行代码被使用,哪行代码没有被使用,然后它将真正帮助我理解和进一步发展。

根据我与您共享的差异文件的理解。我试图在我的项目文件用户外设.c和.h中实现相同的。请找到相同的txt文件。但该设备是广告,无法看到它正在睡5秒并在此之后醒来。要检查此我使用BLE_SCANEER移动应用程序。如果我在配置中做错了,请告诉我。

感谢您的理解

谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

请尽早告诉我您的反馈意见。

这件事对我来说很紧急。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨rajapurerohit,

嗨rajapurerohit,

为延迟道歉。请在SDK的BLE_APP_SLEEPMODE示例中找到附加的修改。请尝试SDK提供的清洁BLE_APP_SLEEPMODE示例中的建议步骤。

谢谢,PM_Dialog

依恋:
Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

感谢您的更新文件。

现在我能打开文件,我遵循了文件中提到的步骤。

在下面的步骤2中,我使用了arch_set_extended_sleep()函数而不是arch_set_deep_sleep()函数

在user_config.h文件中启用了arch_ext_sleep_on

/ *第2步:修改user_app_adv_start()* /
空白user_app_adv_start(空白)
{
app_adv_data_update_timer_used = app_easy_timer(APP_ADV_DATA_UPDATE_TO, adv_data_update_timer_cb);

结构gapm\u start\u advision\u 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_deep_sleep ();//我的函数arch_set_extended_sleep();

app_easy_gap_undirected_advertized_start();
}

但一旦设备进入睡眠模式,就无法再次唤醒。不明白为什么?

我已经按照您在文件中提到的步骤进行了操作。

请让我知道我在步骤2中做错了什么。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

您在哪个项目遵循建议的步骤?请在调试模式下运行它,并在app_wakeup_cb()中添加断点吗?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我的项目基于BLE_PERITELAL示例。

我只在调试模式下运行,我保留了断点,但程序没有执行到app_wakeup_cb()函数。

user_app_adv_start()函数函数没有进一步的函数正在执行。

配置睡眠模式所遵循的步骤

1) 用户配置.h文件已启用ARCH\u EXT\u SLEEP\u ON

2)按照您共享的文件进行睡眠模式配置。配置广告和连接之间的睡眠

一段时间后,程序卡在rwble.c文件下面的函数中,

//开始纠正
ble_deep_sleep_corr_en_setf(1);

if ((DEVELOPMENT_DEBUG) && (USE_POWER_OPTIMIZATIONS))
{
slp_period_retated = slp_period;
//如果此断言命中,则LP ISR持续时间长于时间
//通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
if(sleep_lp_cycles &&(sleep_lp_cycles ASSERT_WARNING (0);-->在这行代码停止后一段时间rwble.c文件
}

请尽快让我知道您的反馈

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

产生这种断言的最可能的原因是lp_handler执行时间太长。这种警告意味着BLE核心的唤醒时间比计算值要长。sleep_lp_cycles是BLE核心进入睡眠之前编程的睡眠量。slp_period是设备最终醒来时测量的实际睡眠时间。这样做,如果实际睡眠比程序设置的大,那么你可能会错过一个BLE事件。

如果设备唤醒并且中断被禁用,则可以发生这种情况

因此,请检查您是否在代码的任何部分手动禁用中断。

由于它是自定义代码和自定义板,因此我无法复制或调试它。我的建议是使用我建议的步骤使用SDK的BLE_APP_SLEEPMODE示例。你能复制这个吗?

此外,我假设您没有修改任何SDK文件。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

1)”这也可以发生,如果设备是清醒的,中断被禁用,但“-我没有得到这一点

2)“所以,请检查您是否手动禁用代码的任何部分中的中断。” - 不,没有禁用任何部分

3) “由于这是一个自定义代码和自定义板,我无法复制或调试它。我的建议是使用SDK的ble_app_sleepmode示例和我建议的步骤。你能复制这个吗?”-好的,为了测试app_easy_timer,我可以测试ble_睡眠示例,但我的最终项目基于ble_外围设备,现在我无法将整个项目转移到ble_睡眠示例,现在正处于生产阶段。所以这对我来说是不可能的。

-此外,如果需要,我可以与你分享我的项目文件,让我知道你对此的反馈。

4)”此外,我假定您没有修改任何SDK文件。-不,我没有修改任何SDK文件。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

是的,如果可能的话,请分享你的项目。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

请查找该项目,但请确保该项目应为私人项目。

请给你和我访问它。

链接-https://drive.google.com/file/d/1J3VK3sf2iF9O180pDlde-w79oyPc9xcJ/view?u...

我无法上传一个完整的项目,以便在驱动器上上传。让我知道它是否可以访问您。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我请求进入。

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

你现在能查一下吗。

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我已经下载了,我把它放在了我的本地电脑上。我会把密码过一遍,然后告诉你,

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我有什么更新吗?

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我为我迟到的回复道歉。我们已经从论坛中脱机了,我们已经要求我们的Dist直接与您联系。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

是的,我收到了分销商的邮件,他们正在发送相同的文件diff file,与您建议的步骤相同。我不能重复已经做过的事情。因此,请您尽早帮助我,这是我迫切需要解决的问题。

谢谢你的理解。我期待着在这个问题上得到积极的回应。

当做

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

请按照以下步骤开始调试您的自定义代码和电路板。自定义代码以来,许多事情可能是根本原因,但由于它基于自定义板,我无法调试它。

  1. 构建0级(-O0)优化级别的项目。(目标选项 - > C / C ++ - > Level 0
  2. 在以下列中添加断点(BKTP)user_app_add_undirect_complete()回调函数。
句号_wake_up_timer_used = app_easy_timer(app_periodic_wake_up_to,app_wakeup_cb);
  1. 5秒app_easy_定时器到期后,必须点击BKPT。
  2. 在app_easy_timer()中,Step Over (F10)和当您调用create_timer(timer_id, delay)时,Step (F11)代码并进入源代码。
  3. 如果您到了这个阶段,请将BKPT添加到app_wakeup_cb()中并运行代码。BKPT是否成功?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

谢谢你的反馈,

我跟着来了,

  1. 为级别0(-O0)优化级别构建项目(目标->C/C++->0级的选项--“成功构建代码”
  2. 在以下列中添加断点(BKTP)user_app_add_undirect_complete()回调函数。- “在下面提到的行上设置一个断点。
句号_wake_up_timer_used = app_easy_timer(app_periodic_wake_up_to,app_wakeup_cb);

3.在调试中运行代码——”在调试中成功运行代码

4. 5SEC APP_EASY_TIMER呼出后,BKPT必须击中。- “失败。Bkpt没有击中线路“

从一天开始,只有我被困。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨rofit,

嗨rofit,

你可以在user_app_adv_undirect_complete()回调函数的if (status == GAP_ERR_CANCELED)行中添加一个BKPT吗?它打击吗?如果是,请按F10进入代码。行为是什么?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

如果(status == gap_err_canceled)行 - “,请保持bkpt失败,Bkpt也没有击中这里“

我想这是因为我启用了延长睡眠模式

const static sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;在user_config.h文件

如果我删除了这个,那么user_app_adv_undirect_complete()函数就不会执行。

这里的问题是什么?这是启用延长睡眠模式的强制步骤,对吧?但不明白不执行的原因。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

一旦广告停止或取消,user_app_adv_undirect_complete()回调函数将被触发。这意味着当adv_data_update_timer_cb()被触发并停止广告时,出现了问题。你能在adv_data_update_timer_cb()中添加一个BKPT吗?另外,您是否启用或禁用了看门狗?如果您在调试模式下运行代码而不添加任何BKPT,它会在任何地方卡住吗?它是否陷入了你在之前评论中提到的断言中?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

如果我在use_config.h文件中启用EXT_SLEEP,并在user_app_adv_start in user_peripal.c文件中调用arch_set_extended_SLEEP()函数(如您建议的diff文件或演示文件)。

则user_app_adv_undirect_complete()、adv_data_update_timer_cb()等函数不执行。

是的,上面的睡眠配置在一段时间后,代码被困在前面的注释中提到的断言警告中。

关于看门狗,我没有改变任何与看门狗有关的事情。保持原样/****************************************************************************************************************/
/*开启看门狗定时器。*/
/ **************************************************************************************************************** /
#define cfg_wdog.

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我已经在使用DA14580 Pro-DK的SDK的ble_app_peripheral示例中测试了这个逻辑,我能够定期唤醒设备。我将与附件中的diff文件共享。请在SDK的ble_app_peripheral示例中做同样的更改。我的建议是在一个干净的SDK安装中遵循更改,并且应该使用SDK提供的示例。

之所以会出现这个断点,是因为BLE_WAKEUP_LP_Handler()花费的时间比它应该花费的时间长,所以您的代码将进入之前发布的断言。当唤醒时,从BLE_WAKEUP_LP_Handler()调用peripher_init()函数。因此,对于peripher_init()函数,应用程序代码所花的时间可能比预期的要长。另外,这个断言到达时,LP ISR的持续时间比通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC所保留的时间更长。

我检查了您发送了我的项目中的periph_init()函数,我看到你已经放置了延迟系统的代码。您应该删除I2C和定时器0初始化,所有SPI闪存事务和“更新数据库”。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

非常感谢您的回复,

我已经按照您共享的diff文件的步骤进行了操作,有几行代码与其他代码行重叠,但根据我的理解,我做了相同的更改测试。

如果可能,请您可以共享以前共享的文件,以便我不应该错过代码的任何部件/行。

/ **************************************************************************

“句号_wake_up_timer_used = easy_timer_invalid_timer;
if(getBits16(sys_stat_reg,per_is_down))
{
periph_init ();

}

*********************************************************************************/

-上面提到的部分代码出现在以前的共享文件app_wakeup_cb()函数中,但在当前的ble_peripheral_diff文件中没有提到。你能告诉我是否需要吗?

“我检查了您发送给我的项目中的peripher_init()函数,我看到您放置了一段代码,严重地延迟了系统。您应该删除I2C和Timer 0初始化、所有SPI flash事务和“更新数据库”。”- - -如果我删除它,那么我应该在哪里初始化所有这些函数?因为这些是我的项目所必需的”

谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我已经根据diff文件和我在我的最终代码中的理解做出了更改。

以下是步骤,

1)评论I2C和Timer 0初始化,所有SPI闪存事务和“更新数据库”来自Periph_Init()函数的所有初始化功能。

2)按照我理解的diff文件配置,在user_config.h文件中启用EXT_SLEEP和app_wakeup_cb(),修改user_app_adv_undirect_complete()和user_app_adv_start()函数。

3) 保持BKPT在线-“定期唤醒定时器使用=应用程序轻松定时器(应用程序定期唤醒至,应用程序唤醒至);”-“成功执行”

4)在线保持bkpt - “if(arch_ble_ext_wakeup_get())” -“成功执行”

5)每5秒执行步骤3和步骤4

但如果取消对所有初始化函数的注释(步骤2),则再次回调未执行的代码(步骤3和步骤4)。那么在哪里初始化这些函数呢?所有这些都是必要的。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

附件是你需要做的修改,请查收。你可以在user_app_init()回调函数中调用这个函数。我们通常在这里放置所有初始化代码。

谢谢,PM_Dialog

依恋:
Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我已将该文件与我的文件进行了比较,两者都是相同的。我已配置与您建议的步骤相同的步骤。

执行,

1)保持BKPT在线- "periodic_wake_up_timer_used = app_easy_timer(APP_PERIODIC_WAKE_UP_TO, app_wakeup_cb);"-“成功执行”

2)保持BKPT在线- "if (arch_ble_ext_wakeup_get())"-“成功执行”

还初始化了user_app_init()回调函数中的所有i2c、计时器和闪存。代码现在正在执行步骤1和步骤2。

接下来,我将使用这些集成测试最终代码并完成结束以结束测试。

我将测试最终代码并相应地报告你。

谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我在最终代码中集成了所有步骤,并能够执行先前共享的两个步骤[5SEC唤醒]。

但我无法连接设备,也无法读取I2C传感器数据。我正在调试相同的程序。

同时,如果你能向我建议我可能是什么问题,那么我也会调试它。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

请在User_App_On_Connection中添加断点(0个回调函数并尝试缩短代码。代码在连接时做了什么?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

下面两行代码只执行了两次,

执行,

1)保持BKPT在线- "periodic_wake_up_timer_used = app_easy_timer(APP_PERIODIC_WAKE_UP_TO, app_wakeup_cb);"-“成功执行x2”

2)保持BKPT在线- "if (arch_ble_ext_wakeup_get())"-“成功执行x2”

后面的代码不是执行,设备不是广告

正如你所说,我已经在user_app_init()函数中初始化了i2c、定时器和闪存,但我无法读取传感器数据。


谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

经过一步一步的调试,观察到以下几点:

1)我已经按照您的建议配置了我的最终代码

2)然后,首先对Periph_Init()函数的所有初始化表单进行了评论。

3),并根据您的建议,在User_App_Init()中初始化相同

4)在调试模式下运行代码,只运行两次睡眠步骤(我已经在上周写了这些步骤给你,仍然没有回复),I2C不工作。没有从传感器获取值。

5)所以,再次,我删除了所有初始化user_app_init()函数也(I2C,定时器,flash读取所有函数删除),它是观察到睡眠步骤正在执行的每个文件由您共享。

我的结论是,如果我们删除I2C和其他初始化函数,那么sleep工作,否则它不会工作。

但是我不明白在哪里以及如何初始化函数?

我迫切需要帮助,因为错过了我的截止日期。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨Rahu,

嗨Rahu,

请在调试模式下运行代码。你说过不会被执行。

我的问题是:你的代码在没有执行的情况下做了什么?

这是自定义设计,它基于自定义板,所以我不能复制任何你的问题。请在调试模式下运行您的代码,并帮助我理解行为。

  • 在这个I2C初始化函数中添加BKPT:检查所有寄存器并确保初始化正确进行。
  • 在其他I2C功能中执行相同操作
  • 按步骤调试代码

每5秒,设备停止播放广告并进入永久睡眠模式。

在睡眠模式下,所有外围域(包括I2C)都会断电。此外,系统将在广告和连接间隔之间进入睡眠模式。因此,当没有任何I2C、闪存等活动时,预计睡眠模式工作正常。您可能应该在app_wakeup_cb()中重新初始化这些函数。但这同样是特定于应用程序的。

为了进行I2C、SPI等活动,系统应处于活动模式。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

请查看以下测试步骤,

情况1)
1)睡眠模式设置为10秒
2)在user_app_init()函数中只调用I2C init函数
3)I2C init步骤进入并逐步执行
4)传感器配置寄存器写步进和步进执行
5)执行两次唤醒回调函数
6) 设备停止广告

案例2)
1)睡眠模式配置10秒
2)在user_app_init()函数中只调用timer init函数
3) timer_init()单步执行和单步执行
4)执行两次唤醒呼叫函数
5) 设备停止广告

案例3)
1)睡眠模式设置为10秒
2)在user_app_init()和唤醒回调函数中调用I2C init和timer函数
3) I2C初始化和定时器步进和步进过执行
4)传感器配置寄存器写步进和步进执行
5)执行两次唤醒回调函数
6) 设备停止广告

案例4)
1)睡眠模式设置为10秒
2)注释了user_app_init()和唤醒回调函数中所有的I2C init、timer函数
3) 已执行两次以上唤醒回调功能
4) 但当使用BLE Scanner应用程序尝试连接到设备时,它已连接,但经过一段时间(约10秒)设备断开连接
5)然后该设备就没有广告了(广告停止了)

案例5)
1)禁用睡眠模式配置
2)在user_app_init()函数中初始化I2C,timer
3)设备广告,能够读取传感器数据
4)连接也稳定

让我知道可能的错误以及您对此的反馈。我正在进一步测试,如果有什么我会更新你,但让我知道你对这一点的看法。

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
既然你停止做广告,

因为你停止了广告,进入睡眠模式和唤醒。您还可以将外围设备重新初始化到app_wakeup_cb()回调中。

如果我理解正确,案例1-2-3-5将按预期执行。但你对以下内容的理解是什么:

1)睡眠模式设置为10秒

2)在user_app_init()函数中只调用I2C init函数

您的意思是在设备唤醒后初始化I2C吗?

案例5:

4) 但当使用BLE Scanner应用程序尝试连接到设备时,它已连接,但经过一段时间(约10秒)设备断开连接

在用户\u app\u on\u connection()中添加断点并尝试单步执行代码?您是否得到任何断言,或者代码是否在任何地方卡住了?连接后的代码行为是什么?也许你应该取消“周期计时器”,但我不确定,因为我无法在我的身边复制它。

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

如果我理解正确,案例1-2-3-5将按预期执行-“不,代码在1-2-3-4情况下并没有按照预期执行,它只是醒了两次,之后没有广告,代码也不会被卡住。只有情况5正在执行并能够读取传感器数据,因为我已经禁用了睡眠模式”

1)睡眠模式配置为10秒“意味着您建议配置5SEC,我已配置为10SEC”

2)仅在user_app_init()函数中仅调用i2c_init函数 - “意味着,除了i2c_init(),我已经注释了所有其他函数timer和flash read "

4) 但当使用BLE Scanner应用程序尝试连接到设备时,它已连接,但经过一段时间(约10秒)设备断开连接

将断点添加到user_app_on_connection()中,然后尝试执行代码?你有任何断言还是代码粘在任何地方?连接后的代码行为是多少?可能你应该取消“期间计时器”,但我不确定,因为我无法在我身边复制它 -"我确实在user_app_connection()函数中跨了一步,没有assert警告,不,代码没有卡在任何地方。App_easy_timer取消函数已经存在于连接函数中"

谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

对我有任何更新吗?

谢谢和问候

Rohit R.

PM_Dialog
离线
最后一次露面:2天19小时前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

因为它是自定义项目/董事会,我对代码发生的事情非常困惑,我无法复制您的任何问题。

在案例5中,您提到禁用睡眠模式。你是说定期广告吗?

你启用了还是禁用了WDOG ?在案例1-4中,代码行为是什么?您是否尝试添加断点并逐步执行代码?

谢谢,PM_Dialog

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

“我对你的代码中发生的事情感到非常困惑,因为这是自定义项目/板,我无法复制你的任何问题。”-是的,我同意这是一个定制项目,但没有新的实施,我们使用的是基于I2C的传感器和定时器,这是必需的,闪存存储数据,除了没有纳入任何内容。我不明白为什么在睡眠模式下I2C数据没有读取,即使按照您的建议初始化了它。我对什么是错误的感到困惑,我将BKT保存在user_peripal.c文件中的每个函数中,代码并没有停止任何断言警告或任何错误消息。

“在情况5中,你提到你关闭了睡眠模式。你是说定期做广告吗?”-是,完全禁用睡眠模式,user_config.h sleep_off启用并删除app_easy_timer定期唤醒。

“您是否启用或禁用了WDOG?在案例1-4中,代码的行为是什么?您是否尝试添加断点并单步执行代码?”-是的,WDOG已启用,除用户提到的文件外,我没有修改任何SDK文件。

您是否有任何I2C启用,以及睡眠功能实施项目,如果是,那么请与我,我会比较我的例子,并检查什么是错误的?

谢谢和问候

Rohit R.

Rajapurerohit
离线
最后一次露面:1年4周前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我观察到了几点,你能帮帮忙吗,

1)在测试时,我强行暂停代码,因为设备未广告,并且没有来自I2C传感器的数据,那么代码I从I2C_READ_BYTE()函数下面暂停到以下行,

-“正在等待I2C FIFO已满();//如果Tx FIFO已满,请稍候”-此行代码已暂停,请检查我的代码以及问题所在。

2)接下来我评论了上面的线条,减少了adv_update时间只有100ms并将wakeup_time作为5sec,然后我看到了一些i2c数据,但是在广告上发送数据包然后在广告数据上没有更新,所以我再次暂停它停止的代码,它会停止它的函数最后一行 - “scb-> scr&=〜(1 << 2);”

静态内联void arch_resume_from_sleep(void)
{
//刚醒来时挂接特定于应用程序的任务
app_sleep_exit_proc();

#if ((EXTERNAL_WAKEUP) && (!BLE_APP_PRESENT)) //外部唤醒,仅在外部处理器设计
//禁用外部唤醒中断
ext_wakeup_disable();
#万一

//恢复臂睡眠模式
//重置scr [2] = sleepdeep bit else模式=空闲wfi会导致深度睡眠
//而不是处理器暂停
渣打银行——>可控硅& = ~ (1 < < 2);
}

你能解释一下我可能是错误的。

谢谢和问候

Rohit R.

页面