DA14580
附加模拟传感器和EEPROM的基本开发工具包
SDK 5.0.3.
你好,对话,
我正在继续研究一个基于ble_app_peripheral示例的应用程序。我一直在使用通过外部事件唤醒的延长睡眠模式(如按下按钮),一切都运行得很好。我想改变睡眠配置,以允许广告运行在一个缓慢的速率(1秒)与延长睡眠之间的广告间隔没有一个唤醒按钮。初始设置完成这似乎是工作,但时间连接是非常缓慢的......10, 20, 30秒或没有连接没有重新扫描。我假设这是因为DA 14580正在休眠,并且错过了来自我的Android平板电脑的连接请求。你知道我在DA14580方面可以做些什么来改善连接时间吗?我希望一个连接请求将被捡起,而BLE收音机在1秒的广告间隔期间是打开的,但这显然不是在一个合理的时间内发生的。
谢谢,最大
设备:
嗨max44,
为了连接实际上,您需要两个广告evens,一个用于中央的广告活动,以便了解并报告某人在用户或设备开始连接过程和第二次广告时的广告对于外围设备,以查看中央的连接请求。因此,当您有大广告间隔时,您还将有缓慢的连接时间。
谢谢mt_dialog.
是的,但是,你期望几秒钟连接超过10秒。我开始在Android方面寻找别的东西,发现那里有一些设置会有所帮助。对于任何感兴趣的其他人来说,简要说明。
Android Connectgatt方法:
BluetoothGatt Connectgatt(上下文上下文,
布尔自动连接,
BluetoothGattCallback回调)
默认为在我的应用程序中自动连接为true。从在线研究中,我读到自动连接参数调用后台进程,同时将此设置为false提供更快的直接连接。它使我的连接时间明显更快地使用假设置。通过在断开连接时重新启动广告,如果应用程序仍在运行,我也不希望自动连接重新启动连接。
问候,最大
嗨max44,
因为您有1秒的间隔,这意味着在最坏的情况下您将有2秒的连接时间,假设您在扫描时丢失了第一个广告间隔。获得额外时间的原因,我认为是由于空中交通,我认为要么外设没有立即从中央获得连接请求,或者中央没有从外设获得广告事件,以发送连接请求。
谢谢mt_dialog.
将AutoConnect设置为True时,设备地址将放在控制器的白色列表上,并启动与非常低的职责的连接,如2-5%,这意味着它与它将捕获一个广告数据包的概率相同。常见值为30 ms扫描窗口,扫描间隔为1280 ms,用于连接尝试。因此,预期连接时间约为30秒的结果。
将AutoConnect设置为False时,它会暂时中止所有尚未建立的自动连接,并开始专门连接到此设备,该设备具有约50%的占空比,这应该意味着您的设备将平均连接两秒钟。此模式具有超时但为30秒。它不应重复使用更长的时间,不仅是因为它限制了手机上所有应用的待处理到1的待定数量,还因为它因无线电只能收听蓝牙或WiFi而降低了WiFi性能给定的时间时刻。
这两种模式都只需要一个广告数据包来连接,而不是两个,假设应用程序已经知道它想要连接到哪个设备。
Joacimwe,
谢谢(你的)信息。很有意思!并且比我在Android开发人员页面上看到的更有用细节。我所拥有的应用只是为了工程和发展,因此您上面提到的限制并不重要。
很高兴再次收到你的来信。正如您可能会记得的那样,您可以帮助我追溯到一些数据传输。我最近一直在查看将连接间隔切换到快速间隔,只需为数据传输,通常会使电池漏极减少速度速度速度。几年前,我看到你也在看这一点。你觉得这一切了吗?我在SDK中找到了以下例程,我尝试过,它似乎很好地(在UM-B-051中简要介绍)。如果你有任何其他指针,请告诉我。
/ **
****************************************************************************************
* @brief更新参数操作。
* @param [in] connection_idx连接的ID。
* @param[in] latency以连接事件周期为单位测量的从端时延。
* @param [in] intv_min新的首选最小连接间隔在1.25 ms插槽中测量。
* @param[in] intv_max新的首选最大连接间隔,以1.25 ms插槽测量。
* @param [in] connection_event_len_min新的首选最小连接事件长度
*在1.25毫秒的插槽中测量。
* @param [in] connection_event_len_max新的首选最大连接事件长度
*在1.25毫秒的插槽中测量。
* @return void.
****************************************************************************************
* /
__INLINE void app_param_update_op(uint8_t connection_idx, uint16_t intv_min, uint16_t intv_max, uint16_t latency,\
UINT16_T SUPPITION_TIME_OUT,UINT16_T CONNECTION_EVENT_LEN_MIN,\
uint16_t connection_event_len_max)
谢谢,最大