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

大家好,

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

所有功能都在没有任何问题的情况下工作,而Azoteq传感器与DA14583接口。

现在,我需要做一个睡眠模式配置,我的定制设备可以持续2年的电池寿命。

我正在使用2个AAA单元来为设备供电。

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

所以,有没有人可以帮助我如何配置Dialog MCU在睡眠模式配置最大的时间,它应该醒来时,有Azoteq传感器的数据。

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

谢谢并问候

罗希特R

设备:
mhv_dialog.
离线
最后看到:1个月5天前
工作人员"title=
加入:2013-12-06 15:10
嗨rohit,

嗨rohit,

对不起,如果您想要或不想从传感器唤醒外部中断,则不清楚您的问题。

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

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

/ mhv.

Rajapurerohit.
离线
最后看到:2周前1年
加入:2017-04-20 09:17
嗨mhv,

嗨mhv,

我不想用gpio中断唤醒设备。由于传感器中断为每10ms,因此我无法使用它来唤醒设备,因为它与设备不仅仅是休眠状态。我没有硬件侧的任何按钮。

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

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

1.我必须使用定时器0或计时器1,其中我必须在设备睡觉时启动定时器并在计时器的中断处理程序中唤醒它。[调用处理程序的时间段按照申请留给我]

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

1.在当前固件中,我已配置Timer 0才能执行200ms的其他任务。那么我应该同时使用根据您的建议或任何其他方式实现唤醒算法,以便我可以实现2年的电池寿命?

谢谢并问候

罗希特R

mhv_dialog.
离线
最后看到:1个月5天前
工作人员"title=
加入:2013-12-06 15:10
嗨rohit,

嗨rohit,

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

cb_my_timeout app_easy_timer (100);

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

你有非常大的电池,所以我希望你可以很容易地达到2年的电池寿命。

/ mhv.

Rajapurerohit.
离线
最后看到:2周前1年
加入:2017-04-20 09:17
嗨mhv,

嗨mhv,

谢谢你的反馈,

我将实施相同并回复您。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
谢谢mhv_dialog为你的

谢谢mhv_dialog为您的建议!

嗨Rajapurerohit,

很抱歉在这个论坛里跳出来。如果你在这方面需要进一步的支持,请告诉我们。

谢谢,PM_Dialog

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

嗨PM_Dialog,

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

因为我也并行地处理其他任务。所以我没有回复。

一旦我完成实施,我会回复你。

谢谢你的理解

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨Rajapurerohit,

嗨Rajapurerohit,

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

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:2周前1年
加入: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();

如果(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();

4)调试后,知道我的5秒定时器功能只是没有执行,所以这导致整个睡眠逻辑失败。

案例2:

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

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

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

不了解您的问题是什么问题,请帮助我做错事。

如果你能指导我开发睡眠模式,那将对我很有帮助。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"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产品页面:

https://www.dialog-seminile.com/produ亚博电竞菠菜cts/connectivity/bluetooth-low-energy/products/da14531

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

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

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

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

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

谢谢你的回复,

我看到了BLE_SLEEP榜样,但对我来说是没有用的。因为我不使用任何外部GPIO来唤醒设备,因为没有在本产品的设计中使用的GPIO引脚。

在ble_sleep的例子中,他们使用GPIO唤醒设备,而不是周期性的。在我的系统里,我需要周期性的睡眠和清醒的逻辑。

所以请帮助定期唤醒和睡眠。

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

1)使用IQS621 I2C基础代理传感器与我们的对话框DA14583 MCU接口

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

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

4)在这里,在阅读PIR数据[人员时刻]我检查有一些阈值的ALS数据,如果两者都是肯定的,那么只向设备发送操作命令。如果未存在,则不会发送命令。

5)以上功能正在运作和证明。该设备按预期工作。

6)现在,对于设备长寿命,我的下一步是睡眠Mod配置。

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

不,我没有开始一个新项目。

