首页 > 其他分享 >蓝牙协议栈概览

蓝牙协议栈概览

时间:2024-07-22 16:10:39浏览次数:4  
标签:协议 芯片 概览 蓝牙 UART HOST HCI

https://www.jianshu.com/p/29af94dc518c https://wlink.blog.csdn.net/article/details/107727900  

蓝牙底层结构

HW层:蓝牙芯片层

RF(RADIO):射频层,本地蓝牙数据通过射频信号发送给空中设备,并通过射频接收来自空中的蓝牙信号和数据

BB(BASEBAND):基带层,射频信号和数字(音频)信号转换,实现基带协议和其他底层连接规程

LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路建立、验证、链路配置等操作

HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层HCI负责将协议栈数据处理,转换为芯片内部动作,并受到远端数据,通过HCI上报给协议栈;

BLE PHY:BLE物理层

BLE LL:BLE链路层

TRANSPORT层:在硬件接口(UART/USB/SDIO)实现HOST跟CONTROLLER的交互

H2: USB的transport

H4:UART的transport(是UART传输种最简的一个Transport,只是在HCI raw data的前面加一个type就行,如下HCI一共有五种HCI data)
        * HCI COMMAND:由蓝牙协议栈发送给芯片的命令
        * HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件
        * HCI ACL:蓝牙协议栈跟蓝牙芯片双向交互的普通数据
        * HCI SCO:蓝牙芯片跟蓝牙协议栈双向交互的通话/语音识别等音频数据
        * HCI ISO(这部分是在core5.2才添加):LE audio用的数据包格式

HCI蓝牙架构  

BT Controller:指蓝牙芯片,包括BR/EDR芯片(蓝牙2.1),AMP芯片(蓝牙3.0),LE芯片(蓝牙4.0)

BT Host:指蓝牙协议栈

 

HCI架构协议简要介绍  

图中内容简介:

HW层:蓝牙芯片
RF:射频
BB:基带
LMP:链路管理
HCI:主控制器接口
AUDIO:音频
BLE PHY:低功耗蓝牙物理层
BLE LL:低功耗蓝牙链路层

TRANSPORT层:在硬件接口(UART/USB/SDIO)实现HOST跟CONTROLLER的交互
H2:USB的transport
H4:UART的transport(是UART传输种最简的一个Transport,只是在HCI raw data的前面加一个type就行,如下HCI一共有五种HCI data)       
        * HCI COMMAND:由蓝牙协议栈发送给芯片的命令       
        * HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件       
        * HCI ACL:蓝牙协议栈跟蓝牙芯片双向交互的普通数据       
        * HCI SCO:蓝牙芯片跟蓝牙协议栈双向交互的通话/语音识别等音频数据       
        * HCI ISO(这部分是在core5.2才添加):LE audio用的数据包格式
交互数据格式:
|- 1    byte - | ---- N byte HCI raw data ----|
|- H4 byte - | ---- HCI RAW DATA ----------|
其中H4 type定义如下:
|          HCI packet type               |               HCI packet indicator           |
|          HCI ACLpacket                |               0x01                                   |
|          HCI Event packet             |               0x02                                   |
|          HCI ISO Data packet       |               0x03                                   |
H5:UART的transport
BCSP:UART的transport
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就可以通信

HOST层:

HOST层:蓝牙协议栈HCI(HOST CONTROLLER INTERFACE):主机控制层接口,主要负责透过transport把协议栈的数据发送给蓝牙芯片,并且接受来自蓝牙芯片的数据,数据主要分为HCI COMMAND(HOST->CONTROLLER),HCI EVENT(HOST-CONTROLLER),HCI ACL(HOSTCONTROLLER),HCI SCO(这个有点些微差异,因为部分芯片的SCO数据不是透过TRANSPORT直接跟HOST沟通,而是通过特殊的引脚,PCM IN/OUT/SYNC/CLK脚来传输数据),core文档HCI的架构如上;

 

Overview of the lower software layer

端对端传输示意

 

L2CAP(Logical Link Control and Adaptation Protocol):逻辑链路控制与适配协议,将ACL数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务,L2CAP还屏蔽了低层传输协议中的很多特性,使得高层协议应用开发人员可以不必了解基层协议而进行开发。架构如下:

 

L2CAP architectural blocks

SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征

 

服务发现流程  

PDU Format:
Header:               |  PDU ID  |  Transaction ID  |  ParameterLength   |
                                1 byte          2 bytes               2 bytes
