了解更多“coords=常见问题解答“coords=教程“coords=

71帖子/ 0新
最后一篇
Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
睡眠模式配置

你好,

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

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

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

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

我无法使用中断配置睡眠模式,因为Azoteq传感器中断对话框MCU每10ms用于I2C通信。

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

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

感谢和问候

罗希特R

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

嗨罗希特,

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

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

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

/ MHv

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨mhv,

嗨mhv,

我不想用GPIO中断唤醒设备。由于传感器中断是每10ms,所以我不能使用这个来唤醒设备,因为它是好设备而不是睡眠状态。我在硬件方面没有任何按键。

“如果你不想在传感器的干扰下醒来,你只需启用延长睡眠,并设置一个定时器来唤醒设备,从传感器查询数据,从而决定是保持清醒还是继续睡眠。”

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

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

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

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

感谢和问候

罗希特R

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

嗨罗希特,

向前推荐的方式是利用应用程序计时器(app_easy_timer)。让我们假设您想每秒唤醒并查询传感器。这可以通过设置定时器来实现这一点,如下所示:

app_easy_timer(100,cb_my_timeout);

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

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

/ MHv

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨mhv,

嗨mhv,

谢谢你的反馈,

我将执行相同的方法,然后回复你。

感谢致敬

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
谢谢mhv_dialog为你的

感谢MHv_Dialog提供的建议!

嗨rajapurerohit,

很抱歉在这个论坛上跳了进去。如果你需要进一步的支持,请告诉我们。

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

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

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

感谢您的理解

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨rajapurerohit,

嗨rajapurerohit,

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我已经开始使用app_easy_timer()实现睡眠模式,并如前所述唤醒回电。

但我很少有疑惑,

情况1:

1)我已经配置设备到ARCH_EXT_SLEEP_ON在user_config.h

2)然后使用5SEC计时器作为计数,在5SEC时间被调用APP_EASY_TIMER()启动[2SEC]之后,然后使用ARCH_SET_EXTEDDE_SLEEP()函数启用休眠状态。

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

arch_disable_sleep ();

如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
{
periph_init();
}

if(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)然后我在user_config.h中保持arch_sleep_off.h

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

3)但回调CB_MY_TIMEOUT()函数未执行,所以我无法看到设备唤醒并正常宣传。

不明白是什么问题,你能帮我做错什么吗?

如果你引导我养成睡眠模式,对我很有帮助。

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“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.wsdof.com/雷电竞官网登录products/connectivity/bluetooth-low-energy/products/da14531

DA14531应雷竞技安卓下载用程序:

- 连接的消费者:信标,智能标签,遥控器,近距离标签,连接手表,触控笔,鼠标,玩具,低功耗传感器,蓝牙LE在“BLE PIPE”上添加到现有应用程序雷竞技安卓下载

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

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

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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数据[Person moment]时,我检查ALS数据是否有一定的阈值,如果都是正值,则只向设备发送操作命令。如果一个人不在场,就不要发出命令。

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

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

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

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

它是一个使用DA14583单片机,使用SDK 5.0.4开发的设备。所有功能已被证明和董事会准备最终部署,只有在开发的电源管理这一设备。所以现在我专注于睡眠模式。

我将查看DA14531设备相关文件,了解您共享的目的。

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

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

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

谢谢,PM_DIALOG.

附件:
Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

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

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

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

例如,