使用DA14583 MCU使用SDK 5.0.4已开发的设备。所有功能都已经过验证,电路板已准备好仅在开发下进行最终部署,是此设备的电源管理。所以现在我专注于睡眠模式。

我将检查DA14531的设备相关文档以了解您共享的目的。

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

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

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

请查找附加的差异文件,用于实现定期唤醒并睡眠在SDK的BLE_APP_SLEEP模式示例中。为了从永久睡眠模式唤醒,使用BLE定时器。在这个演示中,系统是为5秒的广告,然后停止广告并进入睡眠模式。它将在5秒后醒来,它将重新启动广告。牢记而不是设备进入广告和连接间隔之间的睡眠模式。此外,何时在睡眠模式下,所有外围域都会断电。这个简单的演示展示了如何使用app_easy_timer()API唤醒和睡眠。您根据您的项目要求调整它。

谢谢,PM_Dialog

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

嗨PM_Dialog,

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

我正在通过示例文件,但我不了解评论哪一行代码并使用它。

差异文件不支持,所以我在笔记本++上打开它,但有些线条正在制作混淆。

关闭支架和开放括号正在制造混乱,而不是了解@@代表和某些线路显示+和某种线路。

例如,

静态孔隙app_button_press_cb(空白)
+ * /
+静态孔隙app_wakeup_cb(空白)//开放支架,其是关闭支架,哪个部分排除在外

- 如果(getBits16(sys_stat_reg,per_is_down))
+ serialic_wake_up_timer_used = easy_timer_invalid_timer;
+
+
+ if(getbits16(sys_stat_reg,per_is_down))

periph_init();

@@ -239,39 +245,14 @@静态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 ();

抱歉,但如果可能的话,请您在不同的格式中共享文件,可以轻松打开,了解使用哪一行代码,并且不使用它,那么它将真正帮助我进一步了解和发展。

根据我对你分享的diff文件的理解。我已经尝试在我的项目文件user peripheral .c和.h中实现相同的功能。请找到相同的txt文件。但该设备正在做广告,无法看到它在睡眠5秒后醒来。为了检查这个,我使用了BLE_Scaneer移动应用程序。如果我在配置中做错了什么,让我知道。

谢谢你的理解

谢谢并问候

罗希特R

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

嗨PM_Dialog,

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

这对我来说非常紧迫。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨Rajapurerohit,

嗨Rajapurerohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

谢谢你更新的文件。

现在我能够打开文件,我已经按照文件中提到的步骤。

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

并在user_config.h文件中启用ARCH_EXT_SLEEP_ON

/*步骤2:修改user_app_adv_start() */
空白user_app_adv_start(空白)

app_add_data_update_timer_used = app_easy_timer(app_add_data_update_to,avd_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_DEEP_SLEEP();//我的函数arch_set_extending_sleep();

app_easy_gap_undircated_advertise_start();

但是一旦设备进入睡眠模式,无法唤醒。不理解为什么?

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

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

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

我的项目基于BLE_PERITELAL示例。

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

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

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

1)user_config.h文件启用了arch_ext_sleep_on

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

在某些时间程序粘在函数下方的rwble.c文件中。

//开始修正
ble_deep_sleep_corr_en_setf(1);

if((development_debug)&&(use_power_optimizations))

slp_period_retained = slp_period;
//如果此断言命中,则LP ISR持续时间超过该时间
//已通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
If (sleep_lp_cycles && (sleep_lp_cycles < slp_period))
ASSERT_WARNING (0);-->在此行代码后,在某些时间后停止了Rwble.c文件

请尽快让我知道你的反馈

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

如果设备是清醒的,并且中断被禁用,但是

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

因为它是一个自定义代码和自定义板,我不能复制或调试它。我的建议是使用SDK的ble_app_sleepmode示例和我建议的步骤。你能复制这个吗?

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

1)“如果设备清醒并且禁用中断但” - 我没有明白这一点,则可以发生这种情况

2)”因此,请检查您是否在代码的任何部分手动禁用中断。-不,没有使任何部分失效

