BLE 4.2数据包长度扩展?

14个职位/ 0个新职位
最后一篇
MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
BLE 4.2数据包长度扩展?

嗨对话框,

我知道你已经说过“简而言之,DA1458X现在正式被称为BT 4.2设备,而无需支持可选功能。”但它并不清楚我是251字节的BLE PDU扩展被视为可选功能。如果它在SDK 5.0.3中得到支持,则需要一些配置吗?

我确实阅读了使用gatt_exc_mtu_cmd的帖子来定义一个较大的mtu,我正在调查一下。

谢谢,最大

设备:
mt_dialog.
离线
最后见到:3个月2天前
工作人员
加入:2015-06-08 11:34
嗨max44,

嗨max44,

4.2的新功能将LE的链路层PDU从27到251字节的有效载荷扩展,这是580不支持的,因为它是一个4.2可选功能。选择较大的MTU时,您不会更改LE的PDU,但上层的缩放性,在L2CAP上方接受较大的有效载荷,发送数据包的实际有效载荷保持不变。

谢谢mt_dialog.

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
MT,

MT,

好的,谢谢。

正如您可能从以前的问题猜到,我正在尝试发送记录到EEPROM的一些传感器数据。我想发送EEPROM数据的页面(256字节)。我尝试使用在BLE_APP_PERITWAL中设置20个字节的数据的自定义特征来发送单个读取的单个页面,并且需要几乎1秒钟即可完成。

我不确定是否创建具有较大数量的字节并增加MTU值的特征,将导致更快的数据传输。你认为它会有所帮助吗?

问候,最大

Joacimwe.
离线
最后见到:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
你应该做的是使用

您应该在没有响应而不是用响应写入时使用写入,以便能够在一个连接事件中发送多个20个字节数据包。这将为您提供与增加MTU相同的表​​现。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
Joacimwe,

Joacimwe,

感谢您的输入,我的数据流是从DA到Android平板电脑/手机,读取数据存储在连接到DA14580的EEPROM中。我已经研究了对数据读取的通知,但从最近与MT_Dialog讨论的讨论没有任何反馈,平板电脑/电话已读取和存储数据。我担心这可能导致数据丢失,如果我刚刚将数据推入数据特征,所以我实现了作为确认的流量控制特性。当然,这会增加BLE开销并进一步减慢数据传输。如果您知道处理此操作的一些更好的技术,请告诉我。现在,我计划查看数据特征中的字节数....如果似乎没有多大,可能会增加MTU值。这是我的新领域,所以我正在采取较小的步骤。

问候,最大

Joacimwe.
离线
最后见到:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
我知道了。我以为你是

我知道了。我以为你是在另一个方向写数据。

如果您只需用通知推动数据(一个接一个地发送它们并等待GattC_CMP_EVT发送下一个),那么它们将以最大速度顺序发送,并且由于链接层等待的链路层没有数据包将被丢弃为了确认在发送下一个数据包之前。

Android也以这样的方式建立,即它永远不会丢弃传入通知,但是以正确的顺序向所有侦听特性的应用程序转发它们。

唯一可能发生的是连接丢失的是,意味着传输中止,但仍然以正确的顺序接收所有接收的通知。这里最简单的方式是重新启动一切。

如果你想让外围设备知道Android设备已经收到了所有的通知,只需在任何特征上写一些值来表明这一点。您不需要确认中间包,只需要确认最后一个包。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
谢谢!我会给它一个

谢谢!我会试一试。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
不幸的是,我不是

不幸的是,我不是为了工作。我修改了DA代码以向数据特征添加通知属性,并看到它正在按预期推出数据。然而,Android结束不起作用。我无法启用通知,在此过程中获取写入声明错误。我陷入了困境。

