我是靠谱客的博主 笑点低战斗机,最近开发中收集的这篇文章主要介绍蓝牙第一章:概述、无线技术协议和基带协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.蓝牙技术的诞生与发展

1994年,爱立信公司为了在移动电话及其附件之间探求一种新的低功耗低成本空中接口,要能够去除连接移动电话与耳机、笔记本电脑及其它设备之间繁杂的线缆,更主要的目的则是分析有多少种不同的通信设备可以通过移动电话接入到蜂窝网中

爱立信公司得出的结论是蜂窝网的最后一段应该是短距离的无线连接, 爱立信将这项新的无线通信技术命名为蓝牙

蓝牙是一种低功耗的无线技术。主要优点有:

  • 蓝牙技术工作在全球通用2.4GHz ISM(工业、科学、医学)频段,从而消除了 “国界”的障碍
  • 随时随地地用无线接口来代替有线电缆连接
  • 具有很强的移植性, 可应用于多种通信场合, 如 WAP (无线应用协议)、GSM(全球移动通信系统)、DECT(欧规数字无绳通信)等
  • 低功耗,对人体伤害小
  • 蓝牙集成电路简单,成本低廉,实现容易,易于推广
  • 任意蓝牙设备一旦搜寻到另一个蓝牙技术设备,马上就可以建立联系,而无需用户进行任何设置

蓝牙抗干扰手段:
由于ISM 频段是对所有无线电系统都开放的的频段,因此家电、无绳电话、微波炉等,都可能是蓝牙的干扰源,为此,蓝牙技术特别设计了快速确认跳频方案以确保链路的稳定。与其它工作在相同频段的系统相比,蓝牙跳频更快、数据分组更短,这使蓝牙技术系统比其它系统更稳定

蓝牙技术指标和系统参数表

技术指标指标值
工作频段ISM频段:2.402GHz~2.480GHz
双工方式全双工,TDD时分双工
业务类型支持电路交换和分组交换业务
数据速率1Mb/s
非同步信道速率非对称连接721kb/s、57.6Kb/s、对称连接
同步信道速率64Kb/s
功率100mW
跳频频率数79个频点/MHz
跳频速率1600跳/秒
工作模式PARK/HOLD/SNIFF
数据连接方式面向连接业务SCO,无连接业务ACL
纠错方式1/3FEC、2/3FEC、ARQ
鉴权采用反应逻辑算术
信道加密采用0位、40位、60位加密字符
语音编码方式连续可变斜率调制CVSD
发射距离一般可达到10m,增加功率情况下可达到100m

