经典蓝牙BT/低功耗蓝牙BLE知识点随笔

蓝牙相关知识碎片整理,持续更新。

经典蓝牙框架图

BLE框架图

  • PHY(Physical layer物理层)。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。
  • LL(Link Layer链路层)。LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者GATT。
  • HCI(Host controller interface)。HCI是可选的(具体请参考文章: 三种蓝牙架构实现方案(蓝牙协议栈方案)),HCI主要用于2颗芯片实现BLE协议栈的场合,用来规范两者之间的通信协议和通信命令等。
  • GAP(Generic access profile)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。
  • L2CAP(Logic link control and adaptation protocol)。L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。
  • SMP(Secure manager protocol)。SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
  • ATT(Attribute protocol)。简单来说,ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE协议栈中,开发者接触最多的就是ATT。BLE引入了attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。
  • GATT(Generic attribute profile )。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

        经典蓝牙:BT/EDR
        1、HFP音频传输有两种,SCO与ESCO。sco没有重传,esco有重传机制,有一个重传窗口,重传次数不确定,抓包实测,最多两次重传,也可能不重传,esco加入了重传机制,延时也更大;
        2、CVSD(Continuous Variable Slope Delta Modulation,连续可变斜率增量调制)和 mSBC(Modified Sub-Band Coding,改进型子带编码)是蓝牙技术中使用的两种不同的音频编解码器,它们各自有不同的特点和应用场景。
        CVSD的特点:
        简介:CVSD是一种语音编码算法,用于模拟音频信号的数字表示。它是蓝牙HFP 1.5及更早版本中的默认编解码器。
        音频质量:CVSD提供的语音质量一般,支持8 kHz采样频率,达到标准电话音质。
        错误容错:CVSD具有较强的容错能力,适用于带宽受限、容易出现传输错误的场景,比如蓝牙通话。
        实现:CVSD算法相对简单,可以以较低的比特率传输语音或音频数据,适用于各种移动设备和低功耗设备。
        音质:CVSD编码能够较为精确地捕捉音频信号的变化率,因此能够还原出高质量的语音,尽管与宽带语音相比,其音频带宽有限。
mSBC的特点:
        简介:mSBC是专为蓝牙宽带语音(Wide Band Speech)设计的编解码器,基于SBC音频编解码器的修改版本,专门用于语音。
        音频质量:mSBC提供更高的语音质量,支持16 kHz采样频率的宽带语音,可以提供更丰富的音频内容和更清晰的声音。