Parameters:        |  Parameter 1   |   Parameter 2  | --- |   Parameter N   |
                                                    Parameter Length bytes

PDU ID:
|  Value                             |     Parameter Description                                              |
| 0x01                               |      SDP_ERROR_RSP                                                 |
| 0x02                               |      SDP_SERVICE_SEARCH_REP                             |
| 0x03                               |      SDP_SERVICE_SEARCH_RSP                             |
| 0x04                               |      SDP_SERVICE_ATTR_REP                                   |
| 0x05                               |      SDP_SERVICE_ATTR_RSP                                   |
| 0x06                               |      SDP_SERVICE_ATTR_SEARCH_REP                  |
| 0x07                               |      SDP_SERVICE_ATTR_SEARCH_RSP                  |
| 0x08                               |      Reserved for future use                                           |
| 0x09                               |      Reserved for future use                                           |

RFCOMM(Serial Port Emulation):串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM

 

串口模拟流程  

Frame Structure:
 |   Address   |   Control       |   Length Indicator    |  Information   |  FCS      | 
 |    1 octet    |  1 octet         |   1 or 2 octets          |   整数倍octet  |  1 octet  | 
Address Field:
0           1           2           3           4           5           6           7           8
|  EA-1   |    CR   |     D     |       server channel                                 |
Control Field:
|   帧类型                                                          |    1   |    2   |    3   |    4   |    5   |    6   |    7   |    8   |  标注   |
|  SABM (SetAsyncronousBalancedModel)|  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   |            |
|  UA(Unnumbered Acknowledgement)      |  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   |            |
|  DM (Disconnected Mode                              |  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   |            |
|  DISC (Disconnect)                                        |  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   |            |
|  UIH (UnnumberedInformationWithHcheck   |  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   |            |
|  UI (Unnubered Information)                          |  1     |  1     |  1     |  1     |  P/F  |  1     |    0   |    0   | 可选    |

 

OBEX:对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX

 

对象交换协议  

HFP(Hands-Free):蓝牙免提协议

Hand-Free Protocol  

Audio Gateway:比如手机,作为手机提供发现外设,连接外设,和双向传输能力;

Hands-Free unit(HF):比如耳机,手表,车载设备,具备广播能力,被手机连接后和手机通信;

 

HSP:蓝牙耳机协议,最开始的蓝牙耳机协议,目前已经没有产品在用这个了吧,至少我没有看到了。算是一个简化版的HFP。

SPP(SERIAL PORT PROFILE):蓝牙串口协议,架构如下:

蓝牙串口协议  

IAP:苹果的特有协议,分为IAP1/IAP2,一般做Carplay或者iPod功能的人肯定接触过这块,有需要这块的私下联系我10)
PBAP(Phone Book Access):蓝牙电话本访问协议,架构如下:

蓝牙电话本协议  

PCE->PSE:蓝牙电话本客户端通过服务端设备查看电话本内容

MAP(MESSAGE ACCESS PROFILE):蓝牙短信访问协议,架构如下:

 

蓝牙短信访问协议  

OPP(OBJECT PUSH PROFILE):对象推送协议,架构如下

OPP(对象推送协议)  

AVCTP(AUDIO/VIDEO CONTROL TRANSPORT PROTOCOL):音视频控制传输协议,是AVRCP的地方,架构如下

AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL):音视频分布传输协议,是A2DP的底层,架构如下

蓝牙音频控制(传输)协议  

HID(HUMAN INTERFACE DEVICE):人机接口协议,架构如下:

  HID协议  

A2DP(Advanced Audio Distribution): 蓝牙音乐协议
AVRCP(AUDIO/VIDEO REMOTE CONTROL PROFILE):蓝牙音乐控制协议

Advanced Audio Distribution  

Audio/Video Remote Control Profile  

ATT:蓝牙属性协议
GATT:蓝牙通用属性协议
SM: 蓝牙安全管理协议

参考链接:

http://pianyifa.com/index.php/en/business-news/104-2020-08-10-02-52-40
https://www.crifan.com/files/doc/docbook/bluetooth_intro/release/pdf/bluetooth_intro.pdf
https://github.com/sj15712795029/bluetooth_stack/blob/master/README_English.md

标签:协议,芯片,概览,蓝牙,UART,HOST,HCI
From: https://www.cnblogs.com/bluestorm/p/18316201