匹克网

  • 蓝牙支持点对点和点对多点的通信,在点到多点的连接中,几个蓝牙设备共享信道。两个或几个共享统一信道的设备之间形成一个匹克网(Picnet),其中一个设备作为主设备,其它的设备作为从设备,一个匹克网中,最多可以有7个从节点同时处于激活状态(还可以有更多的设备处于停等状态。这些处于停等状态的从设备与主设备保持同步
    在这里插入图片描述

匹克网主要由主设备和从设备构成。主设备负责提供时钟同步信号跳频序列,而从设备一般是受控同步的设备,并接收主设备的控制。在同一匹克网中,所有设备均采用同一跳频序列。一个匹克网中一般只有一个主设备,而处于活动状态的从设备目前最多可达7个

蓝牙协议模型

  • 物理层
  • 核心协议
    基带协议:基带和链路控制层确保匹克网内各蓝牙设备之间射频构成物理连接
    LMP(链路管理协议):负责蓝牙各设备间连接的建立和设置,通过连接的发起、交换、核实来进行身份验证和加密,通过协商确定基带数据分组大小,控制无线设备的节能模式和工作周期,以及匹克网内设备的连接状态
    L2CAP:当业务数据不经过 LMP 时,L2CAP 为上层提供服务,采用了多路复用技术、分段重组技术及组概念
    SDP:查询到设备和服务类型,从而在蓝牙设备间建立相应的连接
  • 电缆替代协议:RFCOMM,在蓝牙基带协议上仿真 RS232 控制和数据信号,为使用串行线传送机制的上层协议(如 OBEX)提供服务
  • 电话传送控制协议:定义了蓝牙设备间建立语音和数据呼叫的控制信令,定义了处理蓝牙 TCS 设备群的移动管理进程

在这里插入图片描述

2.蓝牙无线技术协议

跳频特性
蓝牙工作在 2.4GHz ISM(工业、科学、医学)频段。为了增强抗干扰能力而采用了跳频技术

蓝牙协议中定义的调制模式:

  • 强制模式(基本数据传输速率BR):采用二进制 FM(Frequency Modulation) 键控调制,可以减少接收机的复杂性,空中数据传输率为1Mbps
  • 可选模式(增强数据传输速率EDR):使用π/4-DQPSK(π/4差分正交相移键控) 和 **8DPSK(八差分相移键控)**两种不同的 PSK 调制,前者总空中数据传输率是 2Mbps,后者则达 3Mbps

2.1 基本数据速率BR

  • 蓝牙采用的调制方式是BT=0.5,调制指数在 0.28~0.35 之间的 GFSK。二进制的“1”用一个正的频率偏移表示,二进制的 0 用一个负的频率偏移表示。定时符号偏差应小于±20ppm

  • BR 模式下每个数据分组由接入码有效信息三个部分组成

  • 接入码(access code)占72位或者68位,头(header)占54位,净荷(payload)的范围是0-2745
    在这里插入图片描述

2.2 增强数据传输速率EDR

与BR相比区别是数据内的调制方式有改变

  • 接入码 (access code )和分组头(packet header)通过 BR 模式的 1Mbps 的 GFSK(高斯频移键控)调制方式来传输
  • 后面的同步序列、净荷以及尾序列通过 EDR 模式的 PSK(相移键控)调制方式来传输
  • EDR 模式下每个数据分组由接入码保护周期同步序列有效信息六个部分组成
    在这里插入图片描述
    接入码
  • 每个分组都是用接入码作开始表示,若头信息紧随其后,则接入码长度是72位,否则接入码长度是68位,就是截短的接入码,截短的接入码不包括tailer,截短的接入码用在寻呼查询休眠状态下,在这种情况下,接入码本身就相当于信令报文,它没有净荷
  • 接入码主要用于同步DC补偿平衡识别
  • 在接收设备中,滑动相关器关联于接入码,且当超过门限电平时被激发,该激发信号被用于确定接收时序
  • 接入码包含前同步码(preamble)、同步字(sync word)和(trailer),其中尾是可选的
    在这里插入图片描述
    前同步码
  • 前同步码是一个方便用于DC补偿的固定0-1模式的四位符号
  • 该序列或是1010或是0101,取决于下述同步字的LSB分别是1或0
    在这里插入图片描述
    同步字
  • 同步字是一个取自于24位地址(LAP)的 64 位代码字
  • 对于CAC使用主设备的LAP、对于GIAC和DIAC、 保留字、 使用专用LAP、对于DAC使用从设备的LAP
  • 一个较好的同步字自相关特性可以改善定时同步过程

  • 尾同下面的接入码的数据头一样是一个附加的同步字
  • 尾与同步字的三位MSB一起形成一个用于扩展DC补偿的0,1交替的7位模式,尾序列究竟是1010或是0101取决于同步字的MSB分别是0或1

分组头

  • 头包含链接控制(LC)信息并由六个字段组成:
    AM_ADDR 3 位:活动成员地址
    TYPE 4 位:类型码
    FLOW 1 位:流控制
    ARQN 1 位:确认指示
    SEQN 1 位:序列号
    HEC 8 位:头错误校验

  • 包含 HEC 的整个头信息由18位组成,且该头信息以1/3比例前向纠错码编码,因此头信息为54位编码格式
    在这里插入图片描述

  • LT_ADDR:3位的LT_ADDR字段包含了分组的逻辑传输地址。这个字段表示了在一个主-从传输时隙中分组发送的目的地的从设备地址,并表示了一个从-主传输时隙的源从设备地址

  • 类型:可以有 16 种不同类型,对类型码的解释取决于与分组相关的物理链接类型。首先它需要确认分组是以SCO链接或是以ACL链接发送,其次它还需要确认是以SCO分组或以ACL分组接收,类型(TYPE)码确定了分组将占用多少个时隙,这种方法使得没有编址的接收设备在持续的剩余时隙不能进行监听

  • :被用于额外ACL链接分组的流量控制

  • 确认指示:表明使用CRC的有效载荷的正确传输,该确认指示可以是一个以ACK表示的有效确认或是一个以NAK表示的无效确认

  • 序列号:提供一个序列码方式来排列分组流的顺序

  • 头错误检验:HEC由一个8位字组成,HEC生成器用8位值进行初始化,初始化后,HEC形成10位头。在校验HEC之前,接收装置必须以适当的8位UAP(或 DCI)来初始化HEC校验电路

3.基带协议

基带层协议决定空中数据何时收发哪个频点收发收发时比特流如何处理使用哪一条信道

3.1 蓝牙时钟

  • 每个蓝牙设备都有一个内部系统时钟,称为本地时钟。它决定了收、发信机的定时跳频
  • 蓝牙时钟取自一个自由运转的时钟,该时钟永不会被调整和关闭。从设备要通过在本地时钟上加上一个补偿值(offset)来和主设备进行同步
  • 蓝牙时钟与每天的时间无关,因此,它可用任何值初始化
  • 蓝牙时钟作为蓝牙收、 发信机的时钟, 它的分辨率至少是TX或RX的时隙长度的一半即312.5µs,该时钟周期约为一天
  • 如果时钟用计数器来实现,那么 28 位计数器的计数值范围是 228-1。时钟的 LSB 每 312.5µs 增加 1,这样它的时钟频率就是 32KHz
  • 在蓝牙设备里,时钟确定了临界时间并激发事件。对蓝牙系统来说有四个时间段非常重要:312.5µs625µs1.25ms1.28S。这些时间段分别于定时器位CLK0CLK1CLK2CLK3 对应
    在这里插入图片描述
  • 在不同模式和状态下蓝牙设备具有不同的时钟特性:
  • 分为CLKN本地时钟CLKE预计时钟CLK主时钟,CLKE 和 CLK 是由 CLKN 加上一个补偿值来得到
  • 接收机使用了 CLKN,这样寻呼方可以加速连接建立过程
    在这里插入图片描述
    CLK主时钟
  • CLK 是匹克网的主时钟,是匹克网中主设备的实际运行时钟,用于调度匹克网中所有的定时操作
  • 所有的从设备都使用 CLK 来调度自己的收发,CLK 是由 CLKN 加一个偏移量得到的,主设备的 CLK 就是 CLKN,从设备的 CLK 是根据主设备的 CLKN 得到的
  • 存在的漂移使得 CLK 不够精确,因此从设备的偏移量必须周期性地进行更新,使其 CLK 基本上与主设备的 CLKN 相等

3.2 蓝牙设备编址

  • 蓝牙的收、发信机都分配有一个 48 位的蓝牙设备地址 (BD_ADDR),该地址来自IEEE802 标准
  • 这个 48 位地址被分为三个部分
    LAP 字段: 由 24 位构成的低地址部分
    UAP 字段: 由 8 位构成的高地址部分
    NAP 字段:由 16 位构成的非有效地址部分
    在这里插入图片描述

3.3 接入码

  • 在蓝牙系统中,所有在物理信道的传输都由接入码作为开始。蓝牙共定义了三种不同的接入码:
    设备接入码 (DAC):用于呼叫,呼叫扫描呼叫响应子状态
    信道接入码 (CAC):用在CONNECT 状态,形成在匹克网物理信道上交换的分组的开头
    查询接入码 (IAC):用于查询操作

3.4 物理信道

  • 蓝牙系统的最低结构层是物理信道,所有的物理信道都包含了伪随机跳频序列特定传输时隙接入码分组头编码伪随机:一方面它是可以预先确定的,并且是可以重复地生产和复制的,另一方面它又具有某种随机序列的随机特性)
  • 对于基本的和自适应的匹克网 ,用跳频来减低干扰,来满足本地管理的需求
  • 两个设备通信时使用同一个物理信道,收发射机必须在同一时间要有相同的射频频率,并且它们之间要有个容限
  • RF 载波的数量有限,许多蓝牙设备在同一的空间和时间要求独立操作,两个蓝牙设备要把它们自己的发射机调到相同的 RF 载波,这样就会导致物理信道冲突。为了缓冲这种冲突,每个物理信道上的传输都使用接入码,它是物理信道的相关码,信道的接入码代表了物理信道的特性,接入码存在于每个传输分组的头部
  • 一共有4个物理信道:
    基本匹克网信道:用于已经连接的设备
    自适应匹克网信道:用于已经连接的设备
    查询扫描信道:用于发现蓝牙设备
    寻呼扫描信道:用于连接蓝牙设备
  • 一个时间内,蓝牙设备只能使用这 4 种物理信道中的一种,为了支持多路并发操作,设备一般使用信道的时分复用
  • 蓝牙设备和一个物理信道时限频率接入码同步时,那么我们可以说它已经和这个物理信道“连接”了
  • 根据蓝牙设备地址的 UAP 和 LAP,选择跳频序列,根据蓝牙时钟来确定跳频序列的相位
  • 每个传输的接收事件发生时,由跳频选择内核选择 RF 信道。在连接状态下的最大的跳频率为 1600 跳/s,而在查询和寻呼状态时的最大跳频率为3200 跳/s

