目录
1 BLE的优点和局限性
1.1 BLE与经典蓝牙的区别
1.2 局限性
1.2.1 数据吞吐量
1.2.2 范围
1.3 BLE优势及应用
1.4 BLE的角色
1.5 BLE的层次结构
1.5.1 物理层(PHY)
1.5.2 链路层
1.5.2.1 数据包格式
1.5.2.2 状态机
1.5.2.3 设备地址
1.5.2.4 Filter Accept List
1.5.2.5 Connection Subrating
经典蓝牙 | BLE |
主要用于流媒体应用(音频,文件等) | 主要用于传感器数据,设备控制,低带宽应用 |
操作79个信道 | 操作40个信道 |
在32个信道进行搜索 | 在3个信道进行搜索,比经典蓝牙更快的发现设备和连接 |
BLE 4.2及前期版本支持1Mbps,蓝牙5之后根据使用的模式和PHY最大支持2Mbps。
影响数据吞吐的因素:
ble被设计为短距离应用,因此操作范围有限,影响操作范围的因素:
BLE优势:
BLE的应用:
不适合ble的应用场景:
Central(中央设备)
发现并监听其他正在进行广播的设备,可以建立和周边设备的连接,通常可以同时连接多个周边设备。
Peripheral(周边设备)
通过发送广播来宣布自己的存在,如果是可连接广播可以接受中央设备的连接请求。
BLE设备的类型
ble有4中类型的设备
Broadcaster | Peripheral | Central | Observer |
无射频接收器 | 需要射频接收器和发射器 | 需要射频接收器和发射器 | 无射频发送器 |
数据单向传输 | 数据双向传输 | 数据双向传输 | 数据单向传输 |
缩减的硬件及软件 | 完善的软件栈 | 完善的软件栈 | 缩减的硬件及软件栈 |
频段
用于调制/解调的无线电硬件,工作在2.4G频段,划分为40个信道,信道带宽2MHZ。
37,38,39为主广播信道,其余37个信道用于次广播信道和连接期间的数据传输。
调制方式
BLE的调制方式为Gaussian Frequency Shift Keying (GFSK 高斯频移键控)
取所选信道的中心频率,向上移动一个指定的量表示1,向下移动相同的量表示0,然后对信号采用高斯滤波以降低频率突变的噪音。
BLE定义了3种PHY类型:
3种PHY的比较:
1M | Coded s=2 | Coded s=8 | 2M | |
符号率 | 1Ms/s | 1Ms/s | 1Ms/s | 2Ms/s |
协议数据速率(Protocol Data Rate) | 1Mb/s | 500kb/s | 125kb/s | 2Mb/s |
应用数据速率 | 800kb/s | 400kb/s | 100kb/s | 1400kb/s |
错误检测 | CRC | CRC | CRC | CRC |
错误校正 | NONE | FEC | FEC | NONE |
通讯范围 | 1 | 2 | 4 | 0.8 |
要求 | 必选 | 可选 | 可选 | 可选 |
分时
BLE的射频是半双工设备,不能同时进行发送和接收,所有的PHY都采用时分双工(TDD)的方案,从而表现为一个全双工类型的设备。
定义数据包类型,管理射频的状态,信道的选择,数据校验,加密,随机数生成等。
链路层定义了2种数据包类型:用于uncoded PHY的数据包和用于coded PHY的数据包
LE coded PHY数据包格式:
Preamble:
前导码主要用于让接收机精确的同步信号频率,就是在发送有效数据之前提醒接收机注意接收,以免丢失有用信号;进行自动增益控制(AGC:automatic gain control)。
ble preamble就是一个固定长度的01序列组成,不同的PHY长度不同:
Access address:
因为无线通信中存在噪音干扰和其他的链路干扰,接入地址就是被接收器用于识别信号和背景噪音。
接入地址长度为32位,有2种类型:
PDU:
上层传给链路层的数据。
有3种类型:
CRC:
循环冗余检查用于错误检查,通过PDU进行计算得出
PDU和CRC字段在传输前需要进行白化,避免数据包中的0或1的长序列引起接收机的频率锁漂移,在接收机CRC校验之前需要进行逆白化。
CTE:
在使用AOA/AOD测向时才会用到,本章不进行扩展。
FEC block1和FEC block2:
向前纠错编码是专门针对coded PHY的,FEC block1包含接入地址,Coding Indicator(CI),TERM1。
FEC block1使用s=8的编码方式
Coding Indicator:
用来指示FEC block2的编码方式
FEC使用卷积编码方式:
TERM1和TERM2:
每个FEC块的结束符,长度为3位。
链路层状态:
BLE设备通过设备地址和地址类型区分设备,长度48位,设备地址相同但是地址类型不同认为是不同的设备。
有公共地址和随机地址2种:
公共地址:和经典蓝牙类似,需要向IEEE申请。
随机地址:包含静态地址和私有地址
静态地址:
每个上电周期开始时生成静态地址,一旦生成不能改变,知道上电周期结束。
静态地址随机部分不能全部为0也不能全部为1 。
一旦静态地址改变原来保存的连接信息将失效。
私有地址:有可解析私有地址和不可解析私有地址2种类型
不可解析私有地址
可解析私有地址
系统会定期更改可解析私有地址,Core spec建议15分钟。
在进行配对时会交换IRK,IRK会用来解析可解析的私有地址。
这个就是原来的白名单机制,Core spec 5.3中White List修改为Filter Accept List。此列表可以填充Host有兴趣接受数据包的设备的地址。
链路层通过对端设备的地址进行过滤,控制上传给HOST的数据包数量,丢弃那些没有传给Host的数据包。
链路层定义了一系列的过滤策略,所有的过滤策略应当使用相同的Filter Accept List。
subrated connection 与non-subrated connection相比使用连接事件的特定子集,即使连接间隔很短也能够实现叫低的占空比,并且能够更快速的从低占空比切换到高占空比。
上图展示了从长连接间隔修改为短连接间隔,提高占空比的流程。完成本次连接间隔的修改至少需要6个连接事件来处理,会导致更长的延时。例如:把连接间隔由1秒修改为100ms,就需要6秒来完成这个动作。在对时间比较敏感的应用中这个延迟可能无法容忍。
subrated connection连接定义了多个连续的连接事件,只有其中一个是active状态,subrated connection event并不一定是连接事件序列中的第一个,可以通过subrate base event来指定。
subrate factor = 5,subrate base event = 2,latency = 0的连接事件时序(下图)
continuation number = 1时连接事件时序(下图)
continuation number = 2时连接事件时序(下图)
peripheral latency = 1,subrate factor = 3,continuation = 0的连接事件时序(下图)
peripheral latency = 1,subrate factor = 3,continuation = 1的连接事件时序(下图)