从这部分开始详细介绍蓝牙协议栈功能、接口、协议栈工程关联、实现协议栈的文件和任务,该任务也作为协议栈应用的最高优先级任务。
TI 采用库文件的方式作为协议栈的一个主策略,尽管如此,还是需要开发者了解协议栈各个抽象的功能和相互作用。
蓝牙 5.0 核心规范包含 LE 和 BR/EDR 两种设备类型,其中 LE 主要是设计为低功耗、小数据终端产品。
BLE5.0 核心主要包含以下功能:
以上功能均在蓝牙 5.0 协议栈实现,并且可以选择编译。
如图 1 ,蓝牙协议栈包含一个 Host 和 Controller 两个逻辑实体。这种区分从经典蓝牙的 BR/EDR 就存在了,各种功能独立实现,任务配置文件和应用相关都在 Host 的 GAP、GATT 抽象层。
图1. 协议栈基础
BLE 工作在无需认证的 2.4G 免费频段,该频段广泛应用于 ISM(工业、科学、医疗)领域。BLE 通过跳频通信实现抗干扰特性,是 GFSK 调制信号,它采用 1Mbps 码元率 PHY 层设计,可以实现 1Mbps 波特率通信。BLE5.0 优化的物理层设计可以实现 2Mbps 的 PHY 层。
GAP 工作在以上 5 个状态机
在 Standby
状态,双方设备都处于未连接状态。Advertiser
尝试广播数据,Scanner
接收到广播数据后尝试进行扫描请求,并且得到扫描回复。此时 Scanner
产生连接意图,转变成 Initiator
发送连接请求,成功连接后发送广播的 Advertiser
作为 Master
,进行连接请求的 Initiator
成为 Slave
。
图2. 状态机转变示意图
以上状态机转变、角色扮演以及中间完成的设备发现、链路建立、链路终止均由 GAP 完成。
蓝牙系统由 Host 和 Controller 两个逻辑实体组成,他们之间的通信、交互式通过 HCI 标准接口完成的。基于该标准接口,Host 和 Controller 可以依靠 Uart/SPI 等外设在两个 MCU 之间通信。
逻辑链路控制适配协议层由上层服务提供逻辑链路层访问进行端对端的数据通信。
安全管理层完成配对和密钥分布,提供同连接设备各层之间的通信安全。
GATT 负责主从设备之间的应用数据交换。GATT 作为使用的 ATT 的子流程的一个服务型框架,为主从设备交互数据提供 Profile、Service、Characteristic 等概念的抽象、管理。
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。