BLE低功耗蓝牙协议栈结构

Bluetooth Core(Stack)蓝牙核心协议,内容是蓝牙核心技术的描述和规范,只提供基础的机制。

蓝牙核心协议由Controller和Host两部分组成,在一个系统中,Host只有一个,但Controller可以有多个,如:单独的LE Controller;单独的BR/EDR Controller;单独的LE+BR/EDR Controller;在单独的BR/EDR Controller或LE+BR/EDR Controller基础上,增加一个或多个额外的AMP Controller。

分层介绍

1. Controller

Controller实现射频相关的模拟和数字部分,完成最基本的数据发送和接收,Controller对外接口是天线,对内接口是主机控制器接口HCI(Hostcontroller interface);
控制器包含物理层PHY(physicallayer),链路层LL(linker layer),直接测试模式DTM(Direct Test mode)以及主机控制器接口HCI。

1.1. Physical Layer物理层

主要内容有:频率选择(2402-2480MHz)、信道选择(40个) 、 信道间隔(2MHz) 、调制方式(GFSK) 、数据传输速率(1Mbps)、接收灵敏度 、 发射功率、 杂散辐射、射频容差。
  (1)信道选择:物理信道(Physical Channel)为:F=2402+k*2MHz ,k=0,…,39,共40个信道。
  (Physical Channel = RF Channel)

1.2. Link Layer链路层

主要内容有:信道分类(3广播+37数据)、广播信道定义(37、38、39) 、数据通道分发(跳频) 、状态角色定义和切换 、数据包校验重传。

(LL – Link Layer – Logic Link)

(1)广播信道定义
  37ch —— 2402MHz
  38ch —— 2426MHz
  39ch —— 2480MHz

之所以选定3个广播信道是一种权衡,少了可能会被阻塞,多了会增加功耗。3个广播信道刚好避开了WiFi的1ch,6ch,11ch,所以BLE广播的时候,不会被WiFi影响。(PS:可以人为阻塞这三个通道)

(2)数据信道切换
  BLE匹配之后,LL由广播信道切换到数据信道,具体使用哪个数据信道在匹配时约定,且连接不会长期使用一个固定通道,会通过跳频技术随机有规律切换。
  
  (3)状态和角色定义
  ●Standby状态是初始状态,即不发送数据,也不接收数据。根据上层实体的命令(如位于host软件中GAP),可由其它任何一种状态进入,也可以切换到除Connection状态外的任意一种状态。
  ●Advertising广播状态是可以通过广播通道发送数据的状态,由Standby状态进入。它广播的数据可以由处于Scanning或者Initiating状态的实体接收。上层实体可通过命令将Advertising状态切换回Standby状态。另外,连接成功后,也可切换为Connection状态。
  ●Scanning扫描状态是可以通过广播通道接收数据的状态,由Standby状态进入。根据Advertiser所广播的数据的类型,有些Scanner还可以主动向Advertiser请求一些额外数据。上层实体可通过命令将Scanning状态切换回Standby状态。
  ●Initiating发起状态和Scanning状态类似,不过是一种特殊的接收状态,由Standby状态进入,只能接收Advertiser广播的connectable的数据,并在接收到数据后,立刻发送连接请求,以便和Advertiser建立连接。当连接成功后,Initiater和对应的Advertiser都会切换到Connection状态。
  ●Connection连接状态是和某个实体建立了单独通道的状态,在通道建立之后,由Initiating或者Advertising自动切换而来。通道断开后,会重新回到Standby状态。
通道建立后(通常说“已连接”),处于Connection状态的双方,分别有两种角色Master和Slave:
  Initiater发起方称作Master。
  Advertiser广播方称作Slave。
  
(4)Air Interface Protocol空中接口
  解决两个问题:不同实体间在对应状态下的数据交换,根据上层实体的指令以及实际情况负责状态之间的切换。

定义Physical Channel上收发的数据包格式:Preamble(1 octet)+ Access Address(4 octets)+ PDU(2 to 257 octets)+CRC(3 octets)。

●定义不同类型的PDU及其格式:
  Advertising channel中Advertising有关的PDU
  Advertising channel中Scanning有关的PDU
  Advertising channel中Initialing有关的PDU
  Data channel中LL data有关的PDU
  Data channel中LL control有关的PDU
  ●针对广播通道以白名单(White List)的形式定义Link Layer的数据过滤机制。
  ●执行广播通道上实际的packet收发操作。
  ●定义连接建立的方式及过之后的应答、流控等机制。

(5)Link Layer Control链路控制
  抽象出来一个链路控制协议(Link Layer Control),用于管理、控制两个Link Layer实体之间所建立的这个Connection,主要功能包括:
  更新Connection相关的参数,如transmitWindowSize、transmitWindowOffset、connInterval等等(具体意义这里不再详述);
  更新该连接所使用的跳频图谱(使用哪些Physical Channels);
  执行链路加密(Encryption)有关的过程。

2. HCI主机控制器接口

(1)HCI作用
  定义Host和Controller(通常是CPU与射频芯片)之间的通信协议,对理解蓝牙协议来说,是无关紧要的。向上为主机提供软件应用程序接口(API)。

(2)HCI内容
  HCI逻辑上定义一系列的命令,事件
  物理上有UART,SDIO,USB,SPI接口
  实际可能包含里面的任意1种或几种。常见RF测试时,我们常使用UART发送标准的HCI指令控制Controller。

3. Host