3)“由于它是一种自定义代码和自定义板,我无法复制或调试这一点。我的建议是使用我建议的步骤使用SDK的BLE_APP_SLEEPMODE示例。你能够复制这个吗?” - 好的,用于测试app_easy_timer我可以测试ble_sleep exampt但我的最终项目基于ble_peripheral,现在我无法将整个项目转移到ble_sleep examps,它现在是生产阶段。所以这对我来说是不可能的。

- 另外,如果需要,我可以与您共享我的项目文件,让我知道您的反馈。

4)“另外,我假设您没有修改任何SDK文件。” - 否,我没有修改任何SDK文件。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

请找到该项目,但请确保该项目应该是私密的。

它应该是你和我都能进入的。

关联 -https://drive.google.com/file/d/1j3vk3sf2if9o180pdlde-w79oypc9xcj/view?u ...

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

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

我要求访问。

谢谢,PM_DIalog

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

嗨PM_Dialog,

你能检查一下吗?

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

有什么最新消息吗?

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

很抱歉回复晚了。我们已经把这个从论坛离线,我们已经要求我们的信徒直接联系你。

谢谢,PM_Dialog

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

嗨PM_Dialog,

ya,我收到了分发商的邮件,他们发送了相同的文件差异文件,您已经建议的相同步骤。我不能重复已经完成的相同的东西。所以请你请尽早帮助我,这是我解决这个问题的迫切。

感谢您的理解。我期待着对这个问题产生积极的回应。

问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

谢谢你的反馈,

在这里,我跟着,

  1. 为0级(-O0)优化级别构建项目。(Options for target ->C/ c++ -> Level 0——.“成功建立了代码”
  2. 在user_app_adv_undirect_complete()回调函数的以下行中添加一个断点(BKTP)。——“在下面提到的线上放置一个断点“
periodic_wake_up_timer_used = app_easy_timer(APP_PERIODIC_WAKE_UP_TO, app_wakeup_cb);

3.在Debug中运行代码 - “在调试中运行代码成功

4. 5SEC APP_EASY_TIMER呼出后,BKPT必须击中。- “失败。BKPT没有达到标准。”

从第一天起,只有我被困在这里。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨,得益于他们,

嗨,得益于他们,

请在User_App_Adv_Undirect_Complete()回调函数中添加BKPT到IF(Status == Gap_Err_Canceled)行中吗?它击中了吗?如果是,请按F10步骤执行代码。这是行为吗?

谢谢,PM_Dialog

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

嗨PM_Dialog,

keep BKPT on if (status == GAP_ERR_CANCELED) line——"失败了,BKPT也没打到这里。”

我认为这是由于,我已经启用了扩展睡眠模式

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

如果删除此,则user_app_adv_undirect_complete()函数否则执行。

这里的问题是什么?启用延长睡眠模式的强制性步骤右键吗?但不理解未执行的原因。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

如果我在USE_CONFIG.H文件中启用ext_sleep,并且在user_peripher.c文件中呼叫arch_set_extending_sleep()函数,因为您建议的diff文件或演示文件。

然后user_app_add_undirect_complete(),adv_data_update_timer_cb()和其他功能不执行。

是的,在某些时间代码被困在断言警告中,在睡眠配置之后,在早期的评论中提到的。

关于看门狗,我没有改变与看门狗相关的任何东西。保存,因为,/ **************************************************************************************************************** /
/ *启用看门狗定时器。* /
/****************************************************************************************************************/
#定义CFG_WDOG

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

我已经在使用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所保留的时间更长。

我检查了您发送给我的项目中的peripher_init()函数,我看到您放置的一段代码极大地延迟了系统。您应该删除I2C和Timer 0初始化,所有SPI flash事务和“更新数据库”。

谢谢,PM_Dialog

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

嗨PM_Dialog,

非常感谢您的回复,

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

如果可能的话,请您共享一个文件,就像以前共享的那样,以便我不应该错过任何部分/行代码。

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

" periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER; "
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))