-static void app_button_press_cb(void)
+ * /
+静态void app_wakeup_cb(void)//开放支架,其是关闭支架,哪个部分排除在外
{
- 如果(getBits16(sys_stat_reg,per_is_down))
+ periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER;
+
+
+ if(getbits16(sys_stat_reg,per_is_down))
{
periph_init();
}
@@ -239,39 +245,14 @@ static void app_button_press_cb(void)
arch_ble_ext_wakeup_off ();
app_easy_wakeup();
}
- - - - - -}
-
- / **
- ******************************************************************************************
- * @brief应用唤醒回调函数。注册在API消息实用程序。
- * @return void
- ******************************************************************************************
- * /
-static void app_wakeup_cb(void)
——{
+
//如果state不是idle,则忽略该消息
if(ke_state_get(task_app)== app_connectable)
- {
+ {
user_app_adv_start();
}
}

抱歉,但如果可能的话,你可以共享不同格式的文件,可以轻松打开,并了解哪一行代码是使用的,哪一行代码没有使用,这将真的有助于我理解和进一步发展。

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

感谢您的理解

感谢和问候

罗希特R

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

这对我来说非常紧迫。

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨rajapurerohit,

嗨rajapurerohit,

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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()* /
void user_app_adv_start(void)
{
app_adv_data_update_timer_used = app_easy_timer(app_adv_data_update_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_deep_sleep ();/ /函数arch_set_extended_sleep ();

app_easy_gap_undirected_advertise_start ();
}

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

我遵循了文件中提到的相同的步骤。

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我的项目基于BLE_PERITELAL示例。

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

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

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

ARCH_EXT_SLEEP_ON .h文件启用

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

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

//开始纠正
ble_deep_sleep_corr_en_setf (1);

if ((DEVELOPMENT_DEBUG) && (use_power_optimization))
{
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文件
}

请尽快让我知道你的反馈

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

此断言的最可能原因是因为LP_Hanlder需要太多时间来执行。这种警告意味着,已经采取了更多的时间核心唤醒比计算值。睡眠_LP_CYCLES是在BLE核心睡觉之前编程的睡眠量。SLP_PERIOD是最终唤醒时测量的实际睡眠。要这样做,如果实际睡眠大于编程,那么可能会错过一个BLE事件。

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

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

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

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

是的,如果有可能请分享您的项目。

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

请给你和我访问它。

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

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我要求访问。

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

你能检查一下吗?

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我已经下载了它,我把它当地到我的电脑。我会经过代码,让你知道,

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我有什么更新吗?

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

很抱歉我回复晚了。我们已经将此从论坛中移除,我们已经要求我们的员工直接联系你。

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

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

问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“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. 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
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

谢谢你的反馈,

我在这里,

  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);

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

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

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨rofit,

嗨rofit,

能否将BKPT添加到回调函数user_app_adv_undirect_complete()的if (status == GAP_ERR_CANCELED)行中?它打击吗?如果是,请按F10步进密码。哪个是行为?

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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()函数将执行,否则不执行。

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“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
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

然后user_app_adv_undirect_complete(), adv_data_update_timer_cb()和其他函数不执行。

是的,在上面的睡眠配置之后,一些时间代码被卡住在断言警告中,这在之前的评论中提到过。

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我已经使用DA14580 Pro-DK在SDK的BLE_APP_PERIENTAL示例中测试了此逻辑,我可以定期唤醒设备。我将与附加的差异文件共享。请在SDK的BLE_APP_PHERIALLAL示例中执行相同的更改。我的建议是按照SDK提供的SDK安装中的更改,并使用SDK提供。

此断点击中,因为BLE_WAKEUP_LP_HANDLER()需要更长的时间,因此您的代码进入您之前发布的断言。唤醒时从BLE_WAKEUP_LP_HANDLER()中调用PERIPH_INIT()函数。因此,也许进入Periph_init()函数,您的应用程序代码需要更长时间。此外,此断言命中率为LP ISR持续时间长于通过LP_ISR_TIME_TITE_XTAL32_CYCLES和LP_ISR_TIME_USEC保留的时间。

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

非常感谢您的回复,

我遵循了你的差异文件的步骤,并且很少的行与其他代码线重叠,但根据我的理解,我使更改测试相同。

如果可能的话,你可以像以前一样共享一个文件,这样我就不会错过代码的任何部分/行。

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

“句号_wake_up_timer_used = easy_timer_invalid_timer;
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
{
periph_init();

}

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

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

“我检查了你发给我的项目中的peri_init()函数,我看到你放置了一段代码,这大大延迟了系统。你应该删除I2C和Timer 0初始化,所有的SPI flash事务,以及“更新数据库”。”- - -如果我删除这个,那么我应该在哪里初始化所有这些函数?因为这些对我的项目来说是必要的

感谢和问候

罗希特R

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我已作出的改变,根据diff文件和我的理解,在我的最终代码只有。

以下是步骤,

注释了I2C和Timer 0初始化,所有SPI flash事务和“update database”所有初始化函数。

2) Configured as per diff file as I understand Enabled EXT_SLEEP in user_config.h file and app_wakeup_cb(),修改user_app_adv_undirect_complete()和user_app_adv_start()函数。

