从这一章节开始尝试去系统地了解蓝牙协议栈,在这之前我们需要储备以下知识点:
蓝牙是一种短距离的无线通信技术,设计之初是为了取代有线连接,其鲁棒性、低功耗、低成本特性已经让其广泛应用于各种终端产品。
蓝牙核心规范是根据不同终端产品可选择、可裁剪的。根据功耗和速率主要被设计为两种设备类型—— 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 可能有多个。
上图完整演示了 LE 核心系统、BR/EDR 核心系统、带 Secondary Controller AMP 的 BR/EDR 核心系统、以及合并 LE & BR/EDR 的双模蓝牙系统。
BLE 工作在无需认证的 2.4G 免费频段,该频段广泛应用于 ISM(工业、科学、医疗)领域。它是通过跳频通信来实现抗干扰特性的,调制方式为GFSK 调制。采用 1Mbps 码元率 PHY层设计,可以实现 1Mbps 波特率通信,BLE5.0 优化的物理层可以工作在 2Mbps 码元率。
2.4G 的频段按照每 2M 带宽划分为 40 个信道,由 FDMA(频分多址)和 TDMA(时分多址)实现多路访问信道资源。
信道资源被约定的 Events
划分为以时间单位访问,有效数据也包含在这些 Events
里面。Events
以连接状态为区分,包含未连接的 Advertising Events
和已经连接的 Connection events
。
在物理信道发送广播包的设备称为 Advertisers
,接收到该广播包但是还没有建立连接意图前的设备称为 Scanners
。
如下图所示,Advertisers
在 3 个广告信道(可配置)轮询发生 Advertising Events
,Scanners
接收到该广告包后可能在该信道发生的事件类型是ScanReq
扫描请求和 ScanRsp
扫描回复。
如果此时 Scanner
产生了尝试建立连接请求,Scanner
身份切换为 Initiators
。Initiators
会在接收到 Advertising Events
产生一个时间类型为 Connect
的连接请求。一旦建立连接请求,Advertiser
和 Initiators
分别切换为 Slave
和 Master
。
在建立连接的时候,Master 会基于某种算法产生一个跳频序列,保证 37 个数据信道按照某个序列进行跳频切换。双方会约定一个跳频间隔,保证通信双方在固定时间在固定信道相遇。
如上图所示:
Controller
Host
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。