BLE 协议栈(Master,Slave;Standby,Advertiser,Scanner,Initiator;连接流程,连接参数)



1、BLE 协议栈的结构和配置(应用层,Host 主协议层,Controller 控制层)

1、协议栈有两部分组成:Controller 和 Host
2、Profiles和应用总是基于GAP和GATT之上
3、在单芯片方案中,Controller 和 Host,Profiles和应用层都在同一片芯片中
在这里插入图片描述

2、BLE 物理层(PHY)

1、RF规格特性

  1. 运行在2.4GHz ISM 频段
  2. GFSK 调制方式(高斯频移键控)
  3. 40个2MHz的通信间隙(其中,BLE有3个固定的广播信道(37/38/39),37个自适应自动跳频 数据信道

2、物理层可以和经典蓝牙RF,组合成双模设备
3、2MHz间隙,能更好地防止 相邻频道的干扰
在这里插入图片描述


3、拓扑结构(星型拓扑)

BLE是一种星型拓扑结构:

  1. 主设备(Master)管理着连接,并且可以连接多个从设备(Slave)
  2. 一个从设备(Slave)只能连接一个主设备(Master)

4、设备状态(Master,Slave;Standby,Advertiser,Scanner,Initiator)

作为一个BLE设备,有6种可能的状态:

序号可能的状态描述
1待机状态(Standby)设备没有传输和发送数据,并且没有连接到任何设备
2广播状态(Advertising)周期性 广播状态
3扫描状态(Scanning)主动地寻求 正在广播的设备
4发起连接状态(Initiating)主动向某个设备 发起连接
5主设备(Master)作为主设备,连接到其他设备
6从设备(Slave)作为从设备,连接到其他设备

5、BLE 连接状态流程图

在这里插入图片描述

6、广播事件(Advertising)

1、广播包的发送是单向的,不需要任何连接
2、设备发送广播包,进入广播状态

  1. 广播包 可以包含特定的数据定义,最大31个字节
  2. 广播包 可以直接指向某个特定的设备,也可以不指定
  3. 广播包 可以声明是 可被连接的设备,或者是不可连接的设备

3、在一次广播事件中,广播包 会分别在三个广播信道37/38/39)中,被发送一次
在这里插入图片描述

7、广播间隔(advInterval,Advertising Interval)

1、广播间隔,是两次广播事件之间的最小时间间隔
2、广播间隔是 0.625ms 的倍数,取值范围在 20ms~10.24s 之间
3、链路层 会在每次广播事件期间,产生一个随机广播延时 时间(0~10ms),这个延时被加在 广播间隔中,这样来避免 多设备之间的数据碰撞
在这里插入图片描述


8、扫描事件(Scan)

1、每次扫描设备打开Radio接收器去监听广播设备,称为一个扫描事件
2、扫描事件交替发生在三个特点的广播信道中:37/38/39
3、扫描频宽比(Duty Cycle),关于扫描的两个时间参数:

  1. 扫描间隔:扫描设备的扫描频度
  2. 扫描窗口:每次扫描事件持续时间

9、发起连接(Initiate)

1、除了扫描,设备也可以主动发起连接
2、发起状态的设备 和 扫描状态的设备,区别在于:
当它监听到一个可连接的广播,发起设备会发送一个连接请求,而扫描设备会发送一个扫描请求
3、连接请求包括一套为从机准备的连接参数,安排连接事件发生的信道和时间
4、如果广播设备接收了连接,两个设备就进入连接状态,发起方称为Master,广播方称为 Slave


10、连接参数(跳频增量,连接间隔,监督超时)

序号可能的状态描述
1信道映射指示 连接使用的频道
2跳频增量一个5~16之间的随机数,参与信道选择的算法
3连接间隔(connInterval)1.25ms 的倍数,7.5ms~4.0s 之间(对应数值 6~3200)
4监督超时(supervisionTimeout )10ms的倍数,100ms~32.0s之间,必须大于(1+slaveLatency)* connInterval
5从机潜伏(slaveLatency)0~499之间,不能超过((supervisionTimeout / connInterval) - 1)

11、连接事件(Connection Event)

1、所有的通信 都发生在 两个设备的连接事件期间
2、连接事件周期地发生,按照 连接参数指定的间隔(interval)
3、每个事件发生在某个数据信道(0~36),跳频增量参数 决定了下次连接事件发生的信道
4、在每个连接事件期间, Master 先发送, Slave 会在150us 之后做出回应
5、即使一个 连接事件 发生(或两者),双方都没有数据发送 (例外情况是 从机潜伏 使能) 。
这允许两个设备都承认对方仍然存在,并保持活跃的连接。
在这里插入图片描述

12、从机潜伏(Slave Latency)

1、潜伏(Latency): Slave 如果没有 数据发送,允许跳过连接事件
2、连接参数中的 Slave 的 潜伏值 ,是允许从机跳过的最大连接次数
3、在连接事件中,如果 Slave 没有对 Master 的包做出回应, Master 将会在后来的连接事件中重复发送,直到 Slave 回应
4、两个有效的连接事件之间的最大时间跨度(假设 Slave跳过了最大数目的连接事件跳过了最大数目的连接事件),称为“有效连接间隔”
5、从机的潜伏值范围是 0~499 ,但是有效的连接间隔必须 小于32.0s(监督超时时间:supervisionTimeout)
在这里插入图片描述

13、连接参数的设定(Connection Parameter)

1、短间隔的连接事件:

  1. 主从机 都会以高能耗运行
  2. 高数据吞吐量
  3. 发送 等待时间短

2、长间隔的连接事件:

  1. 主从机 都会以低能耗运行
  2. 低数据吞吐量
  3. 发送 等待时间长

3、低或者0 潜伏值:

  1. 从机 以高能耗运行
  2. 从机 可以快速收到来自主机的数据

4、高潜伏值:

  1. 从机 在没有数据发送的情况下,可以低功耗运行
  2. 从机 无法及时收到 来自主机的数据
  3. 主机 能及时收到 来自从机的数据

14、终止连接

1、Master 和 Slave 都可以 主动 断开连接

  1. 一边发起断开,另一边必须在在断开连接之前,回应这个断开请求

2、监视超时 而断开连接

  1. 监视超时 参数指定了两个数据包之间的 最大时间跨度
  2. 监视超时 时间必须 大于有效连接间隔,而且小于 32.0s
  3. Slave and Master 双方都维持着自己的监视超时计时器,在每次收到数据包时 清零 。
  4. 如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播,扫描或者待机模式。
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值