基本匹克网物理信道

  • 在连接状态下,默认值是使用基本匹克网的物理信道
  • 匹克网中的信道特性完全由匹克网的主设备来确定,主设备蓝牙设备地址(BD_ADDR)确定了跳频序列信道接入码
  • 主设备的系统时钟确立了跳频序列的状态定时设置,通过轮询(POLL)方式控制信道通信
  • 发起连接的蓝牙设备为主设备,主和从的取名只因涉及到信道协议,任何一个设备都可能成为匹克网的主设备,所以一旦匹克网建立,主-从角色就完全可以进行互换
  • 基本匹克网物理信道是由一个通过 79 个射频信道的伪随机跳频序列来体现的
  • 建立了匹克网以后,主时钟就和从时钟进行通信。每个从设备为了要和主时钟同步,必须要加一个补偿值(offset),所有在匹克网中的设备在时间频率跳动上都是同步的
  • 基本匹克网物理信道被分成长度为 625µs 的时隙, 时隙据蓝牙匹克网中主设备的时钟来编号。时隙编号区域从 0~227-1 且循环周期是 227,在这个时隙里,主从设备都能传输分组
  • 蓝牙系统中主─从设备的分组传输采用是分时双工(TDD)交替传输方式,如下图所示,分组最多占用 5 个时隙
    在这里插入图片描述
  • 主发射机总是用偶数时隙(主 CLK1=0)作为起始,而从发射机总是采用奇数时隙(主 CLK1=1)来作为起始
  • 主设备收发时序如下图所示,图中**f(k)**表示信道跳动的频率,k表示时隙数
    在这里插入图片描述
  • 由于存在一些时间误差,定义了一个可变化的窗口,窗口长度为20μs,也就是说它允许接收分组的到达时间提前或者滞后10µs
  • 每从主设备那里接收到一个分组以后,就对这个蓝牙时钟补偿值进行修正

