蓝牙概述及基本架构介绍

打印 上一主题 下一主题

主题 842|帖子 842|积分 2526

1. 概述

1.1 蓝牙的概念

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包罗移动电话、PDA(掌上电脑)、无线耳机、条记本电脑、相关外设等浩繁设备之间进行无线信息互换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,利用IEEE802.11协议。
1.2 蓝牙的发展历程

自1994年由爱立信推出至今,蓝牙技术已经走过了20个光阴。从最初的Bluetooth V1.0,到Bluetooth V5.2,经历了近9个版本的修订后,发展为当前的状态。
“蓝牙”的形成配景:
1998 年 5 月,爱立信、诺基亚、东芝、 IBM和英特尔公司等五家闻名厂商, 在联合开展短程无线通信技术的标准化运动时提出了蓝牙技术,其宗旨是提供一种短距离、 低本钱的无线传输应用技术。
芯片霸主 Intel 公司负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发, IBM 和东芝负责条记本电脑接口规格的开发。
1999 年下半年,闻名的业界巨头微软、摩托罗拉、三星、朗讯与蓝牙特别小组的五家公司共同发起创建了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。
全球业界即将开发一大批蓝牙技术的应用产品, 使蓝牙技术呈现出极其广阔的市场前景,并预示着 21 世纪初将迎来波澜壮阔的全球无线通信海潮。
蓝牙版本发布时间最大传输速率传输距离蓝牙1.01998723Kbps10米蓝牙1.12002810Kbps10米蓝牙1.220031Mbps10米蓝牙2.0+EDR20042.1Mbps10米蓝牙2.1+EDR20073Mbps10米蓝牙3.0+HS200924Mbps10米蓝牙4.0-4.22010/2013/201424Mbps50米蓝牙5.0-5.22016/2019/202048Mbps300米

  • 第一代蓝牙:关于短距离通讯早期的探索,利用的是BR技术,此时蓝牙的理论传输速率,只能到达721.2Kbps。
  • 第二代蓝牙:新增的 EDR(Enhanced Data Rate)技术,使得蓝牙设备的传输率可达 3Mbps。
  • 第三代蓝牙:核心是 AMP(Generic Alternate MAC/PHY),这是一种全新的交替射频技术,支持动态地选择精确射频,传输速率高达 24Mbps
  • 第四代蓝牙:主推” Low Energy”低功耗, BLE(Bluetooth Low Energy)低功耗功能
  • 第五代蓝牙:开启「物联网」期间大门,在低功耗模式下具备更快更远的传输能力
1.3 蓝牙技术概述

蓝牙协议包罗两种技术:BR:Basic Rate和LE:Low Energy。这两种技术都包罗搜刮(discovery)管理、连接(connection)管理等机制,但它们是不能互通的。
厂商假如只实现了一种,那么只能与同样实现该技术的设备互通。
假如厂商要确保能和全部的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。
1.3.1 Basic Rate(BR)



  • BR:Basic Rate是正宗的蓝牙技术,可以包罗可选(optional)的EDR(Enhanced Data Rate)技术,以及交替利用的(Alternate)的MAC(Media Access Control)层和PHY层扩展(简称AMP(Alternate MAC and PHY layer extension))。
  • BR:最早期的蓝牙技术,速率只能到达721.2Kbps,在那个年代,已为高大上了。
  • EDR:随着技术的提升,利用EDR技术的蓝牙,理论速率可以到达2.1Mbps。
  • AMP:利用AMP技术的蓝牙,理论速率可以到达54Mbps。
AMP的Alternate交替利用体如今:由于蓝牙自身的物理层和AMP技术差异太显着,BR/EDR和AMP是不能同时利用的。
简朴的说,就是:BR和EDR是可以同时存在的,但BR/EDR和AMP只能二选一。
1.3.2 Low Energy(LE)

上面所讲的BR技术的进化门路,就是传输速率的加快、加快、再加快。但能量是守恒的,你想传的更快,代价就是斲丧更多的能量。而有许多的应用场景,并不关心传输速率,反而非常关心功耗。这就是Bluetooth LE(称作蓝牙低功耗)产生的配景。
从它的英文名字上就可以看出它是一种低功耗蓝牙技术,是蓝牙技术联盟设计和贩卖的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等范畴的新兴应用。
低功耗蓝牙与经典蓝牙利用相同的2.4GHz无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙利用的调制体系更简朴。
LE技术相比BR技术,差异非常大,大概说就是两种差别的技术,凑巧都加一个“蓝牙”的前缀而已。
如今BLE主要广泛应用于IoT产品范畴。
技术规范经典蓝牙(BT)低功耗蓝牙(BLE)无线电频率2.4GHz2.4GHz距离10米最大100米发送数据所需时间100ms<3ms响应延时约100ms6ms安全性64/128-bit及用户自定义的应用层128-bit AES及用户自定义的应用层能耗100%(ref)1%-50%空中传输数据速率1-3Mb/s1Mb/s主要用途手机 游戏机 耳机 汽车 PC手机 游戏机 PC 智能穿着设备汽车 家用电子 2. 蓝牙的基本架构

