低功耗蓝牙开发技术概述(二)控制器(上)

 低功耗蓝牙开发技术概述(二)控制器(上)

今天要介绍的三层体系结构中的控制器部分,控制器这一层又包括可物理层和直接测试模式和链路层,和主机控制接口的下半部。

低功耗蓝牙开发技术概述(二)控制器(上)-1

 

1、物理层

(1)、物理层中的模拟调制:

对于接收机具备锁定任何信号的能力,并且可以发送频率接近的组成信号。还有一种更为先进的调制方法,相位调制,与频率类似的是相位调制也是会根据输入信号改变载波频率,确切的说是改变信号的相位,相位调制比简单的频率调制要复杂,因此用于复杂的数字系统,如数字广播。

(2)、物理层中的数字调制:

输入的数据以比特表示,非0即1,一个比特可以与其他的一些比特组合起来形成一个多比特值,粗和起来的多个比特称为一个符号。

(3)、物理层中的频段:

低功耗蓝牙使用2.4GHz工业、科学及医疗频段传输信息。这一频段有连个特征之处。大多数频谱是需要授权的,即需要去购买授权才能使用,比如当地广播电台要授权才能广播音乐和广告。有些频段需要授权,但不需要费用,比如用于航空、军事和民用紧急服务的频段。有些频段是免费且无需授权的。2.4GHz频段的一个特殊之处在于,这是一个无需授权的频段,只需要遵守一定的规则就可以在次频段上使用数据的传输。

(4)、物理层中的调制:

低功耗蓝牙采用高斯频移键控。高斯滤波器通过增加从一个值到另一个值的频率转换时间,优化了一个符号到下一个符号的转换。如果没有高斯滤波器,频率转换会非常的快,从而导致很大的噪声。高斯滤波器的引入,以为只从比特0到比特1的转换迅速而高效。

(5)、物理层中的射频信道:

实现长距离、高温稳定性的无线电系统,通常使用多个频率来传输信息。低功耗蓝牙传输信息使用的是40个无线信道,每一个信道的中心频率可以简单的算出。

2、直接测试模式

直接测试模式需要三个设备,如下图所示

(×)待测设备(DUT)

(×)上位测试设备(UT)

(×)下位测试设备(LT)

低功耗蓝牙开发技术概述(二)控制器(上)-2

待测设备指那些需要测试的控制器、模块或最终的产品,待测设备需要一个天线,以及一个通用异步串行通信接口(UART)或者是链接到上位机测试设备的主机/控制器接口(HCI)。

上位测试设备通常由测试设备制造商生产。它的软件能通过串口或者主机/控制器接口驱动待测设备,也能驱动下位测试设备并与之通信。

下位测试设备能过收发报文,通过天线与待测设备进行有效的通信。

待测设备由上位测试设备告诉做什么,并执行报文发、收。同时,上位测试设备通知下位测试设备做相反的工作,测试结束之后,上位测试设备可以通过待测设备和下位测试设备的有效信息,来判断待测设备是否通过测试。

上位测试设备还可以通过要求设备发送已知频率的报文并测量实际的发射频率,来校准生产线上的控制器。

(1)、直接测试模式中的收发机测试:

为了测试收发机,控制器会被要求发送和接受报文。待测设备什么时候发送报文是由测试着决定的。

(2)、直接测试模式中的硬件接口:

串口:配置灵活,兼容性强,直接测试模式只允许修改串口的一个参数,那就是波特率,波特率的取值,1200 、2400 、 9600 、 14400 、 19200 、 38400 、 57600 、 115200.常用的波特率是38400 。其他的串口最为常用的设置为8位数据,无奇偶校验,1位停止位,没有软硬件流控。发送数据是两数据之间的时间间隔是5ms。

命令与事件:

上位测试设备可向待测设备发送四种命令

(*)复位
(*) 发射机测试
(*)接收机测试
(*)测试结束

待测设备可向上位测试设备上报两种事件
(*)测试状态

(*)报文报告

(3)、直接测试模式中的使用HCI的直接测试模式:

直接测试模式也可以复用已有的HCI传输层和逻辑接口访问控制器。这种方式需要更多的部件,尤其是对于主机接口比较复杂的情况。但是,对于单独测试控制器(而不是控制

器已经被集成在高度优化的模块或最终产品的情况)。这是一种非常有效的方式。

3、链路层

链路层定义了两个设备如何利用无线电传输信息。它包括报文、广播、数据信道的详细定义,也规定了发现其他设备的流程、广播的数据、连接的建立、连接的管理以及连接

中的数据传输。2.4GHz ISM频展的干扰、噪声、深度衰落等无线传输系统的挑战加剧了链路层的复杂度。

(1)、链路层中的链路层状态机:

链路层状态机定义了5种状态:
(*)就绪态

(*)广播态

(*)扫描态

(*)发起态

(*)连接态

链路层状态机不但解释了设备间如何发现和连接,也解释了低功耗蓝牙的另一个基本的设计策略:将广播、发现和连接过程与连接中的数据传输分离开来。该设计的一部分是为