periph_init();

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

- 上面提到的代码部分在App_WakeUp_cb()函数中存在于先前共享的文件中,但在当前BLE_PERITALAL_DIFF文件中,未提及。你能告诉我是否需要或不是?

“我检查了您发送了我的项目中的Periph_init()函数,我看到你已经放置了一段代码,延迟了系统。您应该删除I2C和Timer 0初始化,所有SPI闪存事务,以及“更新数据库”。“ -如果我删除此,我应该在哪里初始化所有这些函数?因为这些是我的项目所必需的“

谢谢并问候

罗希特R

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

嗨PM_Dialog,

我根据差异文件进行了更改,并仅在我的最终代码中的理解。

以下是步骤,

1)注释I2C和Timer 0初始化,所有SPI flash事务和“update database”所有初始化函数都来自于外围init()函数。

2)根据我理解的extr_sleep在user_config.h文件和app_wakeup_cb()中,修改了user_app_add_undirect_complete()和User_App_Adv_Start()函数。

3)保持在行中的bkpt - “句号_wake_up_timer_used = app_easy_timer(app_periodic_wake_up_to,app_wakeup_cb);”-“成功执行”

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

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

但如果取消注释所有初始化函数(步骤2)然后再次调用码不执行(步骤3和步骤4)。然后在哪里初始化这些功能?并且一切都是必要的。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

请查找您应该做的更改。您可以在User_App_Init()回调函数中取悦该函数。在这里,我们通常会放置所有初始化代码。

谢谢,PM_Dialog

附件:
Rajapurerohit.
离线
最后看到:2周前1年
加入: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())” -“成功执行”

并且还初始化了US_APP_INIT()回调函数中的所有I2C,TIMER和Flash。代码现在正在执行步骤1和步骤2。

接下来,我将用这些集成测试最终代码,并进行端到端测试。

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

谢谢并问候

罗希特R

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

嗨PM_Dialog,

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

但我无法连接设备并无法读取I2C传感器数据。我正在调试同样的调试。

同时,如果你能告诉我哪里出了问题,我也会进行调试。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

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

谢谢,PM_Dialog

Rajapurerohit.
离线
最后看到:2周前1年
加入: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”

之后的代码不是执行,设备不是宣传

当您建议我初始化I2C,Timer和Flash中的初始化I2C,Timer和Flash,但我无法读取传感器数据。


谢谢并问候

罗希特R

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

嗨PM_Dialog,

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

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

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

3)并且,按照您的建议在user_app_init()中初始化相同

4)在调试模式下运行代码,只有两次执行的睡眠步骤(我上周写了这些步骤,仍然没有回复该)和i2c不起作用。没有传感器的值。

5)如此,我也删除了来自user_app_init()函数的所有初始化(I2c,timer,flash读取所有函数删除),并且观察到睡眠步骤是根据您共享的文件执行的。

从我的结论是如果我们删除I2C和其他init函数,那么睡眠工作否则它将无法正常工作。

但我不理解在哪里以及如何初始化函数?

我急需帮助,因为我错过了截止日期。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨Rahu,

嗨Rahu,

请以调试模式运行代码。你提到没有被执行。

我的问题是:由于它没有执行,因此您的代码是什么?

它是自定义设计,它基于定制板,因此我无法复制您的任何问题。请在调试模式下运行代码,并帮助我了解行为。

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

每5秒钟设备,设备停止adverting并进入永久睡眠模式。

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

为了具有I2C,SPI等活动,系统应在活动模式下。

谢谢,PM_Dialog

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

嗨PM_Dialog,

请找到测试的步骤,

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

例2)
1)10秒的睡眠模式配置
2)仅在User_App_Init()函数中仅调用Timer Init函数
3)timer_init()步入和步骤过度执行
4)执行两次唤醒回调函数
5)设备停止广告

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

