美文网首页
BLE学习笔记-BLE协议栈

BLE学习笔记-BLE协议栈

作者: xyqd | 来源:发表于2023-04-16 01:31 被阅读0次
BLE协议栈框架图

1. 物理层

  • BLE的物理层定义了如何使用无线电收发器来对数据进行编码和解码,以及其他相关的与无线电相关的参数和属性。

  • BLE工作在2.4 GHz未授权频段,范围为2400 MHz---2483.5 MHz,分为40个通道,每个通道的间距为2 MHz,中心频率为2402MHz-2481MHz

  • BLE调制方式:GFSK

  • BLE定义了几个不同的PHYs:LE 1M 、 LE 2M、LE Coded S2、LE Coded S8。可以使用HCI接口配置。
    几种PHYS的比较如下:


    1681573097855.png
  • BLE 无线电是一种半双工设备,所有的PHYS都使用时分双工(TDD)方案,从而给出了全双工无线电的特性。

  • 最大输出功率应在0.01 mW(- 20 dBm)和100 mW(+20 dBm)之间

  • 接收灵敏度定义为具有特定误码率(BER)的接收机输入功率。指定的误码率根据接收包的长度而变化,因为链路层向每个包添加了单个循环冗余检查(CRC)字段,并将其用作检测解码包中的一个或多个错误位的机制。由于包的长度不同,并且每个包有一个CRC,因此包的长度会影响计算出的误码率。计算方式如下:


    image.png

    应达到的最小值如下:


    image.png

2. 链路层

  链接层是整个协议栈中最复杂最重要的。它定义了通过空中传输的几种类型的数据包和相关的空中接口协议。它的操作服从于一个定义良好的状态机。根据状态的不同,链路层可以以许多完全不同的方式运行,由许多类型的事件驱动。定义了许多影响链接或链接使用参数的状态的控制过程。信道的选择和分类在链路层规范中被定义。

2.1 空中数据包格式

  BLE 链路层定义了两种类型的数据包格式, 其中一种由 LE 1M 和 LE 2M 的PHYS使用,另外一种由LE CODED PHYS使用。


Link layer packet format for the LE uncoded PHYs.png
Link layer packet for the LE Coded PHY.png

这两种数据包类型都包括前导符Preamble、Access Adress和CRC。下面解释下这些字段:

  1. Preamble: 前导码允许接收机精确地同步信号的频率,执行自动增益控制和估计符号定时。
  2. Access Adress:接入地址被接收器用于区分信号和背景噪声,并确定数据包与接收设备的相关性。例如,一对已连接的设备使用相同的随机分配的接入地址交换数据包。未参与连接的设备将忽略这些数据包,因为访问地址不是与它们相关的数据包。类似地,所有传统广播包使用相同的接入地址,值为0x8E89BED6,这表明这些广告包可能被所有设备接收。
  3. CRC: 用于帧错误检测。

   链路层数据包的PDU字段可以包含各种不同的协议数据单元(PDU),这取决于BLE的使用方式。只有在使用AOA或AOD侧向时,才存在CTE扩展字段。
   PDU和CRC字段在传输之前要经过一个称为白化的过程。白化的目的是避免长序列的0或1的数据包,因为这可能导致接收机的频率漂移。在检查CRC之前,接收器逆白化过程以恢复原始比特流。
  PDU字段可以被加密,在这种情况下,它包括一个消息完整性检查字段,以防止PDU被篡改。
   当使用LE Coded PHY时,位流在传输之前需要进行额外的处理,使用前向纠错(FEC)编码器产生额外的数据。这样接收方就可以在某些情况下,利用这些数据来纠正一些不正确值的位的值。

2.2 链路层状态机

