【原创】BLE的整体框架

目录

1.    BLE的框架结构

2.    BLE的Controller和Host

2.1.    控制器(Controller)

2.2.    Host

3.    BLE的单芯片方案与多芯片方案


1.    BLE的框架结构
 

2.    BLE的Controller和Host


    就如同前文的BLE框架图,BLE自下而上分成controller,host和profiles。其中Profiles可以理解为对应于各种不同应用场景的应用层协议的集合。而真正体现在硬件上就是Controller和Host。蓝牙的官方协议文档,也正是按照Host和Controller的功能划分来阐述蓝牙规范(注,蓝牙协议文档中也将HCI单独作为一个部分来介绍)。

2.1.    控制器(Controller)


    Controller,顾名思义就是控制器。
    控制谁?控制BLE的物理层信号。
    通过谁来控制?通过主机(Host)来控制。

    Controller包含物理层(PHY,也是BLE的射频部分)、链路层(LL)和主机命令接口(HCI)。
物理层PHY就不多说了,主要集成在Controller中提供符合BLE规范的射频信号。从软件的角度看,链路层(LL)和主机命令接口(HCI)才是Controller中的大部头。

    首先介绍链路层。
    按照OSI七层模型的定义,链路层(LL)的任务是:负责在两个相邻结点间的线路上,无差错的传送以帧为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。和物理层相似,数据链路层要负责建立、维持和释放数据链路的连接。在传送数据时,如果接收点检测到所传数据中有差错,就要通知发方重发这一帧。
    那么BLE的链路层(LL)的作用是什么?BLE的链路层(LL)的作用和OSI七层模型中的定义相吻合。BLE的链路层(LL)详细定义了链路层的帧结构,并且进行差错检测、数据白化、时间同步、地址过滤等处理。这些功能笔者将会用专门文章来详细介绍。

    接下来介绍主机命令接口HCI。
    在蓝牙中,控制器(Controller)并不能独立工作,它的必须接收来自上层主机(Host)的数据包和对链路的配置。主机命令接口(HCI)就是一套用于主机(Host)和控制器(Controller)之间,用于配置和数据交换的命令接口协议。
   

    主机(Host)和控制器(Controller)之间用什么物理总线通信呢?目前蓝牙主机命令接口(HCI)支持UART、USB、SDIO几种物理接口。


2.2.    Host


    Host,就是蓝牙协议主机部分。主机(Host)主要包括:主机命令接口(HCI)、逻辑链路控制和适配协议(L2CAP:Logical Link Control and Adaptation Layer Protocol)、服务发现协议(SDP:Service Discovery Protocol)、属性协议(ATT:Attribute Protocol)、通用属性配置(GATT:Generic Attribute Profile)、通用访问配置(GAP:Generic Access Profile)以及安全管理等。上面提到的这些协议都会在将来的相关文章中详述。今天,我们只是走马观花简要介绍一下:

主机命令接口(HCI):
    这个就是为了和控制器(Controller)中的HCI配合使用。
    
逻辑链路控制和适配协议(L2CAP):
    在经过控制器(Controller)中的Link Layer的抽象之后,两个BLE设备之间可存在两条逻辑上的数据通道:一条是无连接的广播通道;另一条是基于连接的数据通道,是一个点对点(Master对Slave)的逻辑通道。


    广播通道暂且不说,这个数据通道(简称逻辑通道,Logical Channel)要怎么使用,还有一些问题需要解决,比如:
【1】Logical Channel只有一条,而要利用它传输数据的上层应用却不止一个,怎么复用?
【2】Logical Channel所能传输的有效payload长度最大只有251bytes,如何让上层应用传输更大的数据包?
【3】Logical Channel仅提供了简单的应答和流控机制,如果传输的数据出错怎么办?
   

    以上问题,都是由L2CAP,一个介于应用程序上层协议和Link Layer之间的protocol负责。它提供的功能主要包括:
