蓝牙协议栈----Host层
- 蓝牙物理层基本信息
- 链路层的状态机
- 进入连接态的步骤
- 主动扫描与被动扫描
- 链路层通信模式
- 蓝牙地址
- 蓝牙设备地址
- 蓝牙标识地址
- 蓝牙接入地址
- 蓝牙广播信道管理
- 蓝牙数据信道跳频
蓝牙协议栈Host层包括PHY、LL、HCL层,注重关注PHY物理层和LL链路层。
蓝牙物理层基本信息
► 蓝牙使用高斯频移键控GFSK
► 频率范围2.4000 GHz - 2.4835GHz,又划分为40个channel,
► 第一个通道的中心频率是2402MHz,最后一个通道的中心频率是2480MHz
► 有效频率偏移为:±185kHz
LE 物理层的四种工作模式:
- LE 1M sym/s:三种模式,非编码模式,S=2映射编码模式,S=8映射编码模式。
- LE 2M sym/s:1种模式, 非编码模式。
2M因为传输速率更快,所以具有更低的功耗
1Mcode因为由编码传递适用FEC纠错码,所以具有更远的连接距离
物理层 | 调制方式 | 符号速率 | 信息速率 | 通信距离数 |
---|---|---|---|---|
LE 1M PHY | 1M sym/s | 1Mb/s | 1Mb/s | 1 |
LE CodedPHY S=2 | 1M sym/s | 1Mb/s | 500kb/s | 2 |
LE CodedPHY S=8 | 1M sym/s | 1Mb/s | 125kb/s | 4 |
LE 2M PHY | 1M sym/s | 2Mb/s | 2Mb/s | 0.8 |
链路层的状态机
- Standby State(就绪态):设备上电后,设备处于就绪态
- advertising State(广播态):设备进行广播数据和扫描响应数据发送。广播态在链路层有两种变化:广播态设备停止广播进入就绪态。广播态的设备收到发连接请求后进入连接态。
- Scanning(扫描态):设备监听哪些设备正在广播,扫描态的设备停止扫描进入就绪态。
- Initiating(发起态):设备处于发起态进而发起连接,处于发起态的发起者,收到想连接设备的广播报文,链路层会向其发起连接请求并进入连接态,广播者也进入了连接态
- Connection(连接态):主设备从发起态进入连接态,从设备从广播态进入连接态。
进入连接态的步骤
广播态不断发送广播
扫描态扫描到广播进入就绪态,再由就绪态进入发起态
发起态进入连接态;广播态进入连接态
主动扫描与被动扫描
- 主动扫描:广播态设备接收了广播报文后,发送扫描请求给广播设备,并接收广播设备的扫描响应数据。
- 被动扫描:广播态设备仅侦听正在广播的设备,并接收其发送的广播报文。
链路层通信模式
- Advertiser — Scanner:广播者与扫描者之间通过广播信道传输数据,是一种一对多的通信方式,进行广播者到扫描者的单方向通信。
- Master/Central — Slave/Peripheral:主从设备通过数据信道传输数据,是一种一对一的通信方式,没对主从机进行各自的双向通信。
蓝牙地址
蓝牙设备地址 | Device Addres |
蓝牙标识地址 | Identity Address |
蓝牙接入地址 | Access address |
蓝牙设备地址
设备地址Device Addres为48bit有两大类公共地址、随机设备地址,一共有四种:
1.公共地址
公共设备地址创建时需要获得IEEE分配的MAC地址块
2.随机设备地址
随机静态地址:电源重启后设备赋予新的静态地址值
可解析的私有地址:为生成可解析私有地址设备必须有本地身份解析码(IRK)或对等身份解析码(IRK)。
可解析私有地址通过IRK和随机产生的24位随机数来生成。可解析私有地址的随机数被称为prand值。
一端通过IRK和Prand生成Hash,Prand和Hash做为可解析的私有地址发送;
发送另一端用接收到的Prand和使用的IRK计算得到Hash,与接收到的Hash比较,相同代表识别成功。
不可解析的私有地址
私有地址是实现蓝牙设备隐私(Privacy)的技术基础
蓝牙标识地址
► 如果一个设备仅支持public address, 那么该public address 可以作为这个设备的indentify address,在配对过程中使用
► 如果一个设备支持random static address,同样可以作为indentify address使用
► 如果一个设备使用的是resolvable private address,通过IRK解析之后的地址,是indentify addres
蓝牙接入地址
32Bit,用于标识一个蓝牙通信事件
蓝牙广播信道管理
BLE有12个channel与wifi的常用信道不重合,其中37,38,39用于广播,所有BLE设备共用这三个信道广播
► 每包广播数据,都会在37、38、39三个信道上依次发送一次。
► 广播信道的随机延时:每一个广播包实际发送的广播间隔,会+10ms以内的随机延时,避免和其他设备产生冲撞。
► 广播信道不允许发送超过37字节的数据。
►广播信道不支持5.0协议的2M PHY的传输速率。
蓝牙数据信道跳频
信道地图:
信道评估依靠RSSI(接收信号强度指示)和PER(分组错误率)对每一个物理信道的可用性进行分类标注为可用或不可用。对于标注为不可用的物理信道在跳频时不予选用。信道地图由低功耗蓝牙连接中的中心设备绘制并提供给与其相连接的周边设备。
跳频公式:
f(n+1)=(fn+hop)mod37
fn:为上一次连接事件使用的信道索引(初始时此值为0);
f(n+1):为首次计算的下一次连接事件使用的信道索引;
hop:为跳频参数值,取值范围为5到16,由中心设备决定并在发起连接时通知与其连接的周边设备
CSA#1:
► 根据跳频算法计算后当f_(n+1) 为信道地图中的可用信道时直接使用
► 当f_(n+1) 为信道地图中的不可用信道时则重新计算。
○ 重新计算算法: f_new= f_(n+1) mod N,
f_new 为重新计算得到的信道地图索引所对应的信道 (信道地图中的可用信道从0开始升序编号)
N:指信道地图中可用信道数量。
CSA#2:跳频阶跃hop不是固定的。
hop每次计算的目的是:每个连接事件与先前的连接事件相比发生在最小频率偏移,避免干扰和多路径衰落效应。
跳频#1只适用于连接信道,跳频#2可以用在广播信道和连接信道。
自适应跳频AFH:允许蓝牙通过识别固定的干扰源并将其从可用信道列表中排除来适应环境。
信道地图重新获取,需要传递的参数:
新的信道图:channel Map
瞬时:设备双方使用新的channel Map的切换时间。