目录
经典蓝牙 | 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的连接事件时序(下图)