例4)
1)配置为10SEC的睡眠模式
2)评论了所有I2C init,timer函数在user_app_init()和唤醒回调函数中
3)执行超过两次的唤醒呼叫函数
4)但是当使用BLE扫描仪应用程序尝试连接到设备时,它连接但在一段时间后(10SEC大约)设备断开连接
5)然后设备从未宣传过(广告已停止)

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

让我知道什么是错误的,你对此的反馈。我进一步测试了,如果我会更新你,但让我知道你的观点。

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
既然你停止广告,

由于您停止广告,进入睡眠模式并唤醒。您还可以将外围设备重新初始化到App_WakeUp_cb()回调。

如果我理解正确,案例1-2-3-5按预期执行。但是你的意思是什么:

1)配置为10SEC的睡眠模式

2)仅在user_app_init()函数中仅调用I2C Init函数

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

在案例5:

4)但是当使用BLE扫描仪应用程序尝试连接到设备时,它连接但在一段时间后(10SEC大约)设备断开连接

将断点添加到user_app_on_connection()中,然后尝试执行代码?你是否得到任何断言,或者代码是否在任何地方卡住了?连接后的代码行为是什么?可能你应该取消“期间计时器”,但我不确定,因为我无法在我身边复制它。

谢谢,PM_Dialog

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

嗨PM_Dialog,

如果我理解正确,案例1-2-3-5按预期执行。-“否,在1-2-3-4的情况下,代码没有按预期执行,它只唤醒两次,之后,没有广告也没有代码在任何地方粘滞。只有案例5正在执行并能够读取传感器数据,因为我已经禁用了睡眠模式“

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

2)在user_app_init()函数中只调用I2C_init函数除I2C_INIT()之外的手段,我已经评论了所有其他功能计时器和闪存读取“

4)但是当使用BLE扫描仪应用程序尝试连接到设备时,它连接但在一段时间后(10SEC大约)设备断开连接

在user_app_on_connection()中添加一个断点,并尝试步进代码?你是否得到任何断言,或者代码是否在任何地方卡住了?连接后的代码行为是什么?也许你应该取消“周期计时器”,但我不确定,因为我不能复制它在我的身边-“我确实在user_app_connection()函数中介入,没有断言警告,否,代码不粘在任何地方。App_easy_timer取消功能已存在于连接功能中”

谢谢并问候

罗希特R

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

嗨PM_Dialog,

对我有任何更新吗?

谢谢并问候

罗希特R

PM_Dialog
离线
最后看到:12小时11分钟前
工作人员"title=
加入:2018-02-08 11:03
嗨rohit,

嗨rohit,

我很困惑在你的代码中发生了什么,因为它是自定义项目/板,我不能复制任何你的问题。

在案例5中,您提到禁用睡眠模式。你的意思是周期性的广告吗?

您是否启用了WDOG或禁用?在1-4的情况下,代码行为是什么?您是否尝试添加断点并执行代码?

谢谢,PM_Dialog

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

嗨PM_Dialog,

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

“在案例5中,您提到禁用睡眠模式。你的意思是定期的广告吗?”-是,完全禁用睡眠模式,user_config.h sleep_off启用并删除app_easy_timer定期唤醒。

“您是否有启用或禁用WDOG?在1-4案例中,代码行为是什么?您是否尝试添加断点并缩短代码?”-是的,启用WDOG,我没有修改除USER_文件以外的任何SDK文件。

您是否启用了任何I2C,与睡眠功能实现的项目,如果是,那么请与我一起,我会将这个例子与我的检查有什么问题?

谢谢并问候

罗希特R

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

嗨PM_Dialog,

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

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

- “wait_whille_i2c_fifo_is_full(); //等待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 ();
#万一

//恢复ARM休眠模式
//重置SCR[2]=SLEEPDEEP位,否则模式=空闲WFI将导致深度睡眠
//而不是处理器停止
scb-> scr&=〜(1 << 2);

你能解释一下哪里出了问题吗?

谢谢并问候

罗希特R

页面