你好,
我正在研究DA14583睡眠配置。
对于我的自定义代码开发,我使用了一个ble_app_peripheral SDK示例,并根据我的需求进行了所需的更改。没有睡眠配置和持续的广告,我的功能得到了验证。
我已配置设备在延长睡眠模式和唤醒使用传感器引脚信号低中断。为此,我遵循ble_app_sleepmode SDK示例进行睡眠配置。
在广告期间,我让设备处于延长睡眠模式。(即,在函数user_app_adv_start())和唤醒使用传感器引脚低检测和开始再次广告。
下面的细节,
1)广告时间间隔为2秒。
2) # define APP_PARAM_UPDATE_REQUEST_TO (50)
/*发布数据更新定时器*/
#定义APP_ADV_DATA_UPDATE_TO (50)
要求,
-我必须连接到设备和分配一些设置。
-我想发送控制数据包到另一个设备(几乎我有50个数据包,我需要发送到另一个设备)。我正在使用一个更新制造商函数来这样做。
在睡眠模式整合到代码中之前,我使用了设备的连续广告,在那里我能够发送所有的数据包与制作缓慢的广告间隔。
但现在我已经合并了睡眠和唤醒调用使用中断的逻辑变化。通过上面的详细配置,我试图发送数据,但只有一个数据包被发送到另一个设备,并在广告期间坚持。我无法向设备发送其他数据包,所以请帮助我如何实现在设备从睡眠中醒来时发送50个数据包。
请尽早帮助我。
感谢和问候
罗希特R
设备:
嗨罗希特,
你说50包是什么意思?请澄清它,并提供一个BLE嗅探捕获,以便我们可以了解正在发生的空气。请检查设备是否正在发布广告,并提供smartnippets工具箱的功率分析器的屏幕截图。
您提到只有在使用延长睡眠模式时才会出现这个问题。你是否使用任何外围块(I2C, SPI ec) ?如果是,所有外围区域在任何睡眠模式下都被关闭。
谢谢,PM_Dialog
嗨PM_Dialog,
50个数据包意味着我一个接一个的数据包发送到另一个设备,数据包包含其他设备的BDA,它的控制值除了这个没有别的。[例如在mnf_data_update()函数中,我正在向另一个设备发送- "80EACA0101017F"数据包]。
是的,我有使用I2C的外围设备块,定时器,我很清楚外围设备不能在睡眠中工作,我知道我在那部分管理的一切。
我告诉睡眠配置我已经在我的自定义代码中引用了ble_app_sleepmode的例子,它工作得很好,没有问题。
我的问题是,从睡眠中醒来后如何发送数据包到另一个设备?以及如何在连接设备时保持清醒?(意味着我想当设备POR做它应该保持清醒的一段时间,直到有中断睡觉)-我在等待这个回复。
谢谢你的理解
罗希特R
嗨PM_Dialog,
关于之前的问题有什么更新吗?
感谢和问候
罗希特R
嗨罗希特,
>>>我的问题是,从睡眠中唤醒后如何发送数据包到另一个设备?
你能解释一下你想完成什么吗?它是可连接的,还是不可连接的应用程序?您可以将数据放入广告或扫描响应数据,或通过通知/指示将它们发送给对等设备。
>>>以及如何在连接设备时保持清醒?
如果您正在使用任何睡眠配置设置,设备将通过连接间隔之间的BLE定时器自动唤醒。如果没有使用睡眠模式,设备将始终唤醒。
>>>的意思是我想当设备POR发生时,它应该保持清醒一段时间,然后进入睡眠,直到出现中断
芯片是在广告时还是连接时?
谢谢,PM_Dialog
嗨PM_Dialog,
谢谢你的回复,
你能解释一下你想完成什么吗?它是可连接的,还是不可连接的应用程序?您可以将数据放入广告或扫描响应数据,或通过通知/指示将它们发送给对等设备。
-我的设备是一个基于传感器的光控设备,这个设备是电池供电的,应该在尽可能低的功耗下工作。我的设备应该是一个连接基础,它应该通过广告数据包发送数据。我想通过一个特征连接和分配一些设置,并使用mnf_data_update()发布控制数据(向另一个设备发送数据包)。
>>如果你使用任何睡眠配置设置,设备将通过连接间隔之间的BLE定时器自动唤醒。如果没有使用睡眠模式,设备将始终唤醒。
-我参考了ble_app_sleepmode()的睡眠配置示例。在发布user_app_adv_start()函数时调用arch_set_extended_sleep()。并利用传感器引脚信号进行低中断检测并启动广告
>>>的意思是我想当设备POR它应该保持清醒一段时间,然后进入睡眠,除非有中断,当芯片是广告或当它连接?
-当POR完成后,保持清醒几秒钟,然后去睡觉。如果用户试图连接,然后保持清醒,并保持唤醒状态,直到和除非设备断开连接的应用程序。它也应该唤醒中断(传感器引脚信号低中断检测和开始广告)发送所有的数据包,一旦数据包再次返回睡眠。
感谢和问候
罗希特R
嗨PM_Dialog,
对我之前的问题有任何更新吗?
感谢和问候
罗希特R
嗨罗希特,
在我们所有的SDK示例中,设备开始通告是默认的。这是由用户决定的,如果芯片运行在睡眠或活动模式。如果配置为睡眠模式,那么它将在广告或连接间隔之间休眠,并通过BLE定时器唤醒。
你提到过:当POR完成后,保持清醒几秒钟,然后睡觉。
你的意思是这个设备会在不睡觉的情况下开始打广告吗?如果是,您应该更改app_default_sleep_mode变量。当它进入睡眠状态时,你的意思是你想停止广告而进入延长睡眠模式吗?
谢谢,PM_Dialog
嗨PM_Dialog,
请您先理解我的申请,然后再帮助我更好的处理这件事,
我的应用程序为我的设备:我想要一个基于BLE外设的应用程序与睡眠模式启用。我的设备是一种基于事件的传感器主机,传感器被编程在这样一种方式,它中断(这个中断只是事件)的对话MCU每当有一些数据可用的MCU。
请注意传感器是基于I2C的。
每当MCU被中断时,它应该从睡眠中醒来,并检查来自传感器的I2C上的任何数据。如果是,则通过广告发送控制报文。
这些广告包中的节点收集的范围(网络)和反应分别我也为用户提供连接设备用户提供改变传感器参数/读取设备状态,这是由用户通过交换数据连接模式的特点。
就像我之前说的,我的服务器主机是电池供电的,它必须以尽可能少的电力消耗工作,所以我使用睡眠模式。而且,我知道在睡眠中所有外围设备都会关闭。
现在,对于这个应用程序设计,我引用了“ble_app_sleepmode”示例来在中断时进入睡眠和唤醒。我的应用程序,我设置设备在广告期间睡眠和唤醒中断。醒来后,我再次启用了我的外围设备(I2C和定时器,我在项目中使用)。
简而言之,我的设备应该像下面提到的那样工作,
1)当启动upstart广告数秒(例如15秒或30秒)后,停止广告并将设备发送到睡眠模式。
2)现在设备只有在传感器中断时才会醒来,
3)如果MCU中断,唤醒,然后检查I2C数据,重新开始广告几秒(15 ~ 30秒)。这里,当发布I2C数据时,如果I2C数据有效,则更新发布包中的用户字节。
4)现在只要有这样的唤醒周期,用户就可以连接到设备。此外,如果建立了连接,那么设备应该保持唤醒状态,直到断开。
5)如果没有连接请求则进入睡眠状态(延长睡眠意味着停止广告)
6)如果没有中断,那么设备应该始终处于睡眠状态(没有广告)。
但是,我正面临以下问题,请您帮我诊断并解决这些问题。
1)当我在广告期间将设备设置为延长睡眠模式时(因为我正在使用DA14583),无法连接设备。
-对此,我的问题是如何获得最大的时间来连接我的应用程序到设备?
2)醒来后,我如前所述,我想发送控制节点数据包在广告字符串。我只能发送1个包,但不是所有的包(正如我在之前的帖子中解释我的包)
-对此,我的问题是,在唤醒后,我如何可以发送我的所有节点的数据包在一个镜头和数据包完成后设备应该再次进入延长睡眠?
感谢和问候
罗希特R
嗨罗希特,
谢谢,PM_Dialog