【1】协议/通道的多路复用,Protocol/channel multiplexing;
【2】上层数据包的分片与重组:Segmentation and reassembly 
【3】基于L2CAP Channel的流控机制;
【4】错误控制和重传机制:Error control and retransmissions,;
【5】对数据流式传输的支持(如音频、视频等,不需要重传或者只需要有限重传);
【6】对QoS(Quality of Service)的支持。

服务发现协议(SDP):
    在BLE系统中,客户只有通过服务发现协议(SDP)才能获得设备信息、服务信息及服务特征,才能在此基础上建立相互间的连接。通过这个协议,应用程序可以发现哪些服务可用以及服务的特性是什么

属性协议(ATT):
    属性协议(ATT)是定义了BLE协议栈上层的数据结构和组织方式。是后面将于讲述的通用属性配置(GATT)和通用访问配置(GAP)的基础,它定义了BLE协议栈上层的数据结构和组织方式。
    属性(Attribute)概念是ATT层的核心,以编程的眼光来看,属性是一个数据结构,它包括了数据类型和数据值,就如同C语言结构体的概念。
属性主要由以下四部分组成:属性句柄(Attribute Handler)、属性类型(Attribute Type)、属性值(Attribute Value)、属性权限(Attribute Permissions)。


通用属性配置(GATT):
    通用属性配置(GATT)指定了两个BLE设备的应用层Profile数据交互的结构(Structure) 这个结构体定义了一些基本元素,如服务(Service)、特性(Characteristic)等。这些元素存在于属性(Attribute)中
 
    通用属性配置(GATT)中最上层是Profile。 Profile由一个或多个服务(Service)组成;服务(Service)是由多个特征(Characteristic)组成,也可以包含其他服务的引用(Reference) ;特征(Characteristic)由值(Value)、属性(Property)以及描述符(Descriptor)组成。


通用访问配置(GAP)
    BLE协议栈中的通用访问配置(GAP)负责处理设备访问模式,包括:被发现、建立连接、终止连接、初始化安全管理和设备配置。GAP层可以扮演四种角色之一:

    Broadcaster 广播者----不可以连接,一直发送广播
    Observer 观察者----可以扫描广播,但是不能发起建立连接的设备
    Peripheral 外设----可以被连接,在单个链路层连接中作为Server
    Central 中央设备----可以扫描广播并发起连接,在单个或多个链路层中作为Client

3.    BLE的单芯片方案与多芯片方案


    根据蓝牙控制器(Controller)和主机(Host)是不是工作在同一块芯片上,我们可以把BLE的实现方案分成单芯片方案和多芯片方案。
    通常在一些简单的蓝牙应用中使用各种蓝牙SOC就是单芯片方案。比如常见的TI公司的CC25xx、CC26xx,Nordic公司的NRF51xxx、NRF52xxx等等。此类芯片一般可以直接做为 MCU 用,集成度很高。常用于产品功能比较单一的情况,如蓝牙耳机、智能手环、防丢器等。


 
    多芯片方案就是把控制器(Controller)和主机(Host)分别放在不同的芯片中实现,适用于蓝牙应用程序较复杂的情况下使用,这里可以使用功能强大的MPU甚至是PC作为蓝牙主机(Host),而单独使用蓝牙芯片做控制器(Controller),两者使用主机命令接口(HCI)进行通信。


版权声明
    所有原创文章(未进行特殊标识的均属于原创) 的著作权属于本人
    所有转载文章(标题注明[转]的所有文章) 的著作权属于原作者。
    所有译文文章(标题注明[译]的所有文章) 的原文著作权属于原作者,译文著作权属于本人。

转载注意事项
    除注明外,所有文章均采用 Creative Commons BY-NC-ND 4.0(自由转载-保持署名-非商用-禁止演绎)协议发布。
    你可以在非商业的前提下免费转载,但同时你必须:
        保持文章原文,不作修改。
        明确署名,即至少注明 作者:BoatOnMCU 字样以及文章的原始链接,且不得使用 rel="nofollow" 标记。
        商业用途请电话联系本人。
        微信公众号转载一律不授权,除非联系本人并获得授权。


 欢迎访问本人公众号

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值