930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 25000|回复: 8

在nrf52832上面测,发现连接间隔低于10Ms,发送数据失败,但是蓝牙规范是7.5ms

[复制链接]

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
发表于 2020-9-27 14:32:41 | 显示全部楼层 |阅读模式
在nrf52832上面测,发现连接间隔低于10Ms,发送数据失败,但是蓝牙规范是7.5ms
回复

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-9-27 17:05:40 | 显示全部楼层
连接间隔不适合过低,因为过低可能会导致软件处理不过来。
如果想增加数据传输量(吞吐量),可以设置连接事件保持的时间,然后一个连接事件发送多个包。
回复 支持 反对

使用道具 举报

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
 楼主| 发表于 2020-9-28 11:38:10 | 显示全部楼层
强光手电 发表于 2020-9-27 17:05
连接间隔不适合过低,因为过低可能会导致软件处理不过来。
如果想增加数据传输量(吞吐量),可以设置连接 ...

非常感谢楼主解答。设置连接事件保持的时间是什么意思?比如,我连接间隔设置为100ms,那么这个连接事件保持的时间怎么设置?还有一个连接事件到来,如何发送多个包?
回复 支持 反对

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-9-28 18:00:48 | 显示全部楼层
david 发表于 2020-9-28 11:38
非常感谢楼主解答。设置连接事件保持的时间是什么意思?比如,我连接间隔设置为100ms,那么这个连接事件 ...

连接事件保持时间是通过设置宏定义 NRF_SDH_BLE_GAP_EVENT_LENGTH  的值来设置的,NRF_SDH_BLE_GAP_EVENT_LENGTH  值的单位是1.5ms。
发送多个包就是通过设置这个值来实现的。
回复 支持 反对

使用道具 举报

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
 楼主| 发表于 2020-9-28 18:20:18 | 显示全部楼层
强光手电 发表于 2020-9-28 18:00
连接事件保持时间是通过设置宏定义 NRF_SDH_BLE_GAP_EVENT_LENGTH  的值来设置的,NRF_SDH_BLE_GAP_EVENT ...

我的理解是这样,比如:连接间隔设置为100ms,NRF_SDH_BLE_GAP_EVENT_LENGTH 设置为10,连接时间保持时间是15ms,那么,我3ms发一个包。因此本次连接事件到来,我总共连续发了5个包。不知道这样理解对不对
回复 支持 反对

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-9-30 15:18:47 | 显示全部楼层
david 发表于 2020-9-28 18:20
我的理解是这样,比如:连接间隔设置为100ms,NRF_SDH_BLE_GAP_EVENT_LENGTH 设置为10,连接时间保持时间 ...

就是这样理解的,不过还要考虑软件运算会消耗掉一些时间。
回复 支持 反对

使用道具 举报

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
 楼主| 发表于 2020-9-30 18:11:07 | 显示全部楼层
强光手电 发表于 2020-9-30 15:18
就是这样理解的,不过还要考虑软件运算会消耗掉一些时间。

连接事件保持时间,可以设置为跟连接间隔的时间一样吗
回复 支持 反对

使用道具 举报

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
 楼主| 发表于 2020-9-30 18:28:01 | 显示全部楼层
本帖最后由 david 于 2020-9-30 18:43 编辑
强光手电 发表于 2020-9-30 15:18
就是这样理解的,不过还要考虑软件运算会消耗掉一些时间。

再补一个问题:因为主机发起连接的包是空包,从机怎么知道一个连接事件什么时候到来。因为不知道连接事件的到来,有可能在非连接事件下,连续发送几个包,会造成buffer溢出,也就是丢包
ps:
nordic sdk,如何在一个连接事件中发送多个数据包

回复 支持 反对

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-10-10 11:55:21 | 显示全部楼层
david 发表于 2020-9-30 18:28
再补一个问题:因为主机发起连接的包是空包,从机怎么知道一个连接事件什么时候到来。因为不知道连接事件 ...

从机和主机之间在底层有严格的时间同步,从机根据配置的连接参数可以判断连接间隔的时间。
从机在发送数据(实际是将数据写入到射频FIFO)时,必须通过函数返回值判断操作是否成功,这样就不会造成溢出。
可以延长连接时间保持的时间,从而发送多个包。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-12-4 01:01 , Processed in 0.071702 second(s), 21 queries .

快速回复 返回顶部 返回列表