BLE--协议基础

一个完整的单模蓝牙设备(single-mode BLE)被分为三个部分,控制器(controller)、主机(host)、应用(application)。

每一个协议栈的基本构件(basic building blocks)被分为多层提供需要操作的功能:

    Application:应用类似于操作系统,位于协议栈的最高层,包含逻辑、用户接口、数据处理。

    Host:主机包括以下几层:

  •             Generic Access Profile(GAP)

  •             Generic Attribute Profile(GATT)

  •             Logic Link Control and Adaptation Protocol(L2CAP)

  •             Attribute Protocol(ATT)

  •             Security Manager(SM)

  •             Host Controller Interface(HCI),Host side

    Controller:控制器包括以下几层:

  •                 Host Controller Interface(HCI),Controller side

  •                 Link Layer(LL)

  •                 Physical Layer(PHY)

 

 

一、Physical Layer(物理层)

        物理层包括模拟通信电路(analog communication circuitry)、调制解调信号(modulating and demodulating analog signal)和数字信号转换。射频使用2.4GHz,从2.4000GHz到2.4835GHz分成 了40个信道,其中37个信道用于连接通信,剩下的3个(37、38、39)用于广播

BLE--协议基础

这个标准使用的技术是调频扩频(frequency hopping spread spectrum),使用如下公式计算跳频的通道

BLE--协议基础

其中hop的值是连接时协商得到的,因此每次连接时hop的值都不一样,这种技术避免了其他2.4GHz设备的干扰(WiFi和经典蓝牙)。调制器使用高斯频移键控(Gaussian Frequency Shift Keying GFSK)在空中对数据进行编码,调制速率最大为1Mbit/s(意味着最大能出书128KB/s,一毫秒能传输128个字节)

 

二、Link Layer

    Link Layer直接与PHY层相连,它实现了硬件与软件的结合,他是在蓝牙协议中唯一保证hard real-time的一层,

    自动化的功能都由开发商在硬件中实现了,用来减少蓝牙协议栈对于*处理器的开销,这些功能主要包括(由硬件实现):

  •         前导码,访问地址,空中协议框架

  •         CRC生成器和验证

  •         数据加密

  •         随机数生成

  •         AES加解密

 

    Link Layer定义了如下几个角色:

        Advertiser:发送广播包的设备

        Scanner:扫描广播包的设备

        Master:发起连接的设备

        Slave:接受连接的设备

    这些角色可以逻辑上分成两对:advertiser 和 scanner是不需要连接的,master和slave是需要连接的

    2.1、Bluetooth Device Address

        BLE使用48位的Mac地址用于标识蓝牙的身份,BLE支持两种类型的MAC地址:

  •             Public device address:这是一个固定的和BR/EDR一样的有生产商编程的设备地址,这个地址必须向IEEE注册并且永远不会改变

  •             Random device address:这个地址既可以动态编程,也可以在程序运行是动态生成。

 

    2.2、Advertising and Scanning 

        广播的目的是1不用建立连接就可以广播应用数据,2为了建立连接

        每一个广播包可以包含31给字节,其中包含基本的头信息。广播数据按照固定的频率发送,发送频率是20ms~10.24s之间。广播间隔越短,就越容易扫描到,但是对电量的消耗就会越大。

    因为广播是在37、38、39这三个信道上随机的,所以,只有扫描信道和广播信道随机重合,广播数据才能被收到。

BLE--协议基础

    扫描间隔和扫描窗口定义了扫描的频率和扫描的持续时间,这些参数对功耗有很大的影响。

 

    蓝牙协议定义了两个基本的扫描方式:

        Passive Scanning(被动扫描):扫描着已经接受到广播包,但广播着却不知道广播包已经被接收。

        Active Scanning(主动扫描):扫描着收到广播包后,发起扫描请求,广播者收到扫描请求后发送扫描响应包。

BLE--协议基础

 

    广播数据根据不同的属性可以进行分类

    第一种 根据可连接性可以分为以下几类:    

        Connectable:收到这种广播包后scanner可以发起连接请求

        Non-connectable:收到这种广播包后scanner不能发起连接请求(这种包只是用于广播)

    第二种 根据可扫描性分为:

        Scannable:收到这种广播包后scanner发起扫描请求

        Non-scannable:收到这种广播包后scanner不能发起扫描请求

    第三种 根据直连性分为:

        Directed:这种广播包包含广播者和目标扫描者的mac地址,没有用户数据。

        Undirected:这种广播包不针对任何特定的scanner,它包含用户数据

BLE--协议基础