本节介绍的是蓝牙无线射频,链路控制器及其所控制的基带功能。
以上是本节的知识结构脑图,比较繁杂。
蓝牙工作在2.4GHz ISM频段上,许多国家在这个频带范围是2400~2483.5MHz。蓝牙采用跳频扩谱技术主动的避免工作频段受干扰(微波炉的工作频率也是2.4GHz)。
蓝牙收发机是跳频扩展频谱(FHSS)的无线系统,在m个1MHz带宽的信道上运行。由于国家规定不同,m=79或23。下图为各国的ISM频段使用情况:
信道由在79或23个射频信道上跳变的伪随机跳变序列来变现。该序列在同一个Piconet中唯一,且其相位由主单元的蓝牙时钟决定。
信道被分为许多时隙,每个时隙长度625微妙,且每个时隙对应一个跳频射频的跳频。连续跳频对应不同的射频跳频。跳频速率为1600跳/秒。时隙编号范围为 0 : 2 27 − 1 0 : 2^{27} -1 0:227−1,大概一天循环一次。
时分双工(TDD)策略用于主单元和从单元交替传输,主单元偶时隙发送,从单元奇时隙发送。
时隙也可以最多拓展为5个单时隙的长度,此时采用的调频频率应该是分组开始传输的时隙的跳频频率。
【注意:这个图只是一个形象化,根据后面的章节可以看出,多时隙发送时全部在奇时隙发送,这样才能保证主单元总是在偶数时隙发送,从单元总是在奇数时隙发送。】
SCO链路的优先级比ACL链路的优先级高,故为了优先建立SCO链路,ACL链路中必须承载SCO连接控制信息。
更具体的结构图:
结构图引用:https://www.chomptech.com/3971.html
识别码的分类
识别码分为:信道识别码( CAC ),设备识别码( DAC )和查询识别码( IAC )。其中查询识别码又分为 通用查询识别码(GIAC), 专用查询识别码( DIAC )。
(2)分组头(分组的头字段)
分组的头字段中包含链路控制数据,帮助中间接入控制。头字段为了降低开销,包括HEC在内仅包含18为的信息,它采用前向纠错编码FEC,在特殊情况下,头字段每一个比特在序列中发送三次,即利用1/3比例前向纠错编码提高发送的可靠性,经过1/3比例FEC后变为54位的代码字段。
关于FLOW解释中提到的流控制:
蓝牙建议使用FIFO(先进先出)队列来实现ACL和SCO链接的发送和接收,链接管理器负责填充这些队列,而链接控制器负责自动清空队列。接收FIFO
队列已满时则使用流控制来避免分组丢失和拥塞。如果不能接收到数据,接收者的链接控制器发送一个STOP指令,并插入到返回的分组头(Header)中,
并且FLOW位置1。当发送者接收到STOP指示,就冻结它的FIFO队列停止发送。如果接收器已准备好,发送一个GO分组给发送方重新恢复数据传输,
FLOW位置0。
原文链接:https://blog.csdn.net/dyufei/article/details/5844861
(3)有效荷载
有效荷载中有两种字段应区分开来:(同步)语音段和(异步)数据段。具体见下图:
有效荷载主体为用户信息,他代表有效流通量。
这里的*段指的是分组的类别。下文还有总结。
第一段:链路控制分组:ID,NULL,POLL,FHS.
第二段:单时隙分组
第三段:三时隙分组
第四段:五时隙分组
ACL分组类型
ACL 分组表示为DM1,DM3,DM5, DH1,DH3,DH5,其中
“DM”:表示荷载利用2/3率FEC编码的中速编码;
“DH”:表示载荷利用无FEC编码的高速数据。
“1,3,5”:表示分组占有的时隙数。
DM分组的载荷部分 和 DV分组的ACL部分 是由其本身的ACL分组头和包含2位的循环冗余检测(CRC)的载荷构成的。
SCO分组类型
SCO分组具有一个时隙长,表示HV1 ,HV2 ,HV3。其中,
“HV”:表示高质量声音;
“1”:是1/3 率FEC,设备每2个时隙发送一个单时隙分组;
“2”:是2/3率FEC,设备每4个时隙发送一个单时隙分组;
“3”:是无FEC,设备每6个时隙发送一个单时隙分组。
除此之外,还有一个DV分组,混合了2/3率FEC编码的ACL 和 无FEC编码的SCO,数据是单时隙分组。设备每2个时隙发送1个DV分组。
(1) 蓝牙设备地址(BD_ADDR)
48位,由三部分组成:低地址段24位(LAP),高地址段16位(UAP)和未定义地址段8位(NAP)。
(2) 活动成员地址(AM_ADDR)
在Piconet中,主设备会给每一个活动的从单元分配一个唯一的AM_ADDR来区分从单元。
FHS:专用控制分组,包含蓝牙设备地址和发端时钟信息。
(3) 休眠成员地址(PM_ADDR)
处于休眠模式的从单元可以通过其BD_ADDR或通过休眠成员地址(PM_ADDR)识别。PM_ADDR是一个用于区分休眠从单元的8位成员地址。
(4) 访问请求地址(AR_ADDR)
访问请求地址(AR_ADDR)用于休眠从单元在访问窗口内确定从-主时隙。在这半个时隙中,它被允许发送访问请求消息。当从单元进入休眠模式时,AR_ADDR分配给从单元,而且,只有从单元处于休眠模式时,AR_ADDR才有效。同时,AR_ADDR不必是唯一的,不同的从单元可以共享一个AR_ADDR。
在传输前,分组头和有效净荷都要使用数据加密字加噪,目的是使具有较高冗余模式的数据随机化,并减少分组的直流偏移。
微微网信道中的定时和跳频由主单元的蓝牙时钟决定。当一个微微网已经确立,主单元将时钟传送给从单元。
每个从单元在它的本地时钟上增加一个时钟偏移,可以和主单元时钟保持同步。因为时钟是自由运转的,所以偏移必须有规律的更新。
蓝牙时钟的功能是确定在什么时候设备能否发送,或在什么时候监听传送,以什么频率和什么类型发送或监听分组。从单元利用主单元蓝牙时钟值来完成的微微网通信。
时钟决定临界周期并触发蓝牙收发机的事件。在蓝牙系统中有四个周期很重要:312.5 us,625 1s,1.25 1s,1.28s。这些周期分别与定时器比特位的 C L K 0 CLK_{0} CLK0, C L K 1 CLK_{1} CLK1, C L K 2 CLK_{2} CLK2和 C L K 12 CLK_{12} CLK12 对应。
CLKN:本地时钟:
CLKE:预计时钟,扫描寻呼过程中用到;
C LK :设备实际运行的时钟频率。
CLKE、CLK 由 CLKN 加上一个偏移量得到的。
(1)链路控制器控制信道(Link Control, LC)
LC控制信道映射在分组头中,此信道携带底层链路控制信息,如:ARQ,流控和有效荷载特性。
(2)链路管理器控制信道(Link Manage, LM)
LM控制信道携带控制信息,在主单元和从单元的链路管理器之间进行交换。LM信道特别用于在保护DM分组。在L_CH码的有效荷载头中,LM信道用 11 表示。
(3)异步用户/等时数据信道(User Asynchronization/Isochronous , UA/UI)
UA信道携带 L2CAP透明异步用户数据。这个数据可以用一个或多个基带分组传送。
对于分段消息,起始分组使用值为10的L_CH有效载荷头,后续的分组使用值为01的L_CH有效载荷头。
如果没有分段,所有的分组使用L2CAP起始码为10。
等时数据信道有高层正确定时的起始分组支持。在基带层,L_CH码的使用与UA信道相同。
(4)同步用户信道(User Synchronization, US)
US信道携带透明同步用户数据,此信道在SCO链路上传送。
LC信道映射到分组头,其他信道映射到有效载荷。US信道仅能映射到SCO分组。所有其它信道都映射到ACL分组,或SCO DV分组。如果涉及到较高优先权的信息,则LM,UA和UI信道可以中断US信道。
(1)状态描述
上图中描述了蓝牙设备的操作状态。从待机状态到连接状态,中间需要经过查询和呼叫状态,这两种状态是两种不同的情况,但在潜在主单元和潜在从单元中是互补的。其中,子状态用于向Piconet 增加新的从单元的过渡状态。要从一个状态转移到另一个状态,需要用到链路管理命令或者链路控制器的内部信令。
在查询状态,设备在其范围之内搜索其他设备的标识,其他设备必须处于查询扫描状态,随时监听和响应查询;
在呼叫状态,设备以主单元的身份请求其他设备加入微微网,其他设备必须处于呼叫扫描状态,随时监听和响应呼叫。如果已知设备的标识,设备可以越过查询状态。当某个设备是微微网的成员时,它仍然执行查询和呼叫状态,以便其他设备加入到本微微网或其他微微网中。当有其他微微网加入时,会产生一个散射网。
(2)微微网操作
呼叫操作
查询操作
(3)蓝牙设备的操作状态
蓝牙设备的操作状态有连接状态,查询状态和呼叫状态。设备处于连接状态时,有四种操作模式:Active,Sniff,Hold,Park。
蓝牙时钟和微微网主单元的蓝牙设备地址(BD. ADDR)完全可以确定微微网中的跳频序列和信道相位。由于主单元和从单元之间的通信只能在微微网内发生,因此徽徽网中的每一个从单元都必须知道主单元的时钟和 BD.ADDR。如果一个主单元要邀请一个潜在的从单元加入,它必须知道此从单元的时钟和地址。在查询过程中,设备之间交换地址和时钟信息,主单元收集从单元的操作信息。在呼叫过程中,主单元向从单元发送自己的操作信息。设备的操作信息包括地址BD.ADDR和时钟值,将以跳频序列(FHS)基带分组形式发送。
在查询状态,设备在其范围之内搜索其他设备的标识,其他设备必须处于查询扫描状态,随时监听和响应查询;
在呼叫状态,设备以主单元的身份请求其他设备加入微微网,其他设备必须处于呼叫扫描状态,随时监听和响应呼叫。
上面说的呼叫状态的时钟和地址使用被呼叫设备的,那么被呼叫设备也就是 潜在从单元 了。过程预演:(待完善)
主设备发起查询,从设备查询扫描。主设备通过查询获得从设备的地址和时钟以及DAC。
主设备想要以主单元的身份邀请从设备加入Piconet中,故对查询到的从设备发起呼叫,主设备使用寻呼发起一个主—从设备连接,通过在不同的跳频点上重复发送从设备DAC来扑捉从设备。从设备在寻呼扫描状态被唤醒,接收寻呼。呼叫使用的时钟和地址均为从设备的,识别码为从设备DAC。寻呼扫描状态下的设备扫描窗口Twindowpage scan内监听自己的DAC。
小结:
(1)在查询过程中,设备之|间交换地址和时钟信息,主单元收集从单元的操作信息。
(2)在呼叫过程中,主单元向从单元发送自己的操作信息。
设备的操作信息包括地址BD.ADDR和时钟值,将以跳频序列(FHS)基带分组形式发送。
3.1 连接状态
处于连接状态时,主单元的时钟成为Piconet中定时事件的调整器,主单元的LAP用于产生识别码。这里要注意,主从单元的发送每隔626us交替一次,主单元偶时隙,从单元奇时隙。但是多时隙的发送限制为奇数时隙(1,3,5),从而必须保证主单元总是在偶数时隙开始发送,从单元发送在奇时隙开始。
连接状态以主单元发送的轮训(POLL)分组为起点,检查主单元的定时和信道跳频的切换,从单元可以用任意类型的分组响应。若从单元未收到POLL分组,或者主单元未收到响应分组,主从单元将返回呼叫或者呼叫扫描子状态。
活动模式
在活动模式中,蓝牙从单元积极加入信道。活动从单元监听主从时隙的分组,保持与信道同步。
呼吸模式
减少从单元监听周期的职责。主单元开始传输的某个指定从单元的时隙数减小,即主单元智能在特定的时隙开始传输,这就是被称为呼吸时隙的规则间隔 T s n i f f T_{sniff} Tsniff。从单元必须在每个呼吸周期在偏移 D s n i f f D_{sniff} Dsniff时隙监听。要进入呼吸模式,主单元通过LM响应发出呼吸命令,此信息包含呼吸间隔 T s n i f f T_{sniff} Tsniff 和偏移 D s n i f f D_{sniff} Dsniff。
保持模式
在连接状态下,指向ACL链路的从单元可以被置为保持模式,这表明从单元暂时不能支持信道上的ACL分组(仍支持SCO链路)。在Hold模式下,从单元可将容量空出来用于其他事件,如扫描,呼叫和加入另一个微微网。它也可以进入低功耗睡眠模式。注意!此模式下,从单元保留它的活动成员的地址(AM_ADDR)。
待机模式
当从单元不需加入Piconet信道,但仍希望与信道保持同步时,可进入休眠模式。此时,从单元放弃活动成员地址AM_ADDR,并接受两个新地址用于休眠模式:
(1)休眠成员地址(PM_ADDR):此地址能区分不同的休眠从单元,用于在主单元解除休眠进程中。
(2)访问请求地址(AR_ADDR):也可以使用此地址解除休眠,被从单元用于初始化从单元解除休眠进程。
3.2 查询状态
查询状态是由主单元和从单元执行几个查询子状态组成的:
主单元执行查询状态,从单元执行查询扫描状态和查询响应状态。
更具体的说:
主单元发送查询分组,从单元在查询扫描状态时接受此分组,随后从单元进入查询响应状态并向主单元传输他们的基本信息。
在需要的时候,可以通过呼叫过程同其中任意一个建立联系。
3.3 呼叫状态
设备呼叫的目的是邀请被呼叫设备加入微微网,主单元就是呼叫设备。呼叫设备使用呼叫设备的地址BD_ADDR和时钟估计值发送它的呼叫,呼叫状态包括几个在主单元和从单元之间执行的子状态:主单元执行的呼叫子状态和主单元响应子状态,从单元执行的呼叫扫描子状态和从单元响应子状态。
更具体的说:
主单元发送呼叫蓝牙单元地址,由处于呼叫扫描子状态的从单元接收,呼叫传送仅仅包含从单元的DAC,此基带分组称为从单元ID分组。
在它的呼叫响应中,从单元也发送从单元ID分组,主要目的是通知主单元它已经收到呼叫。
最后,主单元进入主单元响应子状态,在此期间主单元向从单元发送它的基本元素(时钟,地址,识别码)和从单元的AM_ADDR,允许从单元参加微微网的通信。
这些基本元素和AM_ADDR在 FHS分组中传送。从单元利用一个从单元ID分组响应,并且进入连接状态,准备开始微微网通信。
(1)跳频序列
总共存在10累跳频序列,其中79跳 和 23跳 系统各有 5 类。括号内表示23跳系统的参数。
(2)选择方案
从输入到特定的跳频序列映射在频率选择模块中完成。频率选择模块(FSM)包括了选择下一个使用频率的过程。
在链路层使用四种不同的实体来保证安全,每个用户具有唯一的公共地址,两个字和一个随机数。
参考资料:
《蓝牙技术》 严紫健
《蓝牙技术原理与协议》 刘刚
博客:https://blog.csdn.net/xubin341719/article/details/38303881