蓝牙协议栈概览

蓝牙底层结构

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容