3)保持BKPT在线- "periodic_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.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

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

谢谢,PM_DIALOG.

附件:
Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

我把文件和我的文件进行了比较,两者都是一样的。我已经配置了与您建议的步骤相同的配置。

执行,

1)在线保持bkpt - “serialic_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
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

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

同时,如果你可以建议我什么可能是错的,那么我也将调试。

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

下面的两行只执行两次,

执行,

1)在线保持bkpt - “serialic_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、定时器和flash,但我无法读取传感器数据。


感谢和问候

罗希特R

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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和其他init函数,那么睡眠工作,否则它不会工作。

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

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨Rahu,

嗨Rahu,

请在调试模式下运行代码。你提到的不是被处决的。

我的问题是:如果你的代码没有被执行,它会做什么?

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

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

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

当处于睡眠模式时,包括I2C在内的所有外围域都将断电。此外,系统将进入睡眠模式之间的广告和连接间隔。因此,当没有I2C、flash等活动时,睡眠模式可以正常工作。也许您应该在app_wakeup_cb()中重新初始化这些函数。但这是应用程序特有的。

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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 init和定时器步骤进入和跨越执行
4)传感器配置寄存器写入步进和步进执行
5)执行的两次唤醒呼叫函数
6)设备停止广告

案例4)
1)睡眠模式配置为10秒
2)注释了所有I2C init,定时器函数在user_app_init()和唤醒回调函数
3)执行两次以上唤醒回调函数
4)但是当使用BLE扫描仪应用程序尝试连接到设备时,它连接但在一段时间后(10SEC大约)设备断开连接
5)该设备从不做广告(广告停止)

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

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

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“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扫描仪应用程序尝试连接到设备时,它连接但在一段时间后(10SEC大约)设备断开连接

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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(),我已经注释了所有其他函数定时器和flash读取"

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

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

感谢和问候

罗希特R

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

对我有任何更新吗?

感谢和问候

罗希特R

PM_DIALOG.
离线
最后一次露面:30分钟4秒前
工作人员“title=
加入:2018-02-08 11:03
嗨罗希特,

嗨罗希特,

我非常困惑的是发生在你的代码,因为它是定制项目/董事会,我不能复制你的任何问题。

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

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

谢谢,PM_DIALOG.

Rajapurerohit
离线
最后一次露面:6个月6天前
加入: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是启用的,我没有修改任何SDK文件,除了user_提到的文件。

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

感谢和问候

罗希特R

Rajapurerohit
离线
最后一次露面:6个月6天前
加入:2017-04-20 09:17
嗨pm_dialog,

嗨pm_dialog,

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

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

——“WAIT_WHILE_I2C_FIFO_IS_FULL ();// Wait if Tx FIFO is full " - This line code stopped, can you check my code and what is the problem .这行代码停止了,你可以检查我的代码和什么是问题。

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

静态内联void arch_resume_from_sleep(void)
{
//唤醒后的应用程序特定任务
app_sleep_exit_proc ();

#if((hyperent_wakeup)&&(!ble_app_present))//外部唤醒,只在外部处理器设计中
//关闭外部唤醒中断
ext_wakeup_disable();
#万一

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

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

感谢和问候

罗希特R

页面