音质:mSBC能够提供接近CD质量的语音传输,通常与HFP 1.6的其他高级特性一起使用,使得蓝牙耳机在免提电话通话中拥有更好的性能。
兼容性:几乎所有的现代蓝牙通话设备都支持HFP 1.6和mSBC编解码器,这是提供更好通话体验的推荐选择。
        MSBC具有丢包修复功能。
        总结:
        CVSD和mSBC的主要区别在于它们支持的语音质量和适用场景。CVSD是一种较老、音质较低的标准电话音质编解码器,而mSBC是一种较新、质量较高的宽带语音编解码器。选择哪种编解码器取决于蓝牙设备的支持情况和用户对语音通话质量的需求。对于不支持mSBC的蓝牙耳机,在HFP模式下只能工作在CVSD;
        3、蓝牙音乐模式下,控制音量,用AVRCP控制,发送的是音量百分比;通话模式下,音量控制发送的是AT指令,是音量值(0~15)。AT指令主要是蓝牙模块配置,都是有ack的。
        4、AVCTP是AVRCP的协议依赖,AVDTP是A2DP音频传输协议的底层实现框架;
        5、HFP是在串口仿真(RFCOMM)协议上实现的;

        6、经典蓝牙和BLE的速率区别,主要是硬件,调制方式等方面的影响;

        7、搜索分为三种类型:标准/RSSI/EIR

        (1)标准:附带以下信息

        (2)RSSI:那RSSI就是在标准搜索的基础上会附带RSSI。

        (3)EIR:EIR(EXTENDED INQUIRY RESPONSE)就是在这些基础上会附带额外的一些信息,比如remote name,对方支持的UUID等feature(前提是对方注册了EIR)。

        8、L2CAP一共有记下几个操作模式

        • Basic L2CAP Mode((equivalent to L2CAP specification in Bluetooth v1.1) 默认模式,在未选择其他模式的情况下,用此模式。

        • Flow Control Mode,此模式下不会进行重传,但是丢失的数据能够被检测到,并报告丢失。

        • Retransmission Mode,此模式确保数据包都能成功的传输给对端设备。

        • Enhanced Retransmission Mode,此模式和重传模式类似,加入了Poll-bit等提高恢复效率。

        • Streaming Mode,此模式是为了真实的实时传输,数据包被编号但是不需要ACK确认。设定一个超时定时器,一旦定时器超时就将超时数据冲掉。

        • LE Credit Based Flow Control Mode,被用于LE设备通讯。

        • Enhanced Credit BasedFlow Control Mode

 8、A2DP采样率:source端强制要求支持44.1KHz,48KHz的一种,sink端要求44.1KHz,48KHz两种都支持。

9、每个蓝牙服务都有一个唯一官方的UUID,包括经典蓝牙和BLE,比如HFP,SDP,ATT,AVDTP等。

10、总结下来A2DP延迟大有两点原因:1、数据帧到达一定长度才会一次编码压缩。2、错包重传机制导致的延迟。

相关文章链接:

        低功耗蓝牙:BLE
        1、LE Audio的传输方式是ISO,可以实现多从机音频同步,BT音频传输,采用SCO、ESCO,也是同步传输,和BLE的传输机制不一样。A2DP是采用ACL传输,异步传输,具有重传机制,保证音频质量;

        2、BLE功耗调试,主要是,连接间隔,广播间隔,slave latency几个参数。经典蓝牙的sniff机制和slave latency功能差不多,都可以忽略空包,链路层直接处理,ack,不需要应用层参与,节省功耗。如果是带数据的包,链路层可以检测到,不会忽略,会上报到应用层;增大BLE(蓝牙低功耗)的Slave Latency,会加大通信延迟,降低吞吐量,因为数据收发间隔会加大,可用于传输数据的时间分片减少。空包不会上报到应用层,没有发生实际的连接交互,应用层数据就不会收发。例如,若连接间隔(Connection Interval)为100ms,Slave Latency=4,则从设备最多可能间隔400ms才会响应主设备的数据。造成数据堆积与延时;

        3、BLE的数据都是可靠传输,如果丢包,就是应用层的处理问题。如果服务的特征属性是不带response的,链路层会对j接收到的每个包响应,回复ack。如果是有response,则应用层和链路层都会回复。但是有response的,链路层回复是在同一次连接事件恢复,应用层的回复是需要等下一次连接事件回复,所以带response的属性,传输速率会变慢,功耗也会变大;

        4、 在蓝牙低功耗(BLE, Bluetooth Low Energy)中,Primary Service(主服务)和Secondary Service(次服务)是用来组织GATT(Generic Attribute Profile)数据库的一种方式。它们并不是强制性的,BLE设备可以不使用这些服务,这取决于设备的设计和所需的功能

        主服务(Primary Service):

  • 定义:主服务是GATT(Generic Attribute Profile)架构中的顶级服务,不能被其他服务包含。
  • 作用:主服务提供了一种方式来组织设备的功能,使得客户端(Central)能够发现和访问这些功能。
  • 功能:主服务通常用于定义设备的基本功能,例如,一个心率监测器设备可能会有一个心率测量的主服务。

        次服务(Secondary Service):

  • 定义:次服务可以包含在其他服务内部,可以是另一个服务的一部分,形成一个服务组。
  • 作用:次服务用于进一步组织和分组相关的特征,使客户端能够更有效地发现和访问相关数据。
  • 功能:次服务通常用于提供额外的功能或数据集,这些数据集与主服务相关但可能不是核心功能的一部分。

        必须性:

  • BLE设备不必须拥有主服务或次服务。服务的组织取决于设备的特定需求和设计。
  • 某些应用可能只需要一个主服务来提供所有必要的功能。
  • 其他应用可能需要多个服务,包括主服务和次服务,以提供更复杂的功能集和数据组织。

        具体功能:

  • 数据组织:服务允许设备逻辑地组织数据和功能,使得客户端能够更容易地发现和交互。
  • 特性聚合:服务可以将相关的特征聚合在一起,例如,健康和健身设备可能会有一个主服务用于基本健康数据,以及多个次服务用于不同类型的传感器数据。
  • 发现性:服务使得客户端能够通过服务发现过程找到并访问设备的功能。

5、蓝牙2.0的传输速率能达到2Mbps,而蓝牙3.0的传输速率能够达到24Mbps。到了蓝牙4.0,引入了低功耗蓝牙技术,其传输速率在1Mbps(LE模式)到3Mbps(EDR模式)之间,而蓝牙5.0则进一步提升了传输速率,LE模式下可达2Mbps,EDR模式下可达50Mbps。

6、不带request的命令只有2个:write command和notification,其余的命令都是带request:所有 read命令,所有write 命令,find命令以及indicate命令

7、主机主要具有读写属性,用于与从机进行数据交互。
从机可以具有Notify,Indicate以及读写属性,从机读写是允许主机来读写,不是从机可以主动向主机读写。
读属性(Read):允许主机读取特征值。
写属性(Write):允许主机写入特征值。
通知属性(Notify):从机可以主动向主机发送通知数据,主机不需要回复确认。
指示属性(Indicate):从机向主机发送指示数据,主机需要回复确认

相关文章链接:

https://www.cnblogs.com/iini/p/8969828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星辰&流星

感谢支持,创作不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值