了实现广播设备的超低功耗。将广播信道减少到3条,在保证鲁棒性的同时降低了功耗。但这一设计也需要区分广播态和广播报文。链路层状态机的3个状态使用广播报文,而

只有1个状态使用数据报文。

5种状态图的关系如下所示:

低功耗蓝牙开发技术概述(二)控制器(上)-3

*)就绪态:上电后,链路层进入并保持就绪态,直到接到主机的命令。从就绪态可以进入广播态、扫描态或者发起态,从其他任意状态也可以进入就绪态。就绪态是链路层状态机的中心状态,尽管是非话动状态,但最为重要。

*)广播态: 处于广播态的链路层可以发送广播报文。也可以发送扫描响应,用以回应主动扫描的设备。可被发现或者可被连接的设备需要处于广播态。想向一定区域内其他设备广播数据的设备也需要处于广播态。

*)扫描态:处于扫描态的设备能够接收广播信道的报文。扫描态可用于简单地侦听哪些设备正在广播。扫描态有两个子状态:被动扫描和主动扫描。被动扫描仅接收广播报文。主动扫描则发送扫描请求给广播态设备,并获取附加的扫描响应数据。扫描态的设备只能进人就绪态,转换的条件是停止扫描。被动扫描态中,被动扫描可以在只有接收机的设备中实现。如果只为了支持被动扫描,则无需发射机,进而可以减少控制器的体积和成本。主动扫描态中,链路层一旦发现了新的广播态设备,都会发送扫描请求,并等待该请求的响应。扫描请求和响应报文都在广播信道中传输。为了使主动扫描更为有效地工作,扫描响应应尽量为静态数据,因为就能耗而言,扫描请求、响应这两个额外的报文使得数据更加昂贵。

*)发起态:为了发起连接,链路层需要处于发起态。处于发起态的发起者,其接收机用于侦听自己试图连接的设备。如果收到了来自该设备的广播报文,链路层会向其发

送连接请求并进入连接态,并假设广播者也进入连接态。如果发起者不再试图发起连接,也可以进入就绪态。

*)连接态:最后一个提及的链路层状态是连接态。从广播态或发起态均可进入连接态。两种情况均源于发起者向广播者发送连接请求报文。主连接态:主连接态只能从发起态进入。为了成为主设备,它必须向对端设备发起连接。主设备必须定期向从设备发送报文。从设备只有通过回复这些报文才能发送自己的数据。

从连接态:从连接态只能从广播态进入。为了成为从设备,它必须向对端设备进行广播。对于从设备,只有在正确接收主设备的报文之后才能发送。收到主设备的一个报文后,

从设备可以发送一个自己的报文。如果从设备想发送更多的数据,则必须等待主设备发送另外的报文再回复。从设备也可以随时忽略主设备以达到节能的目的。这样一来,从设备可以通过休眠来节省大量的能量。

多状态机: 一个链路层的具体实现可以拥有多个独立的状态机。

(2)、链路层中的报文:

报文是链路层的基石。报文非常简单,它是带有标签的数据,由一个设备发送,一个或多个设备接收。标签指明了数据由谁发出,以及应该由哪些设备接收。

报文的开始是一小段训练序列,称为前导。之后是接人地址,接收机用它将报文和背景噪声区分开来。接收地址之后是报头和长度字节。再之后是报文的净荷,以及用于确保净荷正确性的循环冗余校验码(CRC)。低功耗蓝牙开发技术概述(二)控制器(上)-4

下面详细介绍报文结构,正如上图所示

比特序与字节:报文是一比特一比特传输的,但他们同时也是由数据的字节组成的。当数据的各个字节传输时,总是从最低位开始。因此,Ox80是按照00000001发送的,而Ox01是按照1OOOOOOO发送的。大多数多字节域是从低字节开始发送。因此.Ox010203会按照如下顺序
发送:
11000000010000001000000

前导: 报文最开始的8比特是010101 01或者10101010序列。这是很简单的交替序列。接收机可以用它来配置自动增益控制,以及确定“。”、“1”比特所使用的频率。这段序列

之所以非常重要,是因为芯片必须能够应对输入信号强度的可能范围。

接入地址: 接入地址的第一个比特决定了前导是01010101还是10101010。如果接入地址的第一个比特为“0”,则使用01010101序列;如果是“1”,则使用10101010序列。这保证了任一报文的前9个比特都是交替的,即要么为101010101.要么为010101010。

报头:报文的下一个部分是报头。报头的内容取决于该报文是广播报文还是数据报文。对于广播报文,报头包含了广播报文的类型以及一些标记位,这些标记位指出了报文使用的是公共地址还是随机地址。广播报文类型共有7种,每种类型都具有不同的净荷格式及行为:

ADV__IND-通用广播指示

ADV__DIRECT__IND-定向连接指示

ADV__NONCONN__IND-不可连接指示

ADV__SCAN__IND-可扫描指示

SCAN__REQ-主动扫描请求

SCAN__RSP-主动扫描响应

CONNECT__REQ-链接请求

长度:对于广播报文,长度域包含6个比特,有效值的范围是6 ~37。对于数据报文,长度