链路层的操作可以用具有以下状态的状态机来描述:

  • Standby State:既不传输也不接收数据包的一个状态。
  • Advertising State: 发送广播包,可以接收请求进入Connection State。
  • Scanning State:监听其他设备的广播包。
  • Initiating State: 监听来自特定设备的广播包,并响应这些包来启动与此设备的连接。处于Initiating状态的设备被称为启动器。可以从待机状态进入启动状态。
  • Connection State:与另一台设备的连接状态。当处于连接状态时,将定义两个设备角色Central role 和 Peripheral role。从Initiating状态进入到连接状态的设备称为Central ,从Advertising状态接受请求而进入到连接状态的成为Peripheral。
  • Synchronization State:监听特定设备传输的定期广告。
  • Isochronous Broadcasting State:广播同步数据包。


    链路层状态机的状态图.png

  链路层状态机一次只允许一个状态处于活动状态。链路层应至少具有一个支持广告状态或扫描状态的链路层状态机实例。链接层可以有多个状态机实例。

2.3 空中接口协议

2.4 链路层控制协议

2.5 隐私

3. HCI

  主机控制器接口(HCI)定义了一个标准化的接口,通过该接口,主机可以向控制器发出命令,控制器以事件来回应主机。
  功能接口根据命令和事件定义的。命令由主机发送到控制器,事件从控制器发送到主机。事件可以是对命令的响应,也可以是由未经请求的消息发送的。


HCI

HCI 支持四种传输层:

  1. UART
  2. USB
  3. Secure Digital (SD)
  4. Three-wire UART

下图是几个HCI的例子



主动扫描

4. L2CAP

  逻辑链路控制和适配协议(L2CAP)负责协议多路复用、流控制以及服务数据单元(SDUs)的分段和重新组装。
  L2CAP使用信道的概念来分离在堆栈的各个层之间传递的数据包序列。固定信道不需要设置,可以立即可用,并与特定的更高层协议相关联。也可以动态地创建信道并与相关协议关联。

L2CAP主要功能

4.1 L2CAP和协议多路复用

4.2 L2CAP和流控

4.3 L2CAP 分片和重组

  1. SMP
  2. ATT
  3. GATT
  4. GAP

相关文章

  • 蓝牙4.0BLE中协议栈详解

    蓝牙4.0BLE协议栈介绍 问题:什么是BLE协议栈?BLE协议栈与BLE协议的关系? 顾名思义,人类之间需要一种...

  • nordic的 Softdevice命名规则一

    Softdevice包括两种底层协议栈:BLE和ANT,BLE包括两种角色:central和peripheral,...

  • [转载]BLE开发的各种坑

    这段时间在做低功耗蓝牙(BLE)应用的开发(并不涉及蓝牙协议栈)。总体感觉 Android BLE 还是不太稳定,...

  • BLE开发的各种坑

    这段时间在做低功耗蓝牙(BLE)应用的开发(并不涉及蓝牙协议栈)。总体感觉 Android BLE 还是不太稳定,...

  • 【BLE】Nordic Softdevice命名规则

    Softdevice命名规则一:Softdevice包括两种底层协议栈:BLE和ANT。BLE包括两种角色:cen...

  • Nordic的sdk和蓝牙协议栈的命名规则

    Softdevice命名规则一Softdevice包括两种底层协议栈:BLE和ANT,BLE包括两种角色:cent...

  • BLE 入门 01

    BLE协议栈主要由如下几部分组成: PHY层(Physical layer物理层) PHY层用来指定BLE所用的无...

  • BLE入门03

    虽然BLE空中包(packet)涉及BLE协议栈link layer,L2CAP,SMP和ATT等各层次,但lin...

  • 了解一下BLE协议栈整体架构

    协议栈框架 一般而言,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功...

  • BLE蓝牙协议栈

    小结: BLE协议就是实现低功耗蓝牙协议的代码,实现过程是层层打包。 对于开发而言,只需要知道以下几点: 1.不需...

网友评论

      本文标题:BLE学习笔记-BLE协议栈

      本文链接:https://www.haomeiwen.com/subject/uzgtjdtx.html