经典蓝牙架构分层及协议总览

简介: 经典蓝牙架构分层及协议总览

经典蓝牙架构分层及协议总览

叶苏(何苏平)创建,最后修改于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) : 蓝牙音乐控制协议,分为controllerCTtargetTG两个角色。以手机和蓝牙耳机举例,手机是CT端,蓝牙耳机是TG端。



4. APP 层

APP 层: 蓝牙应用层, 比如要做耳机, 做蓝牙 HID 设备, 做车载, 做蓝牙防丢器, 做蓝牙穿戴设备等等

目录
相关文章
|
3月前
|
负载均衡 关系型数据库 应用服务中间件
高可用系列文章之二 - 传统分层架构技术方案
高可用系列文章之二 - 传统分层架构技术方案
|
3月前
|
Dubbo Cloud Native 网络协议
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
【Dubbo3技术专题】「服务架构体系」第一章之Dubbo3新特性要点之RPC协议分析介绍
66 1
|
3月前
|
缓存 自然语言处理 前端开发
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
用户态协议栈05—架构优化
用户态协议栈05—架构优化
|
6天前
|
存储 消息中间件 JSON
|
29天前
|
运维 Java Docker
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
业务系统架构实践问题之在某些情况下,将能力代码和业务逻辑严格分层可能是一个挑战问题如何解决
|
29天前
|
存储 搜索推荐 API
业务系统架构实践问题之分层架构中的四层定位是什么
业务系统架构实践问题之分层架构中的四层定位是什么
|
29天前
|
缓存 项目管理
项目管理定义问题之DDD架构的分层架构中基础层作用是什么
项目管理定义问题之DDD架构的分层架构中基础层作用是什么
|
1月前
|
存储 消息中间件 Kafka
细说数据仓库分层架构
【7月更文挑战第20天】数据仓库分层架构包括缓冲层、操作数据层、明细数据层、汇总数据层和数据集市层。
|
1月前
|
前端开发 Java 关系型数据库
「架构」分层架构
**分层架构**是软件设计的关键模式,它将应用划分为独立层,如表示层、业务逻辑层和数据访问层,强调**单一职责**和**松耦合**。优点包括**代码组织**、**技术多样性**、**团队协作**和**可扩展性**,但可能带来**性能影响**和**设计复杂性**。通过定义清晰接口和合理划分层次来管理。常用技术栈涉及Web前端、后端框架、数据库、ORM和通信协议等。
27 0