2.1 芯片架构

蓝牙的核心体系,由一个Host和一个或多个Controller构成。


  • BT Host:一个逻辑实体,在HCI(Host Controller Interface)的上层。
  • BT Controller:一个逻辑实体,在HCI(Host Controller Interface)的下层。
Bluetooth的主控制器,可能是以下几种:


  • BR/EDR Controller:内部包含Radio, Baseband,Link Manager,可选的HCI。
  • LE Controller :内部包含LE PHY,Link Layer ,可选的HCI
  • BR/EDR & LE Controller:BR/EDR与LE的组合的控制器
  • MAC/PHY (AMP) Controller:二级控制器,可替换的,内部包含 802.11 PAL (Protocol Adaptation Layer),802.11 MAC,PHY,可选的HCI。
根据Host与Controller的构成关系,常见的蓝牙芯片也分为以下几种:


  • 单模蓝牙芯片:单一传统蓝牙的芯片,单一低功耗蓝牙的芯片。即(1个Host结合1个Controller)
  • 双模蓝牙芯片:同时支持传统蓝牙和低功耗蓝牙的芯片。即(1个Host结合多个Controller)
因此,蓝牙芯片就会有以下几种架构:

2.2 协议架构

蓝牙的协议架构我们从两个视角来进行熟悉。
2.2.1 官方协议中所展示的蓝牙协议架构


2.2.1.1 全局分析


  • Controller:


  • BR/EDR Controller:由Link Manager、Link Controller、BR/EDR Radio构成
  • LE Controller:由Link Manager、Link Controller、 LE Radio 构成
  • AMP Controller:由 AMP PAL, AMP MAC, AMP PHY构成

  • Host:


  • BR/EDR Host:由 L2CAP、SDP 、GAP 构成
  • LE Host:由 L2CAP、SMP 、GAP 、Attribute protocol、GATT构成
2.2.1.2 局部分析


  • Host层


  • Channel Manager:通道管理,主要用于创建、管理、关闭L2CAP通道,用于服务协媾和应用数据的传输。
  • L2CAP Resource Manage:L2CAP资源管理,主要负责管理分片的PDU的精确提交。
  • Security Manager Protocol:SMP安全管理协议,主要负责生成加密密钥和身份密钥。
  • Attribute Protocol:ATT,属性协议,主要负责服务端与客户端点到点的数据传输。
  • AMP Manager Protocol:直接利用L2CAP与远程设备通信。
  • Generic Attribute Profile:GATT,提供更多的功能,概要文件形貌了属性服务器中利用的服务条理结构、特征和属性,用于LE设备
  • Generic Access Profile:GAP,标识了根本的蓝牙设备的通用功能

  • Controller层


  • Device Manager:控制蓝牙设备的通用举动,负责与蓝牙通信过程中,全部的与数据无关的操作,如查询设备,连接设备
  • Link Manager:链路管理,主要负责创建,修改,释放逻辑链路。
  • Baseband Resource Manager:基带资源管理,主要负责全部的访问无线电媒体
  • Link Controller:链路控制,主要负责从编码和解码蓝牙数据包
  • PHY:物理层,主要负责发送,吸取物理通道的信息包
2.2.2 HW层,Transport层,Host层


2.2.2.1 HW层——蓝牙芯片层

HW层,指的是蓝牙芯片层,也就是我们上面说的Controller,包罗以下几个部分:


  • RF(RADIO):射频层,本地蓝牙数据通过射频发送给远端设备,而且通过射频吸取来自远端蓝牙设备的数据。
  • BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化,实现基带协媾和别的的底层连接规程。
  • LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的创建、验证、链路设置等操作
  • HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,而且吸取到远端的数据,通过HCI上报给协议栈。
  • BLE PHY:BLE的物理层
    PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,敏捷度以及selectivity等射频指标。
  • BLE LL:BLE的链路层
    LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,好比具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何吸取,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去大概收回来,对数据进行怎样的解析则交给上面的GAP大概ATT。
2.2.2.2 Transport——数据传输层

Transport层,主机控制层接口,通过硬件接口UART/USB/SDIO把HOST协议层的数据发送给Controller层,而且吸取Controller层的数据。
该部分有几个协议:


  • H2:基于USB的传输
  • H4:基于UART的传输,最简朴的传输方式,只在HCI raw data前面加上一个type
  • H5: 基于UART的传输
  • BCSP: 基于UART的传输
  • SDIO :基于SDIO的传输