自适应匹克网物理信道

  • 至少使用 Nmin个RF信道
  • 使用自适应信道跳频序列
  • 自适应匹克网物理信道可以基于小于全部 79 个频率的基本匹克网物理信道

寻呼扫描物理信道

  • 虽然在连接过程中主从设备的角色没有优先权,但是主设备是作为寻呼设备的,而从设备是作为寻呼扫描设备

  • 寻呼设备使用寻呼扫描设备的本地时钟的估计值CLKE,用寻呼者的CLKE 加上一个补偿值(offset)来估计接收的 CLKN,使用接收的CLKN后寻呼者可以加快连接建立的速度

  • 寻呼扫描物理信道频率跳动比基本匹克网物理信道的慢,它是一个通过RF信道的慢伪随机跳动序列

  • 寻呼扫描物理信道使用寻呼主机寻呼响应从机寻呼响应寻呼扫描跳频序列

  • 寻呼过程中,主设备发送与要连接的从设备的寻呼报文,寻呼报文是很小的分组, 跳频率为 3200 跳/s

  • 主设备发送寻呼响应分组到从设备,这个分组建立了时序频率同步。从设备接收到寻呼报文以后,将回复一个响应报文给主设备,这个响应报文包括从设备寻呼响应分组,并且要在接收到寻呼报文后 625µs 再回复。从设备在第一个主-从时隙中接收到寻呼报文后,然后在第一个从-主的半时隙内对主设备发送第一个寻呼响应。主设备寻呼响应的时序是基于在之前主-从时隙中发送的第一个寻呼报文的时序的。在第一个寻呼报文和主设备寻呼响应分组之间之间有一个精确的 1250µs 延时。分组是在跳频点 f(k+1)发送的,它是在紧接着接收到寻呼报文的跳频点 f(k)之后的,如下图所示
    在这里插入图片描述

  • 寻呼成功的寻呼响应分组在第二个半时隙的时序的情况如下图所示,从设备接收到在第二个主-从时隙中接收到寻呼报文,然后在第二个从-主时隙中延迟精确的625µs 后,向主设备发送寻呼响应分组。主设备寻呼响应的时序是基于在之前主-从时隙中发送的第一个寻呼报文的时序的。在第一个寻呼报文和主设备寻呼响应分组之间有一个精确的 1250µs 延时。分组是在跳频点 f(k+2)发送的,它是在紧接着接收到寻呼报文的跳频点 f(k+1)之后的
    在这里插入图片描述

