你好,
我一直在处理DA14583单片机。现在我的定制板准备好了PIR传感器Azoteq (IQS621)单片机。
我所有的功能都工作正常,没有任何问题与DA14583 Azoteq传感器界面的。
现在,我需要做一个睡眠模式配置,自定义设备长时间持续2年的电池寿命。
我用2个AAA电池设备。
我不能配置与中断睡眠模式Azoteq传感器中断每10毫秒单片机的I2C通讯所示的对话框。
所以,任何一个能帮助我如何配置对话框单片机在睡眠模式配置为最长时间和它应该醒来时Azoteq传感器的数据。
同时,我检查Azoteq单片机如何减少当前消费也将真正帮助如果你帮助睡眠模式对话框单片机部分的配置。
感谢和问候
罗希特R
设备:

嗨罗希特,
对不起,现在还不清楚从你的问题,如果你想或不想醒来的外部中断的传感器。
您可以启用睡眠模式并指定一个或多个GPIOs生成一个唤醒(有关详细信息,请参阅SW参考手册醒来计数器)。接近记者项目利用这个唤醒机制。
如果你不想醒来从传感器中断,您必须启用扩展的睡眠和设置一个定时器唤醒设备查询数据从传感器,从而决定是否保持清醒或者回到睡眠。
/ MHv
嗨MHv,
我不想和GPIO中断唤醒设备。随着传感器中断每10毫秒,所以我不能使用这个设备,因为它是醒来一样好设备不仅睡眠状态。我在硬件方面没有任何按钮。
“如果你不想从传感器中断醒来,你就必须使延长睡眠和设置一个定时器唤醒设备查询数据从传感器,从而决定是否保持清醒或者回到睡眠。”
根据你的评论,以下是我的理解如果我错了,请纠正我。
1。我必须用定时器0或定时器1,我不得不开始定时器装置睡觉和醒来在定时器的中断处理程序。[时间留给我来调用处理程序为每个应用程序)
然而,根据上面的理解,我有一些疑虑,我想知道你的建议
1。在当前的固件,我配置定时器0 200毫秒执行其他任务的应用程序。所以我应该使用相同的时间实现唤醒算法按照你的建议或任何其他方式,这样我可以实现电池寿命2年?
感谢和问候
罗希特R
嗨罗希特,
推荐的方法是利用定时器(app_easy_timer)的应用程序。让我们假设你想要醒来,每秒钟查询传感器。这可以通过设置定时器acheieved如下所示:
cb_my_timeout app_easy_timer (100);
第一个参数指定计时器超时后100 * 10 = 1000毫秒= 1 s女士。这个时候回调cb_my_timerout()得到的。在这个回调函数将实现数据和设置定时器的轮询。Se的SW参考手册app_easy_timer的详细信息(提示:很容易使用;o)
你有非常大的电池,所以我希望你可以很容易地acheieve 2年的电池寿命。
/ MHv
嗨MHv,
谢谢你的反馈,
我将实现相同的和送还给你。
感谢和问候
罗希特R
MHv_Dialog感谢你的建议!
嗨Rajapurerohit,
对不起,跳在这个论坛线程。你能请让我们知道如果你需要进一步的支持吗?
谢谢,PM_Dialog
嗨PM_Dialog,
我工作,实现仍未完成。
因为我也平行处理其他任务。所以我没有回答。
我将回到你一旦我完成实现。
谢谢你的理解
罗希特R
嗨Rajapurerohit,
是的,请让我们知道当你进行实现
谢谢,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 ();
如果(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)然后我一直在user_config.h ARCH_SLEEP_OFF
2)与例1相同的步骤。但这一次5秒计时器运行后执行arch_set_extended_sleep()函数和设备停止了广告
3),但回调cb_my_timeout()函数执行所以我不能够看到设备正常醒来,做广告。
不了解是什么问题你能帮助我做错了什么。
如果你引导我开发睡眠模式将对我很有帮助。
感谢和问候
罗希特R
嗨Rajapurerohit,
你能请检查ble_app_sleepmode SDK5.0.4的例子吗?它坐落在项目\ 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应雷竞技安卓下载用程序:
-连接消费者:灯塔、智能标签、远程控制,距离标记,连接手表、手写笔、鼠标、玩具、低功耗传感器、蓝牙勒在“BLE管道”添加到现有的应用程序雷竞技安卓下载
——连接健康:连接注射器,吸入器,葡萄糖显示器、智能贴片,血压米,温度计
-汽车:轮胎压力监测系统和低功率的无线传感器
大的好处DA14531是超低成本和力量!
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你的回应,
我看到了ble_sleep例子,但对我来说是没有用的。因为我没有使用任何外部GPIO醒来设备由于没有GPIO销用于该产品的设计。
在ble_sleep例子,他们醒来设备使用GPIO和不定期。在我的系统,我希望周期性睡眠和醒来的逻辑。
所以请帮助对周期性唤醒和睡眠。
我的设备和功能如下,请找到设备的功能和帮助我如何实现该设备的电池寿命2年。
1)使用IQS621 I2C基地代理传感器与我们的对话框界面的DA14583单片机
2)在这里,我读“RDY”销上的数据。这RDY销IQS621传感器给每10毫秒中断读取数据(触摸、代理和肌萎缩性侧索硬化症)。基本上这RDY销10毫秒中断读取传感器I2C数据窗口。[这RDY打断我不能用于设备从睡眠醒来每10毫秒中断窗口)
3)接下来,如果触摸数据我其他设备发送操作命令,如果检测到任何人的时刻(即。、代理),然后我再次发送操作命令和其他设备。
4)在这里,在阅读PIR(人时刻)我检查ALS数据阈值,如果两者都积极向设备发送操作命令。如果一个人没有那么不发送命令。
5)以上功能是工作和证明。该设备是按预期工作。
6)现在,设备寿命长我的下一步是睡觉mod配置。
我想开发一个睡眠模式配置没有任何GPIO中断。我的最终目的是“检查如果任何数据基数I2C传感器几秒钟(例如2到5秒),那么如果没有数据进入睡眠模式,醒来再一段时间后,检查数据。如果有数据不断保持清醒不要睡觉。这个重复的行动应该发生”
不,我不是开始一个新项目。
这是一个已经使用SDK 5.0.4使用DA14583单片机开发设备。所有的功能是证明和董事会都做好了准备最终部署只有在发展是这个设备的电源管理。所以现在我专注于睡眠模式。
我将检查DA14531 device-related文档理解你共享的目的。
但我需要帮助是SDK 5和DA14583 device-related发展。
我将尝试使用ble_app_sleepmode例子实现睡眠模式和管理设备的睡眠,醒来的算法。任何更新,我将回到你尽快。
感谢和问候
罗希特R
嗨罗希特,
请查收附件diff文件实现周期醒来和睡在ble_app_sleep模式SDK的例子。为了从永久的睡眠模式,使用BLE计时器。在这个演示系统是为5秒然后停止广告的广告和进入睡眠模式。5秒后它会醒来,它将重新启动广告。记住比广告之间的设备进入睡眠模式和连接的间隔。此外,当在睡眠模式下关闭所有外围域。这个简单的示范展示如何使用app_easy_timer () API来唤醒和睡眠。你根据你的项目需求调整它。
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你的更新的例子。
我会通过示例文件但是我不了解这行代码注释和使用。
diff文件不支持所以我有打开记事本+ +,但有些线使得理解混乱。
关闭括号开放括号正在困惑和不理解什么是@@代表,一些线显示+和-之前。
例如,
静态孔隙app_button_press_cb(空白)
+ * /
+静态孔隙app_wakeup_cb(空白)/ /开括号,括号和排除哪一部分
{
——如果(GetBits16 (SYS_STAT_REG, PER_IS_DOWN))
+ periodic_wake_up_timer_used = EASY_TIMER_INVALID_TIMER;
+
+
+如果(GetBits16 (SYS_STAT_REG, PER_IS_DOWN))
{
periph_init ();
}
@@ -239 39 + 245 14 @@静态空白app_button_press_cb(空白)
arch_ble_ext_wakeup_off ();
app_easy_wakeup ();
}
- - - - - -}
- - - - - -
- / * *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * @brief应用唤醒回调函数。北京市在API消息效用。
- * @return无效
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * /
静态孔隙app_wakeup_cb(空白)
- - - - - -{
+
/ /如果没有空闲状态,忽略该消息
如果(ke_state_get (TASK_APP) = = APP_CONNECTABLE)
——{
+ {
user_app_adv_start ();
}
}
对不起,如果可能的话你能共享文件在不同的甲酸可以很容易地能开的和理解这行代码是使用和不使用那就真的帮助我理解和进一步发展。
按我的理解与diff文件共享的你。我试图实现相同的项目文件用户外围. c和. h。请找到相同的txt文件。但广告设备,无法看到它睡5秒,之后醒来。检查这我用BLE_Scaneer移动应用,让我知道,如果我有做错什么配置。
谢谢你的理解
感谢和问候
罗希特R
嗨PM_Dialog,
请尽早让我知道你的反馈。
这对我来说非常紧急。
感谢和问候
罗希特R
嗨Rajapurerohit,
延迟道歉。请查收附件的修改应该做ble_app_sleepmode SDK的例子。请建议步骤试在干净ble_app_sleepmode SDK提供的例子。
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你的更新文件。
现在我能打开文件,我在文件中提到的步骤。
在下面的步骤2我用arch_set_extended_sleep()函数,而不是arch_set_deep_sleep()函数
user_config。h文件enabled ARCH_EXT_SLEEP_ON
/ *第二步:修改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);
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 ();
}
但是一旦设备进入睡眠模式无法唤醒。不理解为什么?
我遵循相同的步骤你提到的文件。
请让我知道我做错了什么步骤2。
感谢和问候
罗希特R
嗨罗希特,
在哪个项目你遵循建议的步骤吗?你能在调试模式下运行它并添加断点的app_wakeup_cb () ?
谢谢,PM_Dialog
嗨PM_Dialog,
我的项目是基于一个ble_peripheral的例子。
我只在调试模式下运行,让断点,但程序不执行app_wakeup_cb()函数。
后user_app_adv_start()函数不执行进一步的功能。
步骤我已经跟着配置睡眠模式
1)user_config。h文件enabled ARCH_EXT_SLEEP_ON
2)之后的睡眠模式配置按照文件共享的你。配置睡在广告和连接
之后一段时间程序陷入rwble。c文件下面的函数,
/ /启动校正
ble_deep_sleep_corr_en_setf (1);
如果((DEVELOPMENT_DEBUG) & & (USE_POWER_OPTIMIZATIONS))
{
slp_period_retained = slp_period;
/ /如果这个断言打那么LP ISR持续更长时间
/ /通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC一直保留。
如果(sleep_lp_cycles & & (sleep_lp_cycles < slp_period))
ASSERT_WARNING (0);- - >在这行代码停止一段时间后rwble。c文件
}
请让我尽快知道你的反馈
感谢和问候
罗希特R
嗨罗希特,
最可能的原因断言是因为LP_Hanlder需要太多时间执行。这种警告意味着更多的时间祝福核心醒得比计算值。sleep_lp_cycles是编程BLE核心睡觉之前睡眠量。slp_period是实际测量睡眠当最终设备醒来。如果实际睡眠大于程序然后你可能会错过一个祝福活动。
这个也可以发生如果设备是醒着的,但是中断是禁用的
请检查如果你手动禁用中断在任何代码的一部分。
因为它是一个自定义代码和自定义,我不能复制或调试。我的建议是使用SDK的ble_app_sleepmode例子和我的建议措施。你能复制吗?
此外,我认为你没有修改任何的SDK文件。
谢谢,PM_Dialog
嗨PM_Dialog,
1)“这也可以发生如果设备禁用中断的清醒,但“——我没有得到这一点
2)“所以,请检查如果你手动禁用中断代码的任何部分。”——不,不是残疾的任何部分
3)“因为它是一个自定义代码和自定义,我不能复制或调试。我的建议是使用SDK的ble_app_sleepmode例子和我的建议措施。你能复制吗?”——好吧,测试app_easy_timer我可以测试ble_sleep例子但我最后的项目是基于ble_peripheral现在我不能改变整个项目ble_sleep例子,现在是生产阶段。所以这对我来说不可能。
——同样,如果需要我可以与你分享我的项目文件请让我知道你的反馈。
4)“另外,我假设您没有修改任何的SDK文件。”- - -不,我没有修改任何SDK文件。
感谢和问候
罗希特R
嗨罗希特,
是的,如果可以请分享您的项目。
谢谢,PM_Dialog
嗨PM_Dialog,
请查收项目但请确保项目应该是私有的。
它应该可以访问你和我,请。
链接-https://drive.google.com/file/d/1J3VK3sf2iF9O180pDlde-w79oyPc9xcJ/view?u..。
我无法上传一个完整项目所以上传在开车。让我知道你是否访问。
感谢和问候
罗希特R
嗨罗希特,
我有请求的访问。
谢谢,PM_DIalog
嗨PM_Dialog,
你现在可以检查。
嗨罗希特,
我已经下载了它,我已经在本地电脑。我将通过代码和让你知道,
谢谢,PM_Dialog
嗨PM_Dialog,
有任何更新吗?
感谢和问候
罗希特R
嗨罗希特,
我的道歉为我的迟回复。我们这线下论坛和我们已经要求我们直接接触你的距离。
谢谢,PM_Dialog
嗨PM_Dialog,
是的,我得到了来自经销商的邮件,发送相同的文件diff文件,同样的步骤,你已经提出。我可以不重复相同的事已经完成了。所以要求你请帮我最早,这对我来说是紧急的解决这个问题。
谢谢你的理解。我期待着得到一个关于这个问题的积极回应。
问候
罗希特R
嗨罗希特,
请按照下面的步骤在您的自定义代码和董事会开始调试它。因为它一个自定义代码,很多东西可能是问题的根源,但我无法调试它,因为它是建立在一个定制的董事会。
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你的反馈,
我在这里,
3所示。在调试——“运行代码跑的代码调试成功”
4所示。5秒后app_easy_timer到期BKPT必须打击。——“失败。BKPT不打线”
从第一天在这里只有我卡住了。
感谢和问候
罗希特R
嗨,得益于他们,
请添加一个BKPT如果(状态= = GAP_ERR_CANCELED)线user_app_adv_undirect_complete()回调函数?它打击吗?如果是,请按F10的代码。这是行为?
谢谢,PM_Dialog
嗨PM_Dialog,
如果保持BKPT(状态= = GAP_ERR_CANCELED)——“行失败,BKPT不打也”
我认为这是由于,我启用了延长睡眠模式
const静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;在user_config。h文件
如果我删除这个然后user_app_adv_undirect_complete()函数执行,否则不是。
这里的问题是什么?它强制一步使延长睡眠模式?但不理解的原因没有执行。
感谢和问候
罗希特R
嗨罗希特,
user_app_adv_undirect_complete()回调函数得到触发广告一旦停止或取消。这意味着有错误,当adv_data_update_timer_cb()触发和广告是停了。请添加一个BKPT成adv_data_update_timer_cb () ?另外,你有监督部门启用或禁用吗?如果你在调试模式下运行代码没有添加任何BKPT,困在任何地方吗?它困在你提到的断言在之前的评论?
谢谢,PM_Dialog
嗨PM_Dialog,
如果我使EXT_SLEEP use_config。h文件and call arch_set_extended_sleep() function in user_app_adv_start inside user_peripheral.c file as you suggested diff file or demo file.
然后user_app_adv_undirect_complete (), adv_data_update_timer_cb()和其他物质不执行。
是的,以上睡眠配置一段时间后,代码被困在断言警告早期的评论中提到。
有关监督机构,我什么都没有改变相关的监管机构。保持,/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/ *让看门狗定时器。* /
/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
#定义CFG_WDOG
感谢和问候
罗希特R
嗨罗希特,
我已经测试了这个逻辑ble_app_peripheral SDK的例子使用我们DA14580 Pro-DK我能够周期性地唤醒设备。我将分享diff文件。请做同样的变化ble_app_peripheral SDK的例子。我的建议是遵循一个干净的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保留。
我检查了periph_init()函数的项目你有寄给我,我看到你有放置的显著延迟系统的代码。你应该删除I2C和初始化定时器0,所有的SPI flash事务和“更新数据库”。
谢谢,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_peripheral_diff文件,没有提到。你能告诉我是否需要?
“我检查了periph_init()函数的项目你有寄给我,我看到你有放置一段代码,显著延迟系统。你应该删除I2C和初始化定时器0,所有的SPI flash事务,和“更新数据库”。”- - -如果我删除这个然后我应该初始化所有这些功能吗?因为这些是必要的,为我的项目”
感谢和问候
罗希特R
嗨PM_Dialog,
我已经修改按照diff文件和我的理解在我最后的代码。
下面是台阶,
1)评论I2C和定时器0初始化,所有的SPI flash事务和“更新数据库”从periph_init初始化函数()函数。
2)配置为每diff文件作为我理解user_config EXT_SLEEP启用。h文件and app_wakeup_cb(), modified user_app_adv_undirect_complete() anduser_app_adv_start() function.
3)保持BKPT联机——“periodic_wake_up_timer_used = app_easy_timer (APP_PERIODIC_WAKE_UP_TO app_wakeup_cb);“- - - - - -“执行成功”
4)保持BKPT联机-“如果(arch_ble_ext_wakeup_get ())”- - - - - -“执行成功”
5)每5秒执行步骤3和步骤4
但是如果取消所有初始化函数(步骤2)再回电话代码不执行(步骤3和步骤4),然后初始化这些函数在哪里?都是必要的。
感谢和问候
罗希特R
嗨罗希特,
请查收附件你应该做的改变。你可以请功能user_app_init()回调函数。我们通常把所有的初始化代码。
谢谢,PM_Dialog
嗨PM_Dialog,
我将文件与文件,都是相同的。我已经按照你的建议配置相同的步骤。
执行,
1)维持BKPT线——“periodic_wake_up_timer_used = app_easy_timer (APP_PERIODIC_WAKE_UP_TO app_wakeup_cb);“- - - - - -“执行成功”
2)保持BKPT联机-“如果(arch_ble_ext_wakeup_get ())”- - - - - -“执行成功”
并初始化所有的i2c、计时器和flash在user_app_init()回调函数。代码执行步骤1和步骤2。
接下来,我将与这些集成测试最终的代码,做端到端测试。
我将测试最终的代码和相应的报告。
感谢和问候
罗希特R
嗨PM_Dialog,
我已经整合所有步骤在最后的代码共享和能够执行两个步骤之前(5秒醒来)。
但是我不能连接设备,无法读取I2C传感器数据。我调试。
与此同时,如果你能告诉我什么是错的我也将调试。
感谢和问候
罗希特R
嗨罗希特,
请添加断点user_app_on_connection(0回调函数代码并试图一步。代码连接后做什么?
谢谢,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联机-“如果(arch_ble_ext_wakeup_get ())”- - - - - -“成功执行x2”
后来代码不执行和设备不是广告
你建议我有初始化i2c,计时器,flash user_app_init()函数,但我无法读取传感器数据。
感谢和问候
罗希特R
嗨PM_Dialog,
一步一步调试后,观察下面点,
1)我已经配置了按你的建议最终代码
2)然后,首先初始化表单periph_init评论()函数。
3),初始化在user_app_init()按照你的建议
4)在调试模式下运行代码只有两次睡眠的步骤执行(上周我写了这些步骤,你仍然没有回复,)和I2C不工作。没有得到值的传感器。
5)再一次,我从user_app_init移除所有的初始化()函数也(I2C、计时器、flash阅读所有函数删除),观察到睡眠的步骤被执行为每个文件共享的你。
我的结论是如果我们删除I2C和其他init函数然后睡眠工作,否则它不会工作。
但我不理解的地方,如何初始化函数呢?
我需要帮助,这迫切失踪我的最后期限。
感谢和问候
罗希特R
嗨Rahu,
请在调试模式下运行代码。你提到没有被执行。
我的问题是:你的代码做什么,因为它不是执行吗?
它是定制设计和基于自定义,所以我无法复制你的任何问题。请在调试模式下运行代码,帮助我理解的行为。
每5秒设备停止广告和进入永久的睡眠模式。
在睡眠模式下,所有的边缘领域,包括I2C,动力下降。此外,该系统将进入睡眠模式广告和连接之间的间隔。所以预计是睡眠模式是否正常工作时没有任何I2C, flash等活动。也许你应该重新初始化这些函数app_wakeup_cb ()。但这是特定于应用程序的。
为了I2C、SPI等活动系统应该在主动模式。
谢谢,PM_Dialog
嗨PM_Dialog,
请找到测试的步骤之后,
例1)
1)睡眠模式配置为10秒
2)只叫I2C user_app_init init函数()函数
3)I2C init踏入一步,执行
4)传感器配置寄存器写步骤,进入-执行
5)两次唤醒执行回调函数
6)设备停止广告
例2)
1)睡眠模式配置,持续10秒
2)称为只计时器user_app_init init函数()函数
3)timer_init()进入和步骤,执行
4)两次唤醒执行回调函数
5)设备停止广告
例3)
1)睡眠模式配置为10秒
2)称为I2C init和计时器功能user_app_init()和唤醒的回调函数
3)I2C init和定时器踏入一步,执行
4)传感器配置寄存器写步骤,进入-执行
5)两次唤醒执行回调函数
6)设备停止广告
例4)
1)睡眠模式配置为10秒
2)评价所有I2C init、定时器函数user_app_init在唤醒()和回调函数
3)两倍多唤醒执行回调函数
4)但是,当使用BLE扫描仪应用程序试图连接到设备,它连接但一段时间后(10秒约)设备断开连接
5)然后设备没有广告(广告停止)
例5)
1)禁用睡眠模式配置
2)初始化I2C,计时器user_app_init()函数
3)设备广告和能够读取传感器数据
4)连接也稳定
让我知道什么是错的,你的反馈。我进一步测试如果我将更新你,但让我知道你的观点。
感谢和问候
罗希特R
因为你停止广告,进入睡眠模式和唤醒。你也可以重新init外设到app_wakeup_cb()回调。
如果我理解正确的话,例1-2-3-5按预期执行。但是你的意思是以下几点:
1)睡眠模式配置为10秒
2)只叫I2C user_app_init init函数()函数
你的意思是,你初始化后的I2C设备醒来?
案例5:
4)但是,当使用BLE扫描仪应用程序试图连接到设备,它连接但一段时间后(10秒约)设备断开连接
添加一个断点user_app_on_connection()和步骤的代码?你任何断言或代码被困在任何地方吗?连接后的代码的行为是什么?也许你应该取消“计时器”,但我不确定我不能复制在我的身边。
谢谢,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(),我有注释的所有其他功能定时器和flash读”
4)但是,当使用BLE扫描仪应用程序试图连接到设备,它连接但一段时间后(10秒约)设备断开连接
添加一个断点user_app_on_connection()和步骤的代码?你任何断言或代码被困在任何地方吗?连接后的代码的行为是什么?也许你应该取消“计时器”,但我不确定我不能复制它在我身边“我做了一步在user_app_connection()函数,没有断言警告,不,代码不困。app_easy_timer取消功能已经出现在连接功能”
感谢和问候
罗希特R
嗨PM_Dialog,
给我任何更新吗?
感谢和问候
罗希特R
嗨罗希特,
我很困惑在代码中发生了什么,因为这是自定义项目/董事会和我不能复制你的任何问题。
在例5中,你提到你禁用睡眠模式。你的意思是周期性的广告吗?
你有WDOG启用或禁用吗?在例1 - 4,代码的行为是什么?你试过添加断点和步骤代码?
谢谢,PM_Dialog
嗨PM_Dialog,
“我非常困惑对正在发生的事情在你的代码中,因为它是自定义项目/董事会和我无法复制你的任何问题。”- - - - - -是的,我同意这是一个定制的项目,但是没有什么新的实现,我们需要使用基于I2C的传感器和定时器和flash存储数据除此之外没有什么。我不理解为什么在睡眠模式I2C数据没有阅读,即使初始化它按照你的建议。我困惑于什么是错误的,我一直在支架在user_peripheral每个函数。c文件,代码没有停止任何断言警告或错误消息。
“在例5中,你提到你禁用睡眠模式。你的意思是周期性的广告?”- - - - - -是的,完全禁用睡眠模式,user_config。h SLEEP_OFF启用和删除app_easy_timer周期性唤醒。
“你有WDOG启用或禁用吗?在例1 - 4,代码的行为是什么?你试着添加断点和步骤代码?”- - - - - -是的,启用WDOG,我没有修改任何SDK文件除了user_提到的文件。
你有没有I2C启用,祝福随着睡眠功能实现的项目,如果是,那么请与我,我将与我的比较这个例子,检查是什么错了吗?
感谢和问候
罗希特R
嗨PM_Dialog,
我观察到了几点,你可以请帮助,
1)测试时我强行暂停代码设备没有广告,没有i2c传感器的数据,然后从i2c_read_byte下面的代码我停下来行()函数,
——“WAIT_WHILE_I2C_FIFO_IS_FULL ();/ /等待如果Tx FIFO充满”——这一行代码停止,请检查我的代码是什么问题。
2)下我上面说的线和ADV_UPDATE时间减少到只有100 ms,保持WAKEUP_TIME 5秒然后我看到一些I2C数据但发送数据包在宣传广告就没有更新的数据,所以我再次停顿了一下下面的代码它停止函数的最后一行——“渣打银行——>可控硅& = ~ (1 < < 2);“
静态内联空白arch_resume_from_sleep(空白)
{
/ /应用特定的任务刚刚醒来
app_sleep_exit_proc ();
#如果((EXTERNAL_WAKEUP) & & (! BLE_APP_PRESENT)) / /外部醒来,只有在外部处理器设计
/ /禁用外部中断唤醒
ext_wakeup_disable ();
# endif
/ /恢复手臂的睡眠模式
/ /重置可控硅[2]= SLEEPDEEP一点别的模式=闲置注射用水将导致深度睡眠
/ /而不是处理器停止
渣打银行- >可控硅& = ~ (1 < < 2);
}
你能解释一下吗我可能是错的。
感谢和问候
罗希特R
页面