经典蓝牙架构分层及协议总览
由叶苏(何苏平)创建,最后修改于2023-02-08 11:41:06
一、 分层架构图
二、 协议介绍
1. Controller 层协议介绍
Controller 层是蓝牙芯片层: 包含一下几个部分:
1)RF(RADIO) : 射频层,本地蓝牙数据通过射频发送给远端设备, 并且通过射频接收来自远端蓝牙设备的数据
2)BB(BASEBAND) : 基带层, 进行射频信号与数字或语音信号的相互转化, 实现基带协议和其它的底层连接规程 。
3) LMP(LINK MANAGER PROTOCOL) : 链路管理层, 负责管理蓝牙设备之间的通信, 实现链路的建立、 验证、 链路配置等操作 。
4) HCI( HOST CONTROLLER INTERFACE) : 主机控制器接口层, HCI层在芯片以及协议栈都有, 芯片层面的 HCI 负责把协议栈的数据做处理, 转换为芯片内部动作, 并且接收到远端的数据, 通过 HCI 上报给协议栈。
2. Transport 层协议介绍
TRANSPORT 层: 此部分在硬件接口( UART/USB/SDIO) 实现 HOST 跟CONTROLLER 的交互, 此部分会分为以下几个协议:
1) H2: USB 的 transport
2) H4: UART 的 transport
3) H5: UART 的 transport
4) BCSP: UART 的 transport
5) SDIO:SDIO transport
其 中 2,3,4 的 主 要 差 别 在 于 H4 需 要 BT CHIP UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND 接到 MCU, 而 H5,BCSP 只需要 BT CHIP 的 UART_TX/UART_RX/VCC/GND 接到 MCU 就可以通信。
3. HOST 层协议介绍
HOST 层: 此部分就是蓝牙协议栈
1) HCI(HOST CONTROLLER INTERFACE) : 主机控制层接口, 主要负责透过 transport 把协议栈的数据发送给蓝牙芯片, 并且接受来自蓝牙芯片的数据, 数据主要分为 HCI COMMAND、HCI EVENT、HCI ACL、HCI SCO(部分芯片的 SCO 数据不是透过 TRANSPORT 直接跟 HOST 沟通, 而是通过特殊的引脚, PCM IN/OUT/SYNC/CLK 脚来传输数据) 。
2) L2CAP(Logical Link Control and Adaptation Protocol) : 逻辑链路控制与适配协议, 将 ACL 数据分组交换为便于高层应用的数据分组格式, 并提供协议复用和服务质量交换等功能。
通过协议多路复用、 分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务,L2CAP 还屏蔽了低层传输协议中的很多特性,使得高层协议应用开发人员可以不必了解基层协议而进行开发。
3) SDP(SERVICE DISCOVERY PROTOCOL) : 服务发现协议, 服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用, 并确定这些可用服务的特征。
4) RFCOMM(Serial Port Emulation) : 串口仿真协议, 上层协议蓝牙电话, 蓝牙透传 SPP 等协议都是直接走的 RFCOMM。
5) OBEX: 对象交换协议, 蓝牙电话本, 蓝牙短信, 文件传输等协议都是走的 OBEX 。
6) HFP(Hands-Free) : 蓝牙免提协议,通过蓝牙对对端蓝牙进行通话控制,比如接听、挂断、拒接电话等,分为两个角色,AG和 HF。 例如蓝牙耳机和手机连接,手机的角色是AG,蓝牙耳机的角色是HF。
7) HSP: 蓝牙耳机协议, 最开始的蓝牙耳机协议, 一个简化版的HFP,目前已经没有产品在用这个了 。
8) SPP(SERIAL PORT PROFILE) : 蓝牙串口协议 ,下层是RFCOMM协议。
9) IAP: 苹果的特有协议, 分为 IAP1/IAP2。 由于苹果不支持SPP协议,所以苹果上进行数据的透传可以使用IAP协议。
10) PBAP(Phone Book Access) : 蓝牙电话本访问协议 。 该协议有两个角色,PSE和PCE。
例如车载蓝牙跟手机连接, 车载蓝牙下载手机的电话本, 那么手机的角色就是 PSE, 车载蓝牙就是 PCE。
11) MAP(MESSAGE ACCESS PROFILE) : 蓝牙短信访问协议 , 有两个角色MCE 和 MSE。
例如车载蓝牙跟手机连接, 车载蓝牙访问手机的短信, 那么手机的角色就是 MSE, 车载蓝牙就是 MCE。
12) OPP(OBJECT PUSH PROFILE) : 对象推送协议, 就是一个服务器和代理之间进行数据交换 像我们一般用手机蓝牙传输文件、图片之类的都可以使用OPP传输。
13) AVCTP(AUDIO/VIDEO CONTROL TRANSPORT PROTOCOL) : 音视频控制传输协议, 是 AVRCP 的底层。
14) AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL) : 音视频分布传输协议, 是 A2DP 的底层。
15) HID(HUMAN INTERFACE DEVICE) : 人机接口协议, 常用的蓝牙键盘、蓝牙鼠标、蓝牙自拍杆,使用的就是HID协议。
16) A2DP(Advanced Audio Distribution) : 蓝牙音乐协议 ,分为source端和sink端,以手机和蓝牙耳机举例,手机是source端,蓝牙耳机是sink端。
17) AVRCP(AUDIO/VIDEO REMOTE CONTROL PROFILE) : 蓝牙音乐控制协议,分为controller (CT) 和 target (TG)两个角色。以手机和蓝牙耳机举例,手机是CT端,蓝牙耳机是TG端。
4. APP 层
APP 层: 蓝牙应用层, 比如要做耳机, 做蓝牙 HID 设备, 做车载, 做蓝牙防丢器, 做蓝牙穿戴设备等等 。