BLE上篇

 

最近帮朝歌看了一下连接问题,实际说一下BLE的连接

我们都知道BLE是发空包保持连接的,和Mesh不一样,发的广播是connectable 的广播包,就是可以连接的

搞BLE的话,调试比较常用nrf connect

 

BLE上篇

 

 

会看到发现了很多设备

 

为什么,因为你下拉扫描的时候,nrf connect会找到广播包,然后发scan req 收到scan response 就显示设备

兄弟,就是要找到在哪个通道上

设备广播的时候会 37 38 39通道 去广播,然后有广播间隔 广播时延   广播间隔小的话自然被更容易发现

BLE上篇

BLE上篇

 

,还有一个是scan,scan有interval 和scan window ,当两者相等说明这兄弟在不断scan,这种就是比较干净的环境发现不了设备的情况,一般都经常要发scan req 的,目前我们周边环境充满蓝牙,随便一扫很多共享单车

 

总之就是一个半双工通信,你发完就要进入收的模式

 

 

 

BLE上篇

看到没有,ble设备广播的时候那么多1,28s的间隔,为啥呢?

还有蓝色的时间间隔提醒一下,我是8.9秒之后才按下nrf connect连接的

 

哈哈哈哈,让副会长介绍一下

 

首先空中时间单位是625us,我们叫做slot

 

我们来假设一下,把ble设备比喻成站街女(没有不尊重的意思,我就是不尊重你了你又有能咋的,来咬我啊),还有把

很多手机比喻成街上的路人,还有假设他们用嘴巴说话的时候都听不见,用耳朵听的时候就不能说。

 

开始了,

 

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

.....

突然有个路人问,多少钱多少钱!(手机发scan req  有手机来扫描了)0.5slot

站街女立马回,5块钱,5块钱!(BLE设备回scan response)0.5 slot

 

站街女很开心,感觉有生意了,

用耳朵听1.28s,只要谁答应了,就上(BLE设备发送完scan response之后延长scan时间)2048slot

 

......没有人回

 

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

站街女吆喝,要不要来,要不要来!(向空中发广播)0.8slot

然后站街女用耳朵听!(BLE设备广播完后进入scan)1.2slot

 

.....

突然有个路人问,多少钱多少钱!(手机发scan req  有手机来扫描了)0.5slot

站街女立马回,5块钱,5块钱!(BLE设备回scan response)0.5 slot

 

站街女很开心,感觉有生意了,

用耳朵听1.28s,只要谁答应了,就上(BLE设备发送完scan response之后延长scan时间)2048slot

 

有人回了,我要了!我要了!

(手机发送连接指示 connection indication  packet 

    并约定Transmit Window Size  3.75ms,Transmit Window Offset   5 ms 呼叫带走站街女)0.8slot

 

站街女明白了,用耳朵听8.75ms(BLE设备等待发送连接指示的手机来连接)最大14slot

 

最后,站街女用耳朵听8.75ms期间,路人呼叫上,带走!其他路人再无法联系(一对一连接)internal 78slot

 

如下图

BLE上篇

 

 

6.46ms就是设备等待手机来连接的连接窗口,连上之后,就是每间隔48.75ms就必须通信一次,没有数据,都要发空包,

用空包保持连接,连接间隔可以由Master去update(master控制LLCP链路)

 

至此连接OK,这就是BLE连接之前的一段流程

 

很多人误以为scan req就是发连接的时候,不是的,真正的是在 connection indication  packet (就是路人发送指示 带站街女去干各种事情的时候)