# 蓝牙概述 # 从这一章节开始尝试去系统地了解蓝牙协议栈,在这之前我们需要储备以下知识点: ## 蓝牙 ## 蓝牙是一种短距离的无线通信技术,设计之初是为了取代有线连接,其鲁棒性、低功耗、低成本特性已经让其广泛应用于各种终端产品。 蓝牙核心规范是根据不同终端产品可选择、可裁剪的。根据功耗和速率主要被设计为两种设备类型—— LE 和 BR ,两种设备都实现设备发现、连接建立、连接机制。同时 BR 无线系统还包含一个可选择的 EDR 设备类型,EDR 又包含一个二选一的 MAC 层以及可扩展的 PHY 层。基于这些设计 BR 的速率可以达到 721.2kb/s ,EDR 可以达到 2.1Mbps 以及工作在高速模式的 802.11AMP 54Mbps。 蓝牙发展至今,已经从 1.0 到现在 5.0 版本了。前面 3 个版本蓝牙主要是以 BR / EDR / HS发展,也就是我们常说的经典蓝牙。4.0 版本后引入 LE ,蓝牙技术联盟(Bluetooth Special Interest Group,简称 SIG )维护着蓝牙核心规范。不难看出,从高速 AMP 直接使用 802.11 PHY,还是低功耗参考使用802.15.4 以及最新标准的蓝牙 5.0 协议,SIG 一直在功耗、速率、和最新的物联网功能上面平衡。 >**注意**:注意区分 BLE 、BR、EDR 等特定术语,区分低功耗蓝牙和经典蓝牙。 蓝牙核心系统由两个逻辑实体 Host & Controller 组成,一个 Host 对应一个或者多个 Controller ,Host 和 Controller 之间通过 HCI 接口层交互。Controller 对应两种类型:Primary Controllers 和 Secondary Controllers 。通常来说 Primary Controllers 只有一个,Secondary Controllers 可能有多个。 * 对于 BR/EDR 蓝牙设备类型,Controller 通常包含无线电处理、基带、链路管理、和可选择的 HCI 接口层; * 对于 LE Controller 主要包含 LE PHY、链路层、和可选择的 HCI ; * 通常来说还可以合并 BR/EDR Controller 和 LE Controller 到一个 Controller,也就是常说的双模蓝牙。 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/HostController0.png) ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/HostController2.png) 上图完整演示了 LE 核心系统、BR/EDR 核心系统、带 Secondary Controller AMP 的 BR/EDR 核心系统、以及合并 LE & BR/EDR 的双模蓝牙系统。 ## LE ## ### 信道 ### BLE 工作在无需认证的 2.4G 免费频段,该频段广泛应用于 ISM(工业、科学、医疗)领域。它是通过跳频通信来实现抗干扰特性的,调制方式为GFSK 调制。采用 1Mbps 码元率 PHY层设计,可以实现 1Mbps 波特率通信,BLE5.0 优化的物理层可以工作在 2Mbps 码元率。 2.4G 的频段按照每 2M 带宽划分为 40 个信道,由 FDMA(频分多址)和 TDMA(时分多址)实现多路访问信道资源。 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/ChannelMap.png) 信道资源被约定的 `Events` 划分为以时间单位访问,有效数据也包含在这些 `Events` 里面。`Events` 以连接状态为区分,包含未连接的 `Advertising Events` 和已经连接的 `Connection events`。 在物理信道发送广播包的设备称为 `Advertisers`,接收到该广播包但是还没有建立连接意图前的设备称为 `Scanners` 。 如下图所示,`Advertisers` 在 3 个广告信道(可配置)轮询发生 `Advertising Events` ,`Scanners` 接收到该广告包后可能在该信道发生的事件类型是`ScanReq` 扫描请求和 `ScanRsp` 扫描回复。 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/AdvertisingEvents.png) 如果此时 `Scanner` 产生了尝试建立连接请求,`Scanner` 身份切换为 `Initiators` 。`Initiators` 会在接收到 `Advertising Events` 产生一个时间类型为 `Connect` 的连接请求。一旦建立连接请求,`Advertiser` 和 `Initiators` 分别切换为 `Slave` 和 `Master`。 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/ConnectionEvents.png) 在建立连接的时候,Master 会基于某种算法产生一个跳频序列,保证 37 个数据信道按照某个序列进行跳频切换。双方会约定一个跳频间隔,保证通信双方在固定时间在固定信道相遇。 ## 分层设计 ## ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/bluetooth_overview/Images/Architecture.png) 如上图所示: **Controller** * LinkManager、LinkController、BR/EDR Radio 组成 BR/EDR Controller; * AMP PAL 、AMP MAC、 AMP PHY 组成 AMP Controller; * Link Manager,Link Controller、LE Radio 组成 LE Controller; ** Host ** * L2CAP、SDP、GAP 组成 BR/EDR Host; * L2CAP、SMP、Attribute protocol、GAP GATT组成 LE Host; ## 加入我们 ## 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。

CC2640R2F&BLE5.0-乐控畅联 © Copyright 2017, 成都乐控畅联科技有限公司.