查询扫描物理信道

  • 虽然在连接过程中主从设备的角色没有优先权,但是主设备是作为查询设备的,而从设备是作为查询扫描设备

  • 查询和查询扫描时钟用的就是设备的本地时钟

  • 查询扫描物理信道频率跳动比基本匹克网物理信道的慢,它是一个通过RF信道的慢伪随机跳动序列

  • 查询扫描信道的时序由扫描设备的本地蓝牙时钟所决定,跳频序列由通用查询接入码决定

  • 查询扫描物理信道使用查询查询响应查询扫描跳频序列

  • 从设备接收到查询报文以后,给主设备回复一个查询响应分组,在接收到查询报文后625µs回复给主设备的,如下图所示,**f(k)**表示查询跳频序列的频率,**f’(k)**表示查询响应跳频序列的频率。在跳频点 f’(k)主设备接收到分组而在第一个主-从时隙中从设备接收到查询报文
    在这里插入图片描述
    频率选择

  • 蓝牙总共定义了6 种跳频序列,其中基本跳频系统种定义了 5 种,而自适应跳频(AFH)的跳频定位的自适应设置定义了一种
    呼叫跳频序列:该序列带有分布在79MHz上的32个唯一唤醒频率,具有32的长度区域
    呼叫响应序列:该序列覆盖32个唯一与当前寻呼跳频序列一一对应的响应频率,主设备和从设备使用不同规则获得相同序列
    查询序列:该序列带有分布在 79 MHz 上的 32 个唯一唤醒频率,具有32的长度区域
    查询响应序列:该序列复盖 32 (16) 个唯一与当前查询跳频一一对应的响应频率
    基本信道跳频序列:该序列有一个非常长时期,它并不表明在一个短时间间隔中有重复类型,而在短时间间隔中,该序列分布在79跳频频率上
    自适应信道跳频序列:它是源自使用相同信道机制并可以使用小于79频率的基本信道跳频序列,自适应信道跳频序列只在基本信道跳频序列中使用

  • 频率选择方案由两部分组成: 选择一个序列在跳频频率上映射该序列

  • 跳频选择方案的一般框图如下图,从输入到一个特定信道的映射是在选择箱(selection box)中完成的,选择箱包括选择时钟(CLOCK)、冻结时钟(Frozen)、NKoffset地址UAP/LAP(28位)、序列选择(sequence selection)和 AFH 信道映射(AFH_channel_map),时钟输入的来源取决于所选择的跳频序列,每个跳频序列使用时钟的不同位。
    在这里插入图片描述

  • 序列选择输入可以设定为下面的值:寻呼扫描、查询扫描、寻呼、查询、主设备寻呼响应、从设备寻呼响应、查询响应、基本信道、自适应信道

  • 地址输入由 28 位组成,即整个LAPUAP的4位LSB(UAP 的低 4 位),如果使用了基本或者自适应信道跳频序列,则要选择蓝牙设备地址;若选择了寻呼、主设备寻呼响应、从设备寻呼响应或是寻呼扫描跳频序列,那么就要使用寻呼的主设备所给出的蓝牙设备地址作为地址输入;若选择了查询、查询响应或是查询扫描跳频序列,则不管是否涉及到 DIAC,都要将UAP/LAP与GIAC相关作为地址输入

  • 选择方案选择了每个跨度为 64MHz (就是说每个跳频点的一段为 64MHz) 的 32跳频点的一个段同时在一个伪随机序列顺序中对这些跳频点进行访问,接下来又选择不同的32跳频点的另一个段等等,如果选择了基本信道跳频序列,那么输出就生成覆盖 79 个跳频点的伪随机序列。具体过程如下所示:
    在这里插入图片描述

  • RF频率在一个分组的发送过程中保持不变。分组的RF频率由分组的第一个时隙的蓝牙时钟来确定,在一个多时隙分组后第一个时隙的RF频率由这个时隙的蓝牙时钟值决定

  • 单时隙和多时隙分组的跳频定义:
    在这里插入图片描述

  • 从设备在相同的RF信道对主设备发送来的分组进行响应,而这个RF信道就是主设备发送到从设备的RF信道,这就是AFH的相同信道机制,这样,主设备到从设备所用的 RF 信道也被紧接着从设备到主设备的分组所用
    在这里插入图片描述

  • 基本的跳频选择内核如下图所示, X输入决定32跳频段中的状态,而不管X1和Y1在主-从从-主传输之间选择哪种传输方式。A到D的输入决定了段内顺序,E和F的输入决定了跳频频率的映射。内核可以对包含RF信道复数的寄存器进行寻址并访问,将列有所有偶数跳频频率和所有奇数跳频频率的序列进行列表,这样32跳系统将以64MHz为一段
    在这里插入图片描述

  • 选择过程由一次加法运算(ADD)、XOR 操作、排列(PERM)操作、二次加法运算和最后一个寄存器选择操作构成

  • 自适应跳频选择内核是基于基本跳频选择内核的,与基本跳频选择内核的区别是在输入中使用了的AFH信道映射(AFH信道映射是用来表明哪些RF信道可用,哪些不可用的),跳频序列自适应的情况下,RF的信道值由79变为一个比79小的值N,若产生不使用的RF信道则一律映射到使用的RF信道,这个特性使得非 AFH 从设备在匹克网中的其他从设备使用自适应跳频序列时,保持同步变得很容易,RF信道重映射功能如下图所示:
    在这里插入图片描述

