文章目录
- 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和应用层都在同一片芯片中
2、BLE 物理层(PHY)
1、RF规格特性
- 运行在2.4GHz ISM 频段
- GFSK 调制方式(高斯频移键控)
- 40个2MHz的通信间隙(其中,BLE有3个固定的广播信道(37/38/39),37个自适应自动跳频 数据信道)
2、物理层可以和经典蓝牙RF,组合成双模设备
3、2MHz间隙,能更好地防止 相邻频道的干扰
3、拓扑结构(星型拓扑)
BLE是一种星型拓扑结构:
- 主设备(Master)管理着连接,并且可以连接多个从设备(Slave)
- 一个从设备(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、设备发送广播包,进入广播状态
- 广播包 可以包含特定的数据定义,最大31个字节
- 广播包 可以直接指向某个特定的设备,也可以不指定
- 广播包 可以声明是 可被连接的设备,或者是不可连接的设备
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),关于扫描的两个时间参数:
- 扫描间隔:扫描设备的扫描频度
- 扫描窗口:每次扫描事件 的持续时间
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、短间隔的连接事件:
- 主从机 都会以高能耗运行
- 高数据吞吐量
- 发送 等待时间短
2、长间隔的连接事件:
- 主从机 都会以低能耗运行
- 低数据吞吐量
- 发送 等待时间长
3、低或者0 潜伏值:
- 从机 以高能耗运行
- 从机 可以快速收到来自主机的数据
4、高潜伏值:
- 从机 在没有数据发送的情况下,可以低功耗运行
- 从机 无法及时收到 来自主机的数据
- 主机 能及时收到 来自从机的数据
14、终止连接
1、Master 和 Slave 都可以 主动 断开连接
- 一边发起断开,另一边必须在在断开连接之前,回应这个断开请求
2、监视超时 而断开连接
- 监视超时 参数指定了两个数据包之间的 最大时间跨度
- 监视超时 时间必须 大于有效连接间隔,而且小于 32.0s
- Slave and Master 双方都维持着自己的监视超时计时器,在每次收到数据包时 清零 。
- 如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播,扫描或者待机模式。