⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
71帖/ 0新
最后发表
Rajapurerohit.
离线
最后看到:2周前1年
加入:2017-04-20 09:17
睡眠模式配置

大家好,

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

我所有的功能都没有用DA14583接口的Azoteq传感器的任何问题做工精细。

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

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

我无法配置与中断的Azoteq传感器中断每隔10ms的I2C通信对话框MCU休眠模式。

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

同时,我正在检查Azoteq MCU如何减少当前的消耗,如果你帮助Dialog MCU部分进行睡眠模式配置,将会非常有帮助。

感谢致敬

Rohit R.

设备:
MHv_Dialog
离线
最后看到:1个月6天前
工作人员"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年的电池寿命?

感谢致敬

Rohit R.

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

嗨rohit,

推荐的前进道路是采取应用定时器(app_easy_timer)的优势。让我们假设你要唤醒和查询传感器每秒。这可以通过设置定时器acheieved如下所示:

app_easy_timer(100,cb_my_timeout);

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

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

/ mhv.

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

嗨MHV,

感谢您的反馈意见,

我将实施相同并回复您。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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,

我正在努力,我的实现还没有完成。

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

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

谢谢你的理解

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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(后)开始[2秒]然后启用使用arch_set_extended_sleep睡眠()函数。

3)然后,在app_easy_timer的回调函数禁用睡眠,首先试图唤醒只通过调用arch_disable_sleep()没有成功,所以下一个尝试下面的函数

ARCH_DISABLE_SLEEP();

if(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相同。但这一次,在计时器经过5秒后执行arch_set_extended_sleep()函数,设备停止发布

3)但是回调cb_my_timeout()函数不执行,所以我没能看到设备唤醒并正常投放广告。

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

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

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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中断唤醒芯片。

如果你开始一个新的设计或项目,我们建议开始与我们的命名DA14531最新Smartbond设备。该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单片机对话

2)这里,我读取“RDY”引脚上的数据。IQS621传感器的RDY引脚每10ms提供中断读取数据[如Touch, Proxy和ALS]。基本上这个RDY引脚10ms中断窗口读取传感器I2C数据。[这个RDY中断我不能用于从睡眠中唤醒设备,因为它每10毫秒中断一个窗口]

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

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

5)该上述功能是工作和证实。该设备工作正常。

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

所以,我想开发一个睡眠模式的配置没有任何GPIO中断。我的最终目标是“检查如果来自I2C基地传感器几秒钟(例如2至5秒)的任何​​数据,然后如果没有数据存在进入睡眠模式并且在一段时间之后醒来数据再次检查。如果有数据不断保持清醒不要去睡觉。这重复的动作应该发生。”

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

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

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

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