域包含5个比特,有效值的范围是。0~ 31。长度域之后是净荷,其长度是长度域指出的字节数。

净荷:净荷是所传输的“真实”数据,可以是关于设备的广播数据,或者发给一定区域内所有设备的服务数据;可以是主动扫描响应的附加数据,如设备名称,实现的服务;可以是建立或保持连接所需要的信息;可以是从一个设备到另一个设备的应用层数据。

循环冗余校验:报文的最后是3个字节的CRC(循环冗余校验)。CRC对报头、长度域以及净荷域进行计算。24位的CRC强大到足以检测所有奇数位错误,以及所有2位或4位错误。

(3)、链路层中的信道:

低功耗蓝牙使用40个信道。因为调制指数放宽,低功耗蓝牙的信道与经典蓝牙有所不同。这意味着每个信道的功率谱更宽,因此,为避免邻近信道干扰,低功耗蓝牙的信道宽度为2MHz.而不是经典蓝牙的1MHz。在链路层,这些信道被分为两种:广播信道和数据信道。

广播信道频点的选择原则上是为了远离诸如Wi-Fi接入点的严重干扰。这些接人点通

常选择802.11信道中的3个:信道l、6和11。这几个信道的中心频率分别为2412MHz、

2437MHz和2462MHz,宽度大概为20MHz。这意味着信道1占据2402MHz – 2422MHz,

信道6占据2427MHz – 2447MHz,信道11占据2452MHz – 2472MHz。

广播信道位于2402MHz、2426MHz和2480MHz。也就是说,第1个广播信道低于

Wi-Fi的信道1,第2个广播信道位于Wi-Fi的信道1和信道6之间,第3个信道高于Wi-Fi

的信道11。如下图所示,这3个Wi-Fi信遭覆盖了数据信遵的0-8、11 – 20以及

32 – 34。不过,3个广播信道37、38、39在这些干扰之外。

数据信道在广播信道之间分布,间隔为2MHz。表7-3给出了广播信道和数据信道的完

接列表,包括链路层信道编号以及中心频率。

广播信道的编号是37 – 39。数据信道的编号是从O- 36。用这样的编号方式区分广播

信道和数据信遭使得跳频算法的实现非常简单。低功耗蓝牙开发技术概述(二)控制器(上)-5

(4)、链路层中的设备发现:

低功耗蓝牙设备通过广播信道发现其他设备。一个设备进行广播,而另一个设备进行扫描。共有4种不同类型的广播:通用的、定向的、不可连接的以及可发现的。

设备每次广播时,会在3个广播信道上发送相同的报文。这些报文被称为一个广播事件。除了定向报文以外,其他广播事件均可以选择20ms – 10.28s不等的间隔。通常,一个广播中的设备会每一秒广播一次。广播事件之间的时间称为广播间隔。主机可以控制该间隔。但是,设备周期性的发送广播会有一个问题:由于设备间的时钟会不同程度的漂移,两个设备可能在很长一段时间同时广播而造成千扰。为防止选一情况的发生,在上一次广播事件发生后加

入随机延时。它们发送下一个广播事件时也很可能不再冲突。

通用广播:通用广播是用途最广的广播方式。进行通用广播的设备能够被扫描设备扫描到,或者在接收到连接请求时作为从设备进入一个连接。通用广播可以在没有连接的情况下发出,换句话说,没有主从设备之分。

定向广播:有时候,设备间需要快速建立连接。如果从设备想这么做,就需要进行广播。定向广播事件就是为了尽可能快的建立连接。这种报文包含两个地址:广播者的地址和发起者的地址。发起设备收到发绐自己的定向广播报文后,可以立即发送连接请求作为回应。

不可连接广播:不想被连接的设备使用不可连接广播事件。这种广播的典型应用包括设备只想广播数据,而不想被扫描或者连接。速也是唯一可用于只有发射机而没有接收机设备的广播类型。不可连接广播设备不会进入连接态,因此,它只能根据主机的要求在广播态和就绪态之间切换。

可发现广播:最后一种广播事件是可发现广播。这种广播不能用于发起连接,但允许其他设备扫描该广播设备。这意味着该设备可以被发现,既可以广播数据,又可以响应扫描,但不能建立连接。这是一种适用于广播数据的广播形式,动态数据可以包含于广播数据之中,而静态数据可以包含于扫描响应数据之中。可发现广播不会进入连接态,而只能在停止后回到就绪态。

(5)、链路层中的广播:

如上上面所述,设备可以进行广播。但是,一个广播设备必须在广播中包含一些有用的

数据。这意味着可以通过4种广播事件中的3种进行广播:通用广播、不可连接广播以及可

发现广播。进行广播时,需要在广播报文中给数据打上标签。之所以要这么做,是因为并非所有设备都能理解所有可能的广播数据。因此,需要给广播数据打上标签并指出其长度。每个数据片段均起始于一个长度域,用以指示后面的类型及数据域的长度。接下来是类型域,接收机可根据其内容判断自己是否能够理解后面的数据。

吴川斌

吴川斌

Leave a Reply