文章目录

  • 1、BLE 协议栈的结构和配置(应用层,Host 主协议层,Controller 控制层)
  • 2、BLE 物理层(PHY)
  • 3、拓扑结构(星型拓扑)
  • 4、设备状态(Master,Slave;Standby,Advertiser,Scanner,Initiator)
  • 5、BLE 连接状态流程图
  • 6、广播事件(Advertising)
  • 7、广播间隔(advInterval,Advertising Interval)
  • 8、扫描事件(Scan)
  • 9、发起连接(Initiate)
  • 10、连接参数(跳频增量,连接间隔,监督超时)
  • 11、连接事件(Connection Event)
  • 12、从机潜伏(Slave Latency)
  • 13、连接参数的设定(Connection Parameter)
  • 14、终止连接




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

1、协议栈有两部分组成:Controller 和 Host

2、Profiles和应用总是基于GAP和GATT之上

3、在单芯片方案中,Controller 和 Host,Profiles和应用层都在同一片芯片中

samba的协议栈 协议栈配置_协议栈


2、BLE 物理层(PHY)

1、RF规格特性

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

2、物理层可以和经典蓝牙RF,组合成双模设备

3、2MHz间隙,能更好地防止 相邻频道的干扰

samba的协议栈 协议栈配置_BLE_02



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 连接状态流程图

samba的协议栈 协议栈配置_数据_03


6、广播事件(Advertising)

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

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

3、在一次广播事件中,广播包 会分别在三个广播信道37/38/39)中,被发送一次

samba的协议栈 协议栈配置_数据_04


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

1、广播间隔,是两次广播事件之间的最小时间间隔

2、广播间隔是 0.625ms 的倍数,取值范围在 20ms~10.24s 之间

3、链路层 会在每次广播事件期间,产生一个随机广播延时 时间(0~10ms),这个延时被加在 广播间隔中,这样来避免 多设备之间的数据碰撞

samba的协议栈 协议栈配置_数据_05



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、即使一个 连接事件 发生(或两者),双方都没有数据发送 (例外情况是 从机潜伏 使能) 。

这允许两个设备都承认对方仍然存在,并保持活跃的连接。

samba的协议栈 协议栈配置_数据_06


12、从机潜伏(Slave Latency)

1、潜伏(Latency): Slave 如果没有 数据发送,允许跳过连接事件

2、连接参数中的 Slave 的 潜伏值 ,是允许从机跳过的最大连接次数

3、在连接事件中,如果 Slave 没有对 Master 的包做出回应, Master 将会在后来的连接事件中重复发送,直到 Slave 回应

4、两个有效的连接事件之间的最大时间跨度(假设 Slave跳过了最大数目的连接事件跳过了最大数目的连接事件),称为“有效连接间隔”

5、从机的潜伏值范围是 0~499 ,但是有效的连接间隔必须 小于32.0s(监督超时时间:supervisionTimeout)

samba的协议栈 协议栈配置_samba的协议栈_07


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. 如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播,扫描或者待机模式。