相关文章

  • 协议篇-深入解析以太网ARP协议
    简介        ARP是TCP/IP协议族中的一个重要协议,‌主要用于局域网内部,‌当主机或网络设备需要发送数据到另一个主机时,‌必须知道对方的网络层地址(‌即IP地址)‌。‌然而,‌仅有IP地址是不够的,‌因为IP数据报文必须封装成帧才能通过物理网络发送,‌因此发送站还需要知道接......
  • 蓝牙H4传输层协议
    蓝牙几种不同接口的传输协议:H2/H4/H5/BCSP/SDIO及区别H2:基于USB的传输H4:基于五线UART(RX/TX/CTS/RTS/GND带硬件流控)的传输,最简单的传输方式,只在HCIrawdata前面加上一个type;H5:基于三线UART(RX/TX/GND)的传输,需要软件协议层加一个数据完整性校验机制;BCSP:基于UART的传输SD......
  • 【蓝牙】蓝牙配对你需要知道这些
    蓝牙配对是指两个蓝牙设备之间建立安全连接的过程,确保数据传输的安全性和可靠性。以下是蓝牙配对流程的深入分析及其底层原理。一、蓝牙配对流程概述1.设备发现(Discovery)蓝牙设备首先进入发现模式,使其能被其他设备检测到。//开始设备扫描BluetoothAdapterbluetoothA......
  • 位运算知识点概览
    前言计算机位运算是处理整数值的基本操作,直接在二进制位上进行操作。理解位运算的要点对于编程和优化代码非常有用。以下是位运算的主要操作和一些常见的应用:1.基本位运算操作与运算(AND)&将两个数的对应位进行逻辑与操作。例子:0101&0011=0001或运算(OR)|将两个数的对......
  • DH协议-迪菲-赫尔曼密钥交换协议
    DH算法即Diffie–Hellmankeyexchange-迪菲-赫尔曼密钥交换协议,是一种密钥交换的方法。主要用于TLS握手中安全的交换对称加密密钥。根据不同的算法,DH协议可以分为基于离散对数算法StaticDH:静态DH协议(服务端私钥固定)DHE:临时私钥DH协议(服务端私钥随机)基于ECC椭圆曲线......
  • HTTP协议解析
    HTTP协议解析详解HTTP(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。它是客户端和服务器之间进行请求和响应的标准协议。理解HTTP协议的解析过程对于开发WEB应用至关重要,因为它定义了客户端和服务器如何进行通信。1.HTTP协议的基本概......
  • 嵌入式C++、FreeRTOS、MySQL、Spring Boot和MQTT协议:智能零售系统详细流程介绍(代码示
    项目概述随着科技的发展,零售行业正经历着一场数字化转型。智能零售系统通过集成嵌入式技术和大数据分析,为商家提供了高效的运营管理工具。该系统的核心目标是提升顾客体验、优化库存管理、降低运营成本以及实现精准营销。本项目将结合多种技术栈,包括嵌入式硬件、嵌入式软件、......
  • 嵌入式C++、InfluxDB、Spark、MQTT协议、和Dash:树莓派集群物联网数据中心设计与实现(代
    1.项目概述随着物联网技术的快速发展,如何高效地收集、存储和分析海量IoT设备数据成为一个重要课题。本文介绍了一个基于树莓派集群搭建的小型物联网数据中心,实现了从数据采集到分析可视化的完整流程。该系统采用轻量级组件,适合资源受限的边缘计算环境。主要功能包括:通......
  • 探索ESP32-A2DP:一个强大的蓝牙音频解决方案
    探索ESP32-A2DP:一个强大的蓝牙音频解决方案项目简介是一个基于EspressifSystemsESP32微控制器的开源项目,它实现了Bluetooth低能耗(BLE)和高级音频分布配置文件(A2DP)。这个项目允许你的ESP32设备作为高质量的蓝牙音频播放器,可以接收来自任何支持A2DP源的设备(如智能手机、电脑)的音频......
  • 【AI资讯早报】AI科技前沿资讯概览:2024年7月22日早报
    【AI资讯早报,感知未来】AI科技前沿资讯概览,涵盖了行业大会、技术创新、应用场景、行业动态等多个方面,全面展现了AI领域的最新发展动态和未来趋势。1.欧盟推进人工智能监管立法近日,欧盟在《欧盟官方公报》上正式公布了其人工智能法案,标志着欧洲在AI监管领域迈出了重要一步。该......