我正在运行三星Galaxy标签,带Android 6.0.1的平板电脑。测试应用程序是由蓝牙开发者工作室生成的,并且很简单。每个自定义特征(仅从BLE_APP_PERITITALLS SDK示例略微修改)有用于写入,读取的按钮,用于为特性定义的内容。所以....我可以扫描,连接和读写其他特征,但是当我单击按钮时,在数据特性上启用通知时,它会导致写入声明错误(通过Android Studio的调试模式)。应用程序中的BLE代码能够启用通知的通知几乎与Android开发人员举例相同.....所以我不明白为什么它不按照广告工作。错误消息不是任何帮助....状态代码129。

如果您知道任何纠正此错误的微妙事情,请告诉我。我认为这里不适合进入详细的android讨论,但如果您希望脱机讨论,我可以发布电子邮件地址。我见过大量关于三星版棉花糖的在线,所以也许我在它中遇到了不起作用的东西。我没有另一个Android设备尝试,但可以考虑在三星平板电脑上备份到Android 5。

Joacimwe.
离线
最后见到:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
你是如何启用的

您是如何在DA14580方面启用通知的?您都需要设置ATT权限,并在GATT特性声明中设置一点。还必须存在客户端特征配置描述符。

最简单的是遵循具有通知特性的现有示例代码。

在Android方面,您需要写入描述符并在本地注册通知。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
好决定!我回去了

好决定!我回去了,发现了我的user_custs_config.h文件中的一些错误。我在建议时遵循了一个现有的实例,但它是表示属性的。我错过了编辑所有地点来改变它以通知。

我现在能够在Android侧成功编写描述符,至少启用通知。我有一点工作要做,看看我是否可以在我的测试用例中完成数据转移,但会报告。

谢谢你继续帮助。非常感谢。

最大

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
Joacimwe,

Joacimwe,

在纠正启用通知问题后,我的测试用例发送了200个字节(连续10个连续读取的20字节)。我在Android平板电脑上测量了30毫秒,从WRITE命令开始响应时启动将数据发送到从存储在平板电脑上的数组中存储的DA中获取所有200个字节。

这是一个巨大的改进!再次感谢您的指导。

我要看看我是否可以将测试扩展到1KB传输。你知道是否有限制我可以以这种方式流流的限制?我的EEPROM是一个2 Mbit,我也计划用作启动内存。我可能有大约230KB的记录数据发送。

最佳,最大

Joacimwe.
离线
最后见到:6个月前1年
格鲁鲁
加入:2014-01-14 06:45
我猜BLE吞吐量是

我猜BLE吞吐量小于EEPROM,因此EEPROM不是瓶颈。

提示是降低连接间隔(查找连接参数更新请求)以更快地发送数据。否则没有限制你可以据我所知划分多少。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
我的数据速度掉了下来

我的数据速率随着1kb块,820毫秒略有下降。转移时间。我相当确定这不是由于我在运行测试之前将数据读取到一个大型数组时,但我会检查它。我想这可能是由于你提到的连接间隔?在DA侧,我在user_config中看到了有连接间隔值,它看起来为10 msec min和20 msec max。如果它们是默认连接参数,则此显示。我尝试更改user_config.h中的值。如果我设置为10毫秒,事情会停止工作。如果我将最大值设置为11.25,我只会获得稍微更好的转移时间,791毫秒。似乎也在测试的迭代中变化。

在连接时,我看到了Android Studio调试器报告:OnClientConnParamsChanged() - 设备= 80:EA:CA:00:00:03间隔= 9状态= 0

我认为DA14580根据评论,为1.25毫秒的增量设置间隔,所以9将是11.25毫秒?

并且在20毫秒的最大间隔我得到:OnClientConnParamsChanged() - 设备= 80:EA:CA:00:00:03间隔= 15状态= 0 15 x 1.25 = 18.75

所以看来我可以稍微调整一些东西,但没有大大改进。

MAX44
离线
最后见到:10个月2天前
加入:2016-02-08 15:58
我意识到我正在使用时间

我意识到我在da上使用时间来编写UART上的调试消息。我配置了所有这些,关闭了开发调试模式。现在,连接间隔最大设置为11.25毫秒如上所述,我将获得161毫秒的转移时间,每个分组为20字节为20个字节。这很好!

主题锁定