主机host是蓝牙协议栈的核心部分,GAP层负责制定设备工作的角色,SS层负责指定安全连接,Logic Link层功能非常强大,官方作用为协议/通道的多路复用,负责上层应用数据(L2CAPService DataUnits,SDUs)的分割(和重组),生成协议数据单元(L2CAP Packet DataUnits,PDUs),以满足用户数据传输对延时的要求,并便于后续的重传、流控等机制的实现。

3.1. L2CAP

提供数据封装服务,将LL提供的Logical Channel换分为一个个的L2CAP Channel,以便提供应用程序级别的通道复用。

逻辑连接控制和适配协议,Logic Link Control and Adaptation Protocol。
  Protocol/channel multiplexing,协议/通道的多路复用。
  Segmentation分段 and reassembly重组,上层应用数据(L2CAPService Data Units,SDUs)的分割(和重组),生成协议数据单元(L2CAP Packet Data Units,PDUs),以满足用户数据传输对延时的要求,并便于后续的重传、流控等机制的实现。
  Flow control per L2CAPchannel,基于L2CAPChannel的流控机制。
  Error control and retransmissions,错误控制和重传机制。
  Support for Streaming,支持流式传输(如音频、视频等,不需要重传或者只需要有限重传)。
  Fragmentation and Recombination,协议数据单元(PDUs)的分片(和重组),生成符合Link Layer传输要求的数据片(长度不超过251,具体可参考5.4.1中有关的介绍)。
  Quality of Service,QoS的支持。

Protocol/channel multiplexing:
  channel multiplexing(基于通道的多路复用)—— CID,Channel ID。
  Protocol multiplexing(基于协议的多路复用)——只允许在BR/EDR controller中使用。

3.2. ATT(Attribute Protocol)

负责数据检索

对上文的总结:Physical Layer负责提供一系列的Physical Channel;基于这些Physical Channel,Link Layer可在两个设备之间建立用于点对点通信的Logical Channel;而L2CAP则将这个Logical Channel换分为一个个的L2CAP Channel,以便提供应用程序级别的通道复用。到此之后,基本协议栈已经构建完毕,应用程序已经可以基于L2CAP欢快的run起来了。

(1)特点

基于L2CAP,使用固定的ChannelID(0x004)

采用client-server的形式。提供信息(以后都称作Attribute)的一方称作ATT server(一般是那些传感器节点),访问信息的一方称作ATT client。
  一个Attribute由Attribute Type、Attribute Handle和Attribute Value组成。
  Attribute可以定义一些权限(Permissions),以便server控制client的访问行为。

根据所定义的Attribute PDU的不同,client可以对server有多种访问方式。

3.3. GATT(Generic Attribute Profile)

ATT之所以称作“protocol”,是因为它还比较抽象,仅仅定义了一套机制,允许client和server通过Attribute的形式共享信息。

GATT是一个profile(更准确的说是profile framework)
  在蓝牙协议中,profile一直是一个比较抽象的概念,我们可以将其理解为“应用场景、功能、使用方式”都被规定好的Application。传统的BR/EDR如此,BLE更甚。上面我们讲过,BLE很大一部分的应用场景是信息(Attribute)的共享,因此,BLE协议栈基于Attribute Protocol,定义了一个称作GATT(Generic Attribute)的profile framework(它本身也是一个profile),用于提供通用的、信息的存储和共享等功能。

3.4. SMP(Security Manager)
  • 蓝牙的配对过程中,加密是核心步骤,SMP关乎到蓝牙通信的安全。

  • 在固定信道0x0006中传输数据,0x0006 LE SMP(secure
    manager protocol)

  • 整个smp过程根据是否支持ble security connection,设备IO
    capabilities,是否支持OOB(out of band)总共分为6种情况,最终协商确定1种方式实现smp flow。(原文:https://blog.csdn.net/cai472861/article/details/1054062420)

smp 过程大概分为四个部分:
step1. 交换信息
step2. 产生STK/LTK,(short term key,long term key)
step3. 在stk /ltk的基础上加密link
step4. 在加密的link中分发 特殊的key
,以下配图以LE legacy pairing为例说明
在这里插入图片描述

3.5. GAP(Generic Access Profile)

通用访问配置文件,实现功能如下:

(1)定义GAP层的蓝牙设备角色
  Broadcaster Role,设备正在发送advertising events;
  Observer Role,设备正在接收advertising events;
  Peripheral Role,设备接受Link Layer连接(对应Link Layer的slave角色);
  Central Role,设备发起Link Layer连接(对应Link Layer的master角色)。

(2)定义GAP层的、用于实现各种通信的操作模式和过程
  Broadcast mode andobservation procedure,实现单向的、无连接的通信方式;
  Discovery modes andprocedures,实现蓝牙设备的发现操作;
  Connection modes andprocedures,实现蓝牙设备的连接操作;
  Bonding modes andprocedures,实现蓝牙设备的配对操作。

(3)定义User Interface有关的蓝牙参数
  蓝牙地址(Bluetooth Device Address);
  蓝牙名称(Bluetooth Device Name);
  蓝牙的pincode(Bluetooth Passkey);
  蓝牙的class(Class ofDevice,和发射功率有关);
  等等。

(4)Security有关的定义

4. Application

蓝牙应用层协议,在蓝牙核心协议的基础上,根据具体的应用需求,定义出各种各样的策略,如FTP、文件传输、局域网等。
  Profile是Application的代指,翻译为服务,具体有:SPP、HSP、HFP、FTP、IPv6/6LoWPAN等。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值