3.5 物理链路

  • 一条物理链路表示设备间的一条基带连接,物理链路和物理信道之间式一对一的关系
  • 一个连接会因为很多原因,比如说设备移动到通信范围外、遇到严重的干扰或者断电等而会断开,所以在主从双方都要进行链路监控,从而避免当逻辑传输地址或者休眠地址重分配到另一个从设备而可能引发的一些冲突
  • 为了能够检测到链路丢失,主从双方都要使用一个管理定时器。在物理链路上接收到带有从地址的分组的合法 header 后,这个定时器就被重置为 0。如果在连接状态的任意时刻,定时器达到 supervision TO(定时器的最大值,又称超时周期),连接就被认为是处于断开状态了。在 SCO,eSCO和ACL逻辑传输时都要使用链路管理定时器
  • 超时周期(timeout period,即 supervision TO)是通过链路管理来进行协商的。它的值必须比保持模式的周期(hold period)和呼吸模式的周期(sniff period)的值大

逻辑传输

  • 主设备和从设备之间可以建立不同类型的逻辑传输
    Synchronous Connection-Oriented (SCO) logical transport(同步面向连接逻辑传输)
    Extended Synchronous Connection-Oriented (eSCO) logical transport(扩展同步面向连接逻辑传输)
    Asynchronous Connection-Oriented (ACL) logical transport (异步面向连接逻辑传输)
    Active Slave Broadcast (ASB) logical transport(活动模式下从逻辑传输)
    Parked Slave Broadcast (PSB) logical transport(休眠模式下从逻辑传输)
  • 同步逻辑传输是匹克网中主从之间点对点的逻辑传输。同步逻辑传输典型支持的类型就是像话音和一般的同步数据一样的实时信息。 主设备通过在常规的间隔中使用保留时隙来保持逻辑传输的同步,主设备最大支持 3 条SCO连接。而eSCO传输在保留时隙后有重传窗口
  • ACL逻辑传输也是主从设备间的点对点逻辑传输。它里边不使用保留时隙,主设备和任何一个从设备通过以单时隙为单位建立一个ACL逻辑传输, 包括在从设备已经有其他的同步逻辑传输的情况下,主设备和一个从设备之间只能存在一个ACL逻辑传输
  • 每个在匹克网中处于活动状态下的从设备都被分配了一个3bit的逻辑传输地址(LT_ADDR),全0的LT_ADDR保留给广播报文,主设备没有LT_ADDR
  • 次LT_ADDR分配给每个在匹克网中进行eSCO逻辑传输的从设备,并且只有 eSCO 在这个 LT_ADDR 上传输
  • 主LT_ADDR上传输 ACL,从设备只有和主或次LT_ADDR匹配时才能接收该分组,也可以接收广播分组
  • LT_ADDR只有在从设备在活动模式下才有效,当进入断开或者休眠状态后,从设备的LT_ADDR就被丢弃了
  • 没有指定要到哪个特定的从设备的ACL分组叫做广播分组,可以被任何一个从设备说接收

