BLE技术是BluetoothSIG规定的一套通信协议,在协议变成具体的代码之前,都只存在文档中,TI、Nordic、CSR等厂商,根据SIG发布的BLE技术协议,配合自身的芯片开发了一整套源码,并且这套源码经过了SIG的测试,服务BLE协议。这套源码就叫做协议栈,协议栈是协议的实现。不同的芯片厂商都有各自的协议栈,而这不同的协议栈,BluetoothSIG是不允许厂商开源的,所以,无论是TI的或者NORDIC的BLE芯片资料中协议栈都是做成库的形式提供,只开放部分的API层,但实际对我们开发终端产品来说足以。
BLE协议栈的构成
控制器部分(Controller):
物理层(PHY):RF特性,运行在2.4GHz ISM band,40频道2MHz的通道间隙,3个广播通道,37个自适应自动调频通道;
链路层(LL):RF控制层,控制芯片工作在
Standby 准备
Advertising 广播
Scanning 监听
Initiating 发起连接
Connected 已连接
这五个状态中的一种;
控制接口层(HCI):通信层,在Host和Controller之间提供一个标准化的接口,该层可以由软件api实现或者使用硬件接口uart,spi,usb来控制;
主机部分(Host):
逻辑链路控制及自适应协议层(L2CAP):相当于快递,将数据打包;
安全管理层(SM层):安全服务层,提供配对和秘钥的分发,实现安全连接和数据交换;
属性协议层(ATT):允许设备向另外一个设备展示一块特定的数据,称之为“属性”,展示“属性”的设备称为服务器,与之配对的设备成为客户端;链路层状态(主机从机)与设备的ATT角色是相互独立的;
通用访问配置文件层(GAP):
通用属性配置文件层(GATT):定义了使用ATT的服务框架,规定了配置文件profile的结构;
BLE广播事件:
在一个广播事件中,广播包会分别在三个广播通道中被发送一次(37,38,39);
BLE广播间隔:
是指两次广播事件之间的最小时间间隔,一般取值范围在20ms-10.24S之间,链路层会在每次广播时间期间产生一个随机广播延时时间(0ms-10ms)
BLE扫描事件:
每次扫描设备打开Radio接收器去监听广播设备,这样称为一个扫描事件,
扫描频宽比,Duty-Cycle,参数:
扫描时间:扫描设备的扫描频度;
扫描窗口:每次扫描事件持续的时间;
BLE发起连接:
发送一个连接请求,连接请求包括一套为从设备准备的连接参数,安排连接期间发生的通道和时间。如果广播设备接收了连接,两个设备会进入连接状态,发起方会称为Master(主机),而广播方会称为Slave(从机)。
BLE连接参数:
通道映射,指示连接使用的频道。
调频增量,一个5~16之间的随机,参与通道选择的算法。
连接间隔,1.25ms的倍数,在7.5ms~4s之间。
监督超时,10ms的倍数,100ms~32s之间,必须大于(1+slaveLatency)*ConnInterval
从机潜伏,允许设备跳过的最大连接次数,0~499之间,有效的连接间隔必须小于32s,不能超过(SupervisionTimeout/connInterval)-1
BLE连接事件:
所有的通信都发生在两个设备的连接事件期间;
连接事件周期的发生,按照连接参数指定的间隔联系 (连接间隔)
每个事件发生在某个数据通道(0~36) (通道映射)
调频增量参数决定了下次连接时间发生的通道 (调频增量)
在每个连接时间期间,Master先发送,Slave会在150us之后做出回应,即使一个连接事件发生(或两者),双方都没有数据发送(例外情况是从设备潜伏使能),这允许两个设备都承认对方仍然存在并保持活跃的连接;
从机的潜伏:
潜伏,Slave如果没有数据发送,允许跳过连接事件。
连接参数的设定:
☆短间隔的连接事件:
-两设备都会以高能耗运行
-高数据吞吐量
-发送等待时间短
☆长间隔的连接事件:
-两设备都会以低能耗运行
-低数据吞吐量
-发送等待时间长
☆低或者0潜伏值:
-从设备以高能耗运行
-从设备可以快速的收到来自中心设备的数据
☆高潜伏值:
-外围设备在没有数据发送的情况下可以低能耗运行
-外围设备无法及时收到来自中心设备的数据
-中心设备能及时收到来自外围设备的数据
终止连接:
监视超时参数都指定了两个数据包之间的最大时间跨度。监视超时时间必须大于有效连接间隔而小于32s。Slave和master双方都维持着自己的监视超时计时器,在每次收到数据包时清零。如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播、扫描或者待机模式。