BLE连接参数设置要点

IOS对连接参数要求
苹果手机对connection interval的要求, 其实还有其他的连接参数要求, 比如slave latency, supervision timeout, 如果不满足这些, IOS设备会拒绝.

    ● Interval Max * (Slave Latency + 1) ≤ 2 seconds
    ● Interval Min ≥ 20 ms
    ● Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4  //这个是这样么???
    ● connSupervisionTimeout ≤ 6 seconds
    ● Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout
android手机其中的 Slave Latency 范围为0 - 499,超时为32S,故为了兼容两个手机,可将Slave Latency的值设置的较小一点,这个Slave Latency表示潜伏期,即每次连接事件时当主机向设备发送数据包后,设备若无有效数据包回应,则可以最大跳过Slave Latency个数据包不应答,而在第Slave Latency个数据包时应答,这样就可以节省功耗,但如果设备有数据包要应答,则当接收到主机传来的连接包后,会立即将数据包发送出去,而不必等到第Slave Latency个数据包时应答,这样可加快应答的速度,但主机每次发送有效数据包后,若从机接收到数据包后没有有效的数据包要应答,则会跳过Slave Latency个数据时再应答,而主机在剩下的这几个连接事件中会继续发送这个数据包,只到从机应答了才会发送下一个有效数据包,这样就导致了整体的接收主机的数据传输效率降低了,但功耗也降低了,相当于从机虽然在链路层接收到了主机的有效数据包,但并不会去唤醒从机应答,而只到潜伏期到后才会唤醒从机,这时从机才会去处理接收到的有效数据包,然后发送应答,可以是空包也可以是其它的有效数据包(可以这样做,主机每发送一个有效数据包,若从机都立即应答一个空包,这样可刺激主机继续发送下一个有效数据包,若从机不应答,则主机就会继续发送这个有效数据包,一直等到应答为止,因为它不知道从机端有没有接收到该数据包,等潜伏期到后从机应答了,然后主机才会再发送下一个有效数据包)。而超时时间是指,如果主机在连接事件发了空包,但确没有接收到从机的应答包,这样一旦超过了超时时间就会认为连接已断开,发送超时断开事件,因此这里的超时时间必须要大于潜伏周期,否则还没等到潜伏时间到就断开了。

附上详细的介绍:

在一个连接当中,主设备会在每个连接事件里向从设备发送数据包。一个连接事件是指主设备和从设备之间相互发送数据包的过程。连接事件的进行始终位于一个频率,每个数据包会在上个数据包发完之后等待 150μs 再发送。

连接间隔决定了主设备与从设备的交互间隔;它是指两个连续的连接事件开始处的时间距离,可以是7.5ms ~ 4s内的任意值,但必须为 1.25ms 的整数倍。要确定从设备与主设备的实际交互间隔,需要用到从设备延迟这一参数,代表从设备在必须侦听之前可以忽略多少个连接事件。

如下图所示,连接事件被一个个的连接间隔分开。从主设备发送数据包开始,每个连接事件可以持续进行,直至主设备或从设备停止响应。在连接事件之外,主从设备之间不发送任何数据包。

举个例子,如果连接间隔为 100ms,从设备延迟是 9,那么从设备可以忽略 9 个链接事件,但不得不侦听第 10 个连接事件。换言之,从设备必须每秒侦听一次,而此时监控超时的最小值应为 1010ms。反过来,另一个极端的例子是,如果监控超时使用了 32s 的最大值,对于间隔为 100ms 的链路,从设备延时必须小于等于 319。

虽然如此,如果将从设备延迟设为可行的最大值,在监控超时发生前从设备只能获得唯一一次侦听主设备的机会,这可不是一个好主意。因此,建议至少给从设备留出 6 次侦听的机会。在前面的例子中,如果连接间隔为 100ms ,从设备延迟为 9,那么监控超时应该至少为 6s,这样一来,链路在最终断开前从设备至少会有 6 次侦听的机会。

连接参数介绍


主设备和从设备建立连接之后,所有的数据通信都是在连接事件(Connection Events)中进行的。

尖刺的波就是连接事件(Connection events),剩下的Sleeping是睡眠时间,设备在建立连接之后的大多数时间都是处于Sleeping,这种情况下耗电量比较低,而在连接事件(Connection events)中,耗电量就相对高很多,这也是BLE为什么省电的原因之一。

每个连接事件(Connection events)中,都需要由Master发起包,再由Slave回复。

Master即主机,简称M;Slave即从机,简称S。抓包过程中看到的M->S或者S->M即主机到从机或者从机到主机。

连接参数 (Connection Parameters):

通过修改下面三个参数,就可以设置BLE连接过程中的传输速度和功耗。


1.Connection Interval(连接间隔)

Connection Interval(GAPROLE_MIN_CONN_INTERVAL && GAPROLE_MAX_CONN_INTERVAL)连接间隔,在BLE的两个设备的连接中使用跳频机制。两个设备使用特定的信道发送和接收数据,然后过一段时间后再使用新的信道(BLE协议栈的链路层处理信道的切换)。两个设备在切换信道后发送和接收数据称为一个连接事件。尽管没有应用数据被发送和接收,两个设备仍旧会交换链路层数据(空包 Empty PDU)来维持连接。

 

这个连接间隔就是指在一个连接事件(Connection events)的开始到下一个连接事件(Connection events)的开始的时间间隔。连接间隔以1.25ms为单元,连接间隔的范围是6 ~ 3200既7.5ms ~ 4s之间。

2.Slave Latency(从设备延迟或者从设备时延)

允许Slave(从设备)在没有数据要发的情况下,跳过一定数目的连接事件(Connection events),在这些连接事件(Connection events)中不必回复Master(主设备)的包,这样就能更加省电。

范围可以是0 ~ 499

 

更详细的使用解析如下:

Slave Latency = OFF也就是Slave Latency为0时,Master发包,Slave必须回复,如果不回复,Master就会认为Slave那边接收不正常。

Slave Latency = ON也就是Slave Latency不为0的时候,图中Slave Latency为 3。Master发包,Slave没有数据要回复的时候,就会忽略 3 个连接事件,在第 4 个连接事件接收到Master发送的数据之后,回复Master。如果Slave有数据要发送就会唤醒,也就是说即使Slave Latency为 3,但是在Master发第二包的时候Slave有数据要回复,这个时候就会立即回复Master而不是等到 3 个连接事件之后的第 4 个连接事件去回复。


3.Supervision Timeout(超时时间或者监控超时)

这个参数设定了一个超时时间,如果BLE在这个时间内没有发生通信的话,就会自动断开。

单位是 10ms,该变量的范围是10 ~ 3200,折算成时间范围是100ms ~ 32s 。

 

连接间隔、从机时延以及超时时间这三者必须满足如下公式:

Supervision Timeout  > (1 +slaveLatency)* (connectionInterval)

上述公式必须满足,否则连接就会不正常断开。

 

 

这三个连接参数不同情况下对通信速率和功耗的影响:

1.Connection Interval缩短,Master和Slave通信更加频繁,提高数据吞吐速度,缩短了数据发送的时间,当然也增加了功耗。

2.Connection Interval增长,通信频率降低,数据吞吐速度降低,增加了数据发送的时间,当然,这种设置降低了功耗。

3.Slave Latency减少或者设置为 0,每次Connection Events中都需要回复Master的包,功耗会上升,数据发送速度会提高。

4.Slave Latency加长,功耗下降,数据发送速度降低。

 

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值