收发过程

  • 在 ACL、SCO 和 eSCO 逻辑进行传输分组的方法

  • TX流程:下图表示了在 TX 流程中所使用的同步和异步缓冲区,图中只表示了一个 TX 异步缓冲区和一个 TX 同步缓冲区

  • 每个从设备的TX异步缓冲区都是独立的。而对于某个同步的的从设备,可以有一个或多个TX同步缓冲区

  • 每个TX缓冲区包括两个FIFO寄存器:一个current寄存器,LC 可以对它进行访问和读取以完成分组的组装,另一个是next寄存器,基带资源管理器可以访问它,然后载入新的信息

  • 开关S1和S2决定了哪个是current寄存器,哪个是next寄存器。FIFO寄存器输入输出的开关是不能同时连接到同一个寄存器的
    在这里插入图片描述

  • 基带资源管理器从S1指向的寄存器载入新的数据信息,然后就给了链路控制器一个命令,来强制把开关S1变换(S1a 和 S1b 都要同步地变换)

  • 当有净荷数据要发送时,分组器读取current寄存器的值,根据分组类型建立附加有接入码和header的净荷,进行传输

  • 在响应分组中,传输的结果就是报告回复。如果是接收到了 ACK,则开关S1要变换位置;如果是接收到了 NAK,则S1就不变换位置。这种情况下,相同的净荷将在下个 TX 时间进行重传

  • 所有ACL分组利用了异步缓冲区

  • 所有的SCO和eSCO分组中除了 DV 分组外都利用同步缓冲区

ACL业务

  • ACL 传输DM和DH分组,它们的长度是不一样的
  • 对于纯数据业务,默认的分组类型是NULL,这就是说如果不需要发送任何数据,或不需要轮询从设备,主设备就会发送NULL分组来发送链路控制信息到从设备
  • 如果也不需要发送链路控制信息,则主设备就不发送分组

SCO业务

  • SCO逻辑传输只适用于HV和DV(混合数据语音)分组
  • 同步端不断地载入在同步寄存器的next寄存器的内容
  • S2 开关根据Tsco间隔来变换。Tsco间隔在SCO逻辑传输建立时进行协商的

混合数据/语音业务

  • DV分组可以支持数据和话音同时在一个SCO上进行逻辑传输
  • 链路控制器读取**数据寄存器(data register)来填充数据字段而读取话音寄存器(voice register)**来填充话音字段
  • 话音信息都是最新的(new)而数据信息有可能是上次传输失败而重传的数据
  • 如果没有要发送的数据,SCO逻辑传输会在混合数据/话音传输之前自动变换DV分组类型到当前的HV分组类型
  • 如果信道容量允许,在SCO传输的同时,可以用单独的ACL逻辑传输来进行结合数据-话音的传输

eSCO业务

  • eSCO 逻辑传输只支持EV、POLL、NULL分组类型
  • 同步端在同步缓冲区中不断地载入next寄存器中的内容
  • 开关S2根据Tesco间隔来变换状态。这个Tesco是在主从设备间eSCO逻辑传输建立之初通过协商确定的
  • 每个 eSCO时隙,分组器在开关 S2 变换后读取 current 寄存器的内容
  • 主设备和从eSCO设备间用eSCO时隙发送高优先级的控制分组,或主设备和其他从设备间发送ACL分组, 则分组器就会把eSCO报文丢弃而发送控制信息
  • 主设备在主LT_ADDR上通过DM1分组来发送控制信息到eSCO从设备

缺省分组类型

  • 在ACL链路上,主从设备间的传送的缺省类型是NULL
  • 如果没有需要发送的用户信息,那么就发送NULL分组(如果有ACK或STOP信息)或不发送任何分组
  • 主设备通过发送NULL分组来对特定的从设备分配下一个从-主时隙,而从设备不一定要对NULL分组进行响应,如果主设备需要从设备响应,则发送POLL分组

