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
2.2 增强数据传输速率EDR
与BR相比区别是数据内的调制方式有改变
- 接入码(access code )和分组头(packet header)通过 BR 模式的 1Mbps 的GFSK(高斯频移键控)调制方式来传输
- 后面的同步序列、净荷以及尾序列通过 EDR 模式的PSK(相移键控)调制方式来传输
- EDR 模式下每个数据分组由接入码、头、保护周期、同步序列、有效信息和尾六个部分组成

3.基带协议
基带层协议决定空中数据何时收发、哪个频点收发、收发时比特流如何处理、使用哪一条信道
3.1 蓝牙时钟
- 每个蓝牙设备都有一个内部系统时钟,称为本地时钟。它决定了收、发信机的定时和跳频
- 蓝牙时钟取自一个自由运转的时钟,该时钟永不会被调整和关闭。从设备要通过在本地时钟上加上一个补偿值(offset)来和主设备进行同步
- 蓝牙时钟与每天的时间无关,因此,它可用任何值初始化
- 蓝牙时钟作为蓝牙收、 发信机的时钟, 它的分辨率至少是TX或RX的时隙长度的一半即312.5µs,该时钟周期约为一天
- 如果时钟用计数器来实现,那么 28 位计数器的计数值范围是 228-1。时钟的 LSB 每312.5µs 增加 1,这样它的时钟频率就是32KHz
- 在蓝牙设备里,时钟确定了临界时间并激发事件。对蓝牙系统来说有四个时间段非常重要:312.5µs,625µs,1.25ms和1.28S。这些时间段分别于定时器位CLK0、CLK1、CLK2和CLK3对应

- 在不同模式和状态下蓝牙设备具有不同的时钟特性:
- 分为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)、N、Koffset、地址UAP/LAP(28位)、序列选择(sequence selection)和AFH 信道映射(AFH_channel_map),时钟输入的来源取决于所选择的跳频序列,每个跳频序列使用时钟的不同位。

序列选择输入可以设定为下面的值:寻呼扫描、查询扫描、寻呼、查询、主设备寻呼响应、从设备寻呼响应、查询响应、基本信道、自适应信道
地址输入由 28 位组成,即整个LAP和UAP的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寄存器输入和输出的开关是不能同时连接到同一个寄存器的
参考书籍:金纯; 林金朝; 万宝红,《蓝牙协议及其源代码分析》, 国防工业出版社, 2006.
欢迎小伙伴讨论,文章内容如有错误请在评论区评论或发私聊消息,谢谢你。
本文由 在线网速测试 整理编辑,转载请注明出处。