首页 > 代码库 > Bluetooth low energy介绍

Bluetooth low energy介绍

1. 介绍

Bluetooth low energy,也称BLE(低功耗蓝牙),在4.0规范中提出

BLE分为两种设备

- 单模(single-mode): Logo为「Bluetooth?Smart」- 双模(dual-mode):   Logo为「Bluetooth?Smart Ready」
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

tip: 传统蓝牙的Logo为「Bluetooth?」

BLE与传统蓝牙的兼容性如下图所示

image

可以看出他们之间的通信规则如下(Bluetooth指代传统蓝牙,下同):

Smart Ready: Smart Ready、Bluetooth、SmartBluetooth:   Smart Ready、BluetoothSmart:       Smart Ready、Smart
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

2. 协议栈

BLE协议栈如下图所示

image

BLE协议栈由Controller和Host两部分组成
Profile和Service基于GAP和GATT
应用协议定义其使用的服务,说明是传感器端还是接收端
定义GATT的角色(Server/Client)和GAP的角色(Peripheral/Central)

单芯片方案中,Controller和Host、Profile及应用都在同一芯片中
网络控制器模式中,COntroller和Host运行在设备中,但是Profile和应用则在其他设备上,比如PC或者其他微控制器,可以通过UART、USB进行操作
双芯片模式中,Controller运行在一个控制器,而Host、Profile和应用运行在另一个控制器上

1 - PHY: 1Mbps自适应跳频GFSK,运行在2.4GHz频段。
2 - LL:  RF控制器,控制设备处于准备(standby)、广播(Advertising)、监听/扫描(scanning)、初始化(initiating)、连接(connected)这5中状态中的一种
3 - HCI: 为接口层,向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制
4 - L2CAP: 为上层提供数据封装服务,允许逻辑上的端到端数据通信
5 - SM: 提供配对和密钥分发服务,实现安全连接和数据交换
6 - GAP: 直接与应用程序或配置文件(Profiles)通信的接口,处理设备发现和连接相关服务。另外还处理安全特性的初始化
7 - ATT: 导出特定的数据(称为属性)到其他设备
8 - GATT: 定义了使用ATT的服务框架和配置文件(profiles)的结构。BLE中所有的数据通信都需要经过GATT

3. 链路层(LL)

3.1 链路状态机

链路层操作可以描述为链路状态机(The Link Layer State Machine)
链路状态机有如下五种状态
- Standby State:      准备,不传输或接受数据包- Advertising State:  广播, advertiser,发送advertising channel packets,接受来自scanner的响应- Scanning State:     监听/扫描, scanner,监听来自advertiser的advertising channel packets- Initiating State:   初始化, initiator, 监听来自特殊设备的advertising channel packets,并进行初始化连接- Connection State:   连接, 有两种角色: Master Role(从initiator进入)/Slave Role(从advertiser进入)<style type="text/css">.csharpcode, .csharpcode pre{	font-size: small;	color: black;	font-family: consolas, "Courier New", courier, monospace;	background-color: #ffffff;	/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {	background-color: #f4f4f4;	width: 100%;	margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

image

链路状态机只允许处于五种状态之一
链路层可以有多个链路状态机,但至少有一个支持Advertising/Scanning State

处于Master Role的设备可以和多个Slave Role分时通信
处于Slave Role的设备只能和处于Master Role的设备通信

下图展示了允许和禁止的链路状态机和角色的组合

image

3.2 比特序(Bit Ordering)

在链路层规范中规定PDU比特序为Little Endian format

3.3 设备地址(Device Address)

设备地址可以是公共地址或者随机地址,长度为48 bits

- 公共地址: 采用IEEE 802-2001 standard的48-bit universal LAN MAC addresses

image

- 随机地址: 详细要求可参考规范

image

3.4 物理信道(Physical Channel)

BLE RF信道被定义为两种: advertising and data

- advertising信道: 使用3个RF信道用来发现设备,初始化连接和广播数据- data信道:        则使用多达37个RF信道用于两个连接设备间通信
<style type="text/css">.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; }</style>

RF Channel和Advertising/Data channel Index对应关系如下图
image

Bluetooth low energy介绍