RX流程

  • 对于ACL逻辑传输和同步逻辑传输,RX流程是不一样的
  • 不同于主设备的异步缓冲区,所有的从设备共享一个RX缓冲区(从设备的TX缓冲区是独立的)
  • 对于同步缓冲区,同步逻辑传输是不一样的,它取决于是否需要额外的同步缓冲区
  • 在RX流程中所使用的异步和同步缓冲区如下图所示
  • RX异步缓冲区包括两个FIFO寄存器:一个可以通过链路控制器访问(access)和装载(load)最近的RX分组的净荷;另一个可以通过基带资源管理器进行访问来读取前一个净荷信息
  • RX同步缓冲区也包括两个FIFO:一个是来放置最新收到的话音信息的寄存器,而另一个是由话音程序处理设备来读取的寄存器
  • 由于所收到的分组的 header 里的TYPE信息表明了净荷是数据/或话音信息,因此解分组器(packet de-composer)能自动把信息送入正确的缓冲区
  • 开关S1在每个基带资源管理读取了旧的寄存器的时候切换状态
  • 如果下一个净荷在RX寄存器未空的时候收到时,则就用在返回的下一个TX分组的分组头中用STOP指示。STOP指示在RX寄存器空余了以后移除,SEQN字段在新的ACL净荷存入异步寄存器之前校验
  • 开关S2在SCO和eSCO的每个Tsco或Tesco变换。如果由于在header中的差错,没有接收到同步净荷,开关仍然要变换同步数据处理设备将处理同步数据来解决丢失的部分
    在这里插入图片描述
    流控制
  • 在一个新的载荷到达时,RX ACL缓冲区可能是满的,这时候就需要流控制,设备会在返回的TX分组的header里使用 STOP或GO来控制新数据的传输
  • 收端控制:数据不能被接收时,链路控制器将在返回大分组的header里自动加上STOP指示。STOP由基带资源管理器在RX ACL缓冲区未空的时候返回。当又可以接收新数据的时候,返回GO指示
  • 发端控制:接收到一个STOP信号时,链路控制器就会自动切换到缺省的分组类型。在接收到STOP指示之前刚发送了ACL分组,则要一直进行ACL传输直到收到GO信号。在接收到GO指示以后要进行重传(注意这里缺省分组包含了对接收方的链路控制信息,并且可能包含了同步数据HV或EV分组),接收到 GO 指示时链路控制器就可以恢复当前在TX ACL缓冲区中的数据传输

3.6 逻辑链路

  • 蓝牙规范定义了5种逻辑链路
    链路控制 Link Control (LC)
    ACL控制 ACL Control (ACL-C)
    用户异步/同步 User Asynchronous/Isochronous (ACL-U)
    用户同步 User Synchronous (SCO-S)
    用户扩展同步 User Extended Synchronous (eSCO-S)
  • 控制逻辑链路LCACL-C分别用在链路控制层链路管理层
  • ACL-U逻辑链路可以传送异步或同步用户信息
  • SCO-SeSCO逻辑链路可以传送同步用户信息
  • LC逻辑链路信息放在分组头(packet header)里,所有其他的逻辑链路信息放在分组的净荷(packet payload)里
  • ACL-C和ACL-U逻辑链路在逻辑链路ID里表示,LLID,它在净荷头的占一个字段
  • SCO-S和eSCO-S逻辑链路只能由同步逻辑链路来传输
  • ACL-U链路一般由同步逻辑链路来传输
  • ACL-C链路可以通过SCOACL逻辑链路进行传输

逻辑链路优先级

  • 一般情况下,在ACL-C逻辑链路的优先级比ACL-U逻辑链路高(当它们同时在共享的ACL逻辑链路上进行传输时),但是被否定响应而重传的ACL分组比ACL-C具有高优先级
  • ACL-C逻辑链路上的优先级比在SCO-S和eSCO-S逻辑链路上要高,但是也要考虑逻辑链路间的频谱交错的可能性

参考书籍:金纯; 林金朝; 万宝红,《蓝牙协议及其源代码分析》, 国防工业出版社, 2006.
欢迎小伙伴讨论,文章内容如有错误请在评论区评论或发私聊消息,谢谢你。

最后

以上就是笑点低战斗机为你收集整理的蓝牙第一章:概述、无线技术协议和基带协议的全部内容,希望文章能够帮你解决蓝牙第一章:概述、无线技术协议和基带协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部