使用ble_app_sleepmode例子,我将尽力实现睡眠模式和管理设备的睡眠,醒来的算法。在任何更新的情况下,我会尽快给你趁早。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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;
+
+
如果+(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
- ****************************************************************************************
- * /
-static空隙app_wakeup_cb(无效)
——{
+
//如果状态不空闲,请忽略该消息
if (ke_state_get(TASK_APP) == APP_CONNECTABLE)
——{
+ {
user_app_adv_start ();

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

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

谢谢你的理解

感谢致敬

Rohit R.

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

嗨PM_Dialog,

请尽快让我知道你的反馈。

这件事对我来说很紧急。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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_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_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步中我做错了什么。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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_peripheral的例子。

我只在调试模式下运行,我一直保持断点,但程序没有执行到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文件

请尽快让我知道您的反馈

感谢致敬

Rohit R.

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

嗨rohit,

最可能的原因说法是因为LP_Hanlder花费太多的时间来执行。这种警告意味着对于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例子,但我最后的项目是基于ble_peripheral,现在我可以把整个项目不能转移到ble_sleep例子,它是生产阶段了。所以,我不可能。

- 此外,如果需要,我可以分享我的项目文件,你让我知道你对这个意见。

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

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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ü...

我无法上传一个完整的项目,所以上传到驱动器上。让我知道它是否可以接近你。

感谢致敬

Rohit R.

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

嗨rohit,

我请求进入。

谢谢,PM_DIalog

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

嗨PM_Dialog,

您现在可以检查。

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

嗨rohit,

我已经下载了它,我必须在本地到我的电脑。我将通过代码,并让你知道,

谢谢,PM_Dialog

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

嗨PM_Dialog,

有什么最新消息吗?

感谢致敬

Rohit R.

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

嗨rohit,

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

谢谢,PM_Dialog

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

嗨PM_Dialog,

雅,我得到了邮件从分销商,他们发送相同的文件diff文件,同样的步骤,你已经建议。我不能重复它们已经做了同样的事情。因此,它被要求请你帮我在最早的,这是迫切需要我来解决这个问题。

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

问候

Rohit R.

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

嗨rohit,

请按照下面的步骤在您的自定义代码和主板中开始调试它。由于它是一个自定义代码,许多事情可能是根本原因,但我不能调试它,因为它是基于一个自定义板。

  1. 为0级(-O0)优化级别构建项目。(选项的目标->C/ c++ ->级别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. 在5秒app_easy_timer期满后直接BKPT必须打。
  2. 在app_easy_timer(),步过(F10),当你到达create_timer的调用(timer_id,延迟),步骤(F11)的编码和entern到的源代码。
  3. 如果达不到这一点,添加到BKPT app_wakeup_cb()和运行代码。是否BKPT命中?

谢谢,PM_Dialog

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

嗨PM_Dialog,

感谢您的反馈,

在这里,我跟着,

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

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

4.在app_easy_timer过期5秒之后,BKPT必须命中。——“失败。BKPT没有达到标准。”

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

感谢致敬

Rohit R.

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

嗨,得益于他们,

你可以在user_app_adv_undirect_complete()回调函数的if (status == GAP_ERR_CANCELED)行中添加一个BKPT吗?它打击吗?如果是,请按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也没有击中这里“

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

量静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;在user_config.h文件

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

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

感谢致敬

Rohit R.

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

嗨rohit,

一旦广告停止或取消user_app_adv_undirect_complete()回调函数是越来越触发。这意味着,出事了,当adv_data_update_timer_cb()被触发,广告被停止。能否请您加入到BKPT adv_data_update_timer_cb()?此外,你有启用或禁用看门狗?如果你不添加任何BKPT运行在调试模式下的代码,它卡住地方?它是否会被卡住的说法,你在以前的评论中提到?

谢谢,PM_Dialog

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

嗨PM_Dialog,

如果我能够在use_config.h文件和呼叫arch_set_extended_sleep()函数user_peripheral.c文件中user_app_adv_start EXT_SLEEP如你所说的差异文件或演示文件。

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

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

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

感谢致敬

Rohit R.

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

嗨rohit,

我已经在使用我们的DA14580临DK的SDK ble_app_peripheral例子测试了这个逻辑,我能够周期性地唤醒设备。我将与安装一个差异文件共享。请不要在SDK的ble_app_peripheral例子同样的变化。我的建议是遵循在干净的SDK更改安装并通过SDK提供应该使用的示例。

这的断点,因为BLE_WAKEUP_LP_Handler()需要更长的时间比它应该,所以你的代码进入你之前发布的断言。所述periph_init()函数是从BLE_WAKEUP_LP_Handler()调用唤醒时。因此,也许到periph_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,

非常感谢你的回复,

我按照步骤按照你所共享的差异文件,并有几行代码的其他线路是重叠的,但按我的理解,我所做的更改测试相同。

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

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

" periodic_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.
离线
最后看到:2周前1年
加入:2017-04-20 09:17
嗨PM_Dialog,

嗨PM_Dialog,

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

以下是步骤,

1)评论I2C和Timer 0初始化,所有SPI闪存事务和“更新数据库”来自Periph_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)。然后在哪里初始化这些功能?并且一切都是必要的。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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())” -“执行成功”

而且还初始化所有的I2C,计时器,并在user_app_init()回调函数闪光灯。该代码执行步骤1和步骤2现在。

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

我将测试最终代码和相应的举报你。

感谢致敬

Rohit R.

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

嗨PM_Dialog,

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

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

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

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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,但我无法读取传感器数据。


感谢致敬

Rohit R.

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

嗨PM_Dialog,

步步调试之后,观察到以下点,

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

2)然后,首先注释所有初始化形式的peripher_init()函数。

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

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

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

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

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

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

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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 init和计时器步骤进入和步过 - 执行
4)传感器配置寄存器写入步骤结束,步骤进 - 执行
5)两次唤醒回调函数执行
6)设备停止广告

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

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

让我知道可能是错误的,您对此的反馈。我进一步测试如果有的话我会更新你,但让我知道你对此的看法。

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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扫描仪应用程序试图连接到该设备时,它被连接但一段时间后(10秒约)装置断开

添加一个破发点到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)睡眠模式配置为10秒“意思是你建议配置5秒,我已经配置了10秒”

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

4),但使用BLE扫描仪应用程序试图连接到该设备时,它被连接但一段时间后(10秒约)装置断开

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

感谢致敬

Rohit R.

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

嗨PM_Dialog,

有什么进展吗?

感谢致敬

Rohit R.

PM_Dialog
离线
最后看到:1天16小时前
工作人员"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数据不读书,甚至对其进行初始化按您的建议后。我很困惑什么是错的,我一直包围在user_peripheral.c文件中的每个功能,代码没有任何停止断言警告或任何错误消息。

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

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

你有任何启用I2C,BLE具有休眠功能实现的项目一起,如果是的话,请与我,我会比较这个例子我和检查什么是错的?

感谢致敬

Rohit R.

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

嗨PM_Dialog,

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

1)在测试时,我强制暂停代码,因为设备不是广告,没有来自i2c传感器的数据,然后代码暂停到下面一行从i2c_read_byte()函数,

- “wait_whille_i2c_fifo_is_full(); //等待TX FIFO已满” - 此行代码停止,您可以查看我的代码,什么是问题。

2)下我上面说的线和ADV_UPDATE时间减少到只有100 ms,保持WAKEUP_TIME 5秒然后我看到一些I2C数据但发送数据包在宣传广告就没有更新的数据,所以我再次停顿了一下下面的代码它停止函数的最后一行——“渣打银行——>可控硅& = ~(1 < < 2);“

静态内联void arch_resume_from_sleep(void)

//醒来后的应用程序特定任务
app_sleep_exit_proc();

#如果((EXTERNAL_WAKEUP)&&(!BLE_APP_PRESENT))//外部醒来,只能在外部处理器设计
//禁用外部唤醒中断
ext_wakeup_disable ();
# endif

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

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

感谢致敬

Rohit R.

页面