H4需要蓝牙芯片的UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND接到MCU;
H5只需要蓝牙芯片的UART_TX/UART_RX/VCC/GND接到MCU就可以通信。
2.2.2.3 HOST——协议层

HOST层,此部分就是蓝牙协议栈,该部分包罗多个协议:


  • L2CAP(Logical Link Control and Adaptation Protocol):逻辑链路控制与适配协议,将ACL数据分组,对高层应用的数据进行分组,并提供协议复用和服务质量互换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务。
    L2CAP对LL进行了一次简朴封装,LL只关心传输的数据自己,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。
  • SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议,为应用步调提供发现可用服务,并确定服务特征的方法。
  • RFCOMM(Serial Port Emulation):串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM
  • SPP(SERIAL PORT PROFILE):蓝牙串口协议
  • HID(HUMAN INTERFACE DEVICE):人机接口协议,HID还是有许多广泛的用途的,好比蓝牙鼠标,蓝牙键盘,蓝牙自拍杆,蓝牙手柄等。
  • IAP:苹果的特有协议,分为IAP1/IAP2,一般做Carplay大概iPod功能会涉及到该协议
  • PBAP(Phone Book Access):蓝牙电话本访问协议
  • MAP(MESSAGE ACCESS PROFILE):蓝牙短信访问协议
  • OBEX:对象互换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX
  • HFP(Hands-Free):蓝牙免提协议
  • HSP:蓝牙耳机协议,最开始的蓝牙耳机协议,算是一个简化版的HFP。
  • A2DP(Advanced Audio Distribution): 蓝牙音乐协议
  • SM: 蓝牙BLE安全管理协议
    SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要思量的工作。
  • GAP(GENERIC ACCESS PROFILE):它定义了蓝牙设备的基本要求。
    它联系了全部的差别的层之间的交互,也形貌了设备发现、创建连接、安全、认证、关联模子和发现服务的举动和方法。
    对于BR/EDR,它定义了一个蓝牙设备,包罗无线电、基带、链路管理器、L2CAP和服务发现协议(SDP)功能。
    对于LE,它定义一个物理层(PHY),链路层,L2CAP,安全管理器,属性协媾和通用属性设置文件。
    GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简朴的那一种。GAP简朴的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP如今主要用来进行广播,扫描和发起连接等。
  • ATT(Attribute Protocol):蓝牙属性协议,用于发现、读、写对端设备的协议(针对BLE设备),ATT允许设备作为服务端提供拥有关联值的属性集 ,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端。
    简朴来说,ATT层用来定义用户命令及命令操作的数据,好比读取某个数据大概写某个数据。BLE协议栈中,开发者打仗最多的就是ATT。BLE引入了attribute概念,用来形貌一条一条的数据。Attribute除了定义数据,同时定义该数据可以利用的ATT命令,因此这一层被称为ATT层。
  • GATT(Generic Attribute Profile):蓝牙通用属性协议,形貌了一种利用ATT的服务框架 ,该框架定义了数据互换的格式。
    GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出题目,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。
GATT与ATT的关系:GATT 是脱胎于 ATT ,ATT 是 Attribute Protocol Specification 属性规范协议,注意ATT是协议,而GATT是规范,两者差别点在于 ATT规定了数据格式,而 GATT 则是按照 ATT 的格式将具体数据填充进去。
2.2.3 BLE蓝牙体系架构




3. 市场常见的蓝牙技术方案

3.1 SOC单芯片方案

一般是半导体厂商半开源协议栈,把开发的蓝牙协议栈直接烧写到蓝牙芯片中,(好比CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,乐鑫ESP32等等),架构如下:

市场上的常见产品:蓝牙音箱,蓝牙耳机,蓝牙手环,蓝牙心率带
3.2 SOC蓝牙+MCU方案

就是在1)的根本上,通过特定的interface(UART居多),发送自定义的command来到达想要的功能,好比发送0x01代表搜刮周围设备,当然在产品中肯定不会定义这么简朴的command,一般要加上command id + command len + command para data + command check sum来实现功能。
架构如下:

此部分的应用一般用于外设功能相对于复杂,需要驱动许多外设,但是单芯片方案的性能达不到的情况下一般用这种方案。
3.3 蓝牙host+controller分开方案

这种应用算是蓝牙最复杂的应用,适用于蓝牙利用情景较复杂的情况下利用,好比车载蓝牙等。客户需要有许多蓝牙协议,好比蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP),BLE,HID,假如你说以上还能用soc做,那么再加上Carplay的IAP/IAP2,Android Auto的RFCOMM BT呢,基本以上就需要这种方案了。
此中Transport是一个协议,H2就是在USB的根本上的协议,H4,H5,BCSP是UART根本上的协议,当然另有SDIO。

市场上常见产品:手机,功能较为复杂的蓝牙手表。
4 Bluez介绍

4.1 Bluez概述

BlueZ 是官方 Linux Bluetooth 栈,由主机控制接口(Host Control Interface ,HCI)层、Bluetooth 协议核心、逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音频层、其他 Bluetooth 服务、用户空间后台历程以及设置工具构成。
BlueZ 的架构主要分为以下几个组件:


  • HCI(Host Controller Interface)层:这是 BlueZ 与蓝牙硬件之间的接口层。它负责与蓝牙控制器进行通信,发送和吸取命令、事件和数据包。HCI 层通常由 Linux 内核提供的驱动步调来实现。
  • L2CAP(Logical Link Control and Adaptation Protocol)层:L2CAP 是蓝牙协议栈中的一个紧张组件,提供了对称的、面向连接的数据通佩服务。它在底层的物理链路之上创建逻辑连接,并负责分配信道和数据包的传输。
  • SDP(Service Discovery Protocol)层:SDP 提供了一种机制,用于在蓝牙设备之间发现和形貌可用的服务和其特性。它允许设备查询其他设备上支持的服务,并获取服务的详细信息。
  • RFCOMM(Radio Frequency Communication)层:RFCOMM 是一种在 L2CAP 上运行的协议,它模仿了串行通信接口,使蓝牙设备能够像利用串口一样进行数据通信。
  • GAP(Generic Access Profile)层:GAP 定义了蓝牙设备之间的通用访问规范,包罗设备发现、连接和身份验证等功能。它定义了设备的角色、广播和扫描举动,以及与配对和安全性相关的规则。
  • GATT(Generic Attribute Profile)层:GATT 是蓝牙 Low Energy(LE)模式中的一个紧张概念,用于定义蓝牙设备之间的通信协议。它基于客户端-服务器模子,此中服务提供者提供各种服务,并通过 GATT 协议使客户端可以读取和写入服务的属性。
BlueZ 还提供了一组丰富的工具和库,用于在 Linux 体系上开发和管理蓝牙应用步调。这些工具包罗 hciconfig(用于设置 HCI 接口)、hcitool(用于执行蓝牙设备和操作的低级别命令)、bluetoothctl(用于交互式地管理蓝牙设备)等。
4.2 Bluez目录介绍

Bluez协议栈下载地址:http://www.bluez.org/
目录架构介绍:

  1. android/ - 用于替代android中bluedroid的android版本bluez源码。
  2. attrib/ - 包含gatttool 源码以及与gatt attribute相关的代码,gatttool程序入口为gatttool.c。   
  3. btio/ - 通过的标准socket接口与BlueZ5 kernel模块通信。
  4. client/ - bluetoothctl源码,程序入口为main.c。
  5. doc/ - BlueZ5 API文档。
  6. emulator/ - 与bluetooth虚拟controller工具相关的代码。
  7. gdbus/ - BlueZ5自带的内部gdbus库源码。
  8. gobex/ - Blue5自带的内部gobex库源码。
  9. lib/ - libbluetooth.so 源码,提供BlueZ4 API,用来支持某些第三方应用。
  10. monitor/ - btmon源码, 程序入口为main.c。
  11. obexd/ - obexd源码,程序入口为src/main.c。
  12. peripheral/ - 与蓝牙ble的GATT相关的代码?。
  13. plugins/ - BlueZ5插件源码(neard,autopair等插件)。
  14. profiles/ - BlueZ5蓝牙上层协议(a2dp,hid等)源码。
  15. src/ - bluetoothd源码,程序入口为main.c。
  16. test/ - Bluez5测试脚本。
  17. tools/ - Bluez5测试工具集源码。
  18. unit/ - PTS测试相关的一些代码?。
  19. README / INSTALL - 配置,编译,安装Bluez5的说明。
  20. Makefile.obexd - 定义obexd编译规则,此文件被include于Makefile.am中。
  21. Makefile.plugins - 定义BlueZ5的plugins(neard,autopair等)的编译规则, 此文件被include于Makefile.am中。
  22. Makefile.tools - 定义BlueZ5测试工具集的编译规则,此文件被include于 Makefile.am中。
  23. Makefile.am - 定义了Bluez5的编译规则。用于automake工具,生成 Makefile.in文件。
  24. Makefile.in - 用于configure脚本,生成最终的Makefile文件。
  25. configure.ac - 用于autoconf工具,生成configure脚本。
  26. configure - 配置编译选项,生成最终的Makefile文件,以及config.h文件
复制代码
bluez核心代码在src目录下,入口函数是main.c,bluez5编译后会生成bluetoothd可执行文件,该可执行文件在linux体系启动时自动加载,加载设置文件放在/etc/init/bluetooth.conf。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表