蓝牙信号的发射与接收

发布时间:2010-11-26 15:54:16

1.

蓝牙协议规

蓝牙协议是蓝牙设备间交换信息所应遵守的规则。与开放系统互连模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙的协议栈,各层协议规定了所完成的功能和使用的数据分组格式,并提供上下各层之间的接口。所有的蓝牙设备制造厂商都必须严格遵守蓝牙协议中的要求和规定,以保证蓝牙产品间的互操作性。

1.1蓝牙射频协议

射频是指介于声音频率与红外线之间的电磁波频率。蓝牙技术诞生的初衷是以低功耗、低成本的无线接口取代现在纷繁复杂的有线接口。蓝牙射频部分不是重新开发的新技术,而是采用了在技术和市场上已经成熟的协议和算法。蓝牙射频部分主要处理空中数据的收发。蓝牙工作在无需许可证的2.4GHzISM频段上,采用了跳频扩谱技术主动地去避免工作频段受干扰。蓝牙每个频道宽为1MHz79个跳频频点中至少有75个应该伪随机地进行跳变,在一个30s的时间段内,任何一个频点的使用时不得超过0.4s。蓝牙的跳频速率为1600/s,每个频率持续时间625us称为一个时隙。主设备在偶数时隙发送数据,在奇数时隙接收数据;从设备则与主设备相反。

1.2蓝牙基带与链路控制器协议

蓝牙基带与链路控制器主要负责射频部分的发送接收时间、79个频点的选择和发射功率等级的选择。蓝牙设备发送数据时,基带部分将来自高层协议的数据进行信道编码,向下传给射频进行发送;接收数据时,射频将经过解调恢复空中数据并上传给基带,基带再对数据进行信道解码,向高层传输

1.2.1蓝牙物理链路

通信设备之间物理层的数据连接通道就是物理链路。蓝牙系统中有两种物理链路:异步无连接链路ACL和同步面向连接链路SCOACL链路是微微网主设备和所有从设备之间的同步和异步数据分组交换链路,主要用于对时间要求不敏感的数据通信,如文件数据或控制信令等。SCO链路是一条微微网中由主设备维护的点对点、对称的同步数据交换链路,主要用于对时间要求很高的数据通信,如语音等。

1.2.1.1 ACL链路

1.ACL链路的特点和性能ACL链路在主从设备之间以分组交换方式传输数据,即可以支持异步应用,也可以支持同步应用。一对主从设备只能建立一条ACL链路。ACL通信的可靠性可以由分组重传来保证。由于是分组交换,在没有数据通信时,对应的ACL链路就保持静默。微微网中的主设备可以与每个相连的从设备都建立一条ACL链路。双向对称连接ACL链路传输率为433.9kbps;双向非对称传输数据时,正向5时隙分组

链路可以达到最大传输率723.2kbps,反向单时隙链路传输率为57.6kbps

2.ACL链路的收发规则主设备在主从ACL时隙内发送的ACL分组含有接收从设备的设备地址;在随后的从主ACL时隙内,从设备发送ACL分组到主设备。如果从设备为能接收到主从ACL分组头解析从设备地址,或者解析到的地址与自身不匹配,那么它就不能在紧跟的从主ACL时隙发送ACL分组。ACL链路允许广播发送数据,此时主从ACL分组头的从设备地址被设为(000b,微微网中每一个接收到的从设备都可以接受并读取,但不作响应。

1.2.1.2 SCO链路

1.SCO链路的特点和性能SCO链路在主设备预留的SCO时隙内传输,因而可以看作电路交换。SCO分组不进行重传操作,一般用象语言这样的实时性很强的数据传输。只有建立了ACL链路后,才可以建立SCO链路。一个微微网中的主设备最多可以同时支持3SCO链路;一个从设备与同一主设备最多可以同时建立3SCO链路,或者与不同主设备建立2SCO链路。

2.SCO链路的收发规则主设备在预留的主从SCO时隙内,向从设备发送SCO分组,分组头含有应该做出响应的从设备地址。在紧跟的从主SCO时隙内,对应的从设备向主设备发送SCO分组。与ACL分组不同的是,即使从设备未能从接收到的分组头解析出从设备地址,也允许在其预留的SCO时隙返回SCO

组。

1.2.2蓝牙基带收发规则

1.2.2.1发送(TX)规则TX要分别进行ACLSCO链路的处理。单个从设备时TXACLSCO缓存器如图2-2所示。

ACLSCO所有公共链路的分组(IDNullPollFHSDM1)中,只有DM1分组携带在链路控制器和链路管理器之间交换的有效载荷中的公共分组使用ACL缓冲器。所有的ACLSCO)分组都使用ACLSCO)缓存器。在DV分组中,语音部分使用SCO缓存器,数据部分使用ACL缓存器。

1.ACL通信对于异步ACL数据通信,只需考虑ACL链路的TX缓存器,这时只使用DMDH分组。数据速率选择视链路的质量而定。链路质量好时,选择DH分组(无FEC纠错);链路质量差时选择DM分组(有FEC纠错)。ACL链路的缺省类型是Null,这意味着如果没有数据要发送或没有轮询到从设备就发送Null分组,这样就能够发送链路控制信息到其他蓝牙设备,如果没有链路控制信息要发送,就无需要发送任何分组。ACL链路发送分组时,链路管理器首先通过S1a把数据装载到寄存器,然后向链路控制器发送一个刷新指令,强迫开关S1转换(S1aS1b同时转换)。需要发送有效载荷时,分组打包器读取现态寄存器数据,根据分组类型构造有效载荷并附加到CAC和分组头的后面。接收放通过响应分组返回接收的发送结果,当结果是ACK时,S1就转换位置;结果是NAK时,S1不转换位置。

只要链路管理器对寄存器装载新的信息,链路控制器就自动发送有效载荷,出现错误时,重传也自动的执行。当没有新的有效载荷要发送时,链路控制器将发送Null分组或什么也不发送。如果没有新的有效载荷装入到次态寄存器,在最后的分组被确认后,分组打包指示寄存器将为空,次态寄存器就转换为现态寄存器。如果新的数据装入次态寄存器,就需要执行刷新指令,切换开关到合适的寄存器。只要在每个TX时隙之前链路管理器不断装载数据,开关S1受响应分组信息控制,链路控制器就自动处理数据。一旦链路管理器的业务被中并发送缺省的分组时,就需要一个刷新指令来继续已中断数据流。在链路不好的情况下,可能需要多次重传。但是对于时间受限数据,由于链路错误一直重传就会发生超时,系统要决定继续发送更多的当前数据还是跳过这些不能发送的数据,这也需要使用刷新指令来实现。利用刷新指令可以强迫开关S1切换,链路控制器不管接收方的结果也会强迫处理后面的有效载荷数据。

2.SCO通信SCO链路只使用HV分组类型进行通信。缺省的SCO分组类型在SCO链路建立时由主设备在链路管理层协商确定。SCO链路发送分组时,同步端口连续地装载SCO缓冲器的次态寄存器。S2开关根据SCO时隙间隔进行切换。对每个新的SCO时隙,S2开关切换后,分组打包器从现态寄存器读取数据。如果SCO已经用于主从设备之间发送较高优先级的控制信息,分组打包器就将丢弃SCO信息代之以这些控制信息,该控制信息必须以DM1分组发送。在主设备和SCO从设备间,数据和控制信息也可以使用DVDM1分组传输,主设备可以使用任何类型的ACL分组发送数据和链路控制信息到其他ACL从设备。

3.混合数据/语音通信使用DV分组时,链路控制器从数据寄存器读取数据填充数据段,从语音寄存器读取语音填充语音段,然后切换开关S2。开关S1的位置取决于链路传输的结果。如果没有数据发送,SCO链路自动地从DV分组类型切换到HV分组类型(数据流中断时或新数据已经到达时要使用刷新指令)。若信道容量允许,就可以分别使用ACLSCO链路实现组合语音数据的传输

1.2.2.2接收(RX)规则ACLSCO链路分别处理RX进程。与ACL链路TX缓存器相反,主设备对所有从设备公用一个ACL链路RX缓存器。SCO缓存器数量取决于实际SCO链路的数量。RX进程如图2-3所示。

ACL链路RX缓存器包含两个FIFO寄存器,一个用于链路控制器访问和装载最新的RX分组,另一个用于链路管理器读取先前的载荷。SCO链路RX缓存器也包含两个FIFO寄存器,一个用来填充新到达的语音信息,另一个可以被语音处理单元读取。分组头Type字段指示当前分组是数据分组还是语音分组,分组拆解器可以自动的把数据送到合适的缓存器。链路管理器读取旧的寄存器后,开关S1就切换。如果下一个有效载荷在RX寄存器清空之前到达,在下一个返回的TX分组的分组头中必须包括一个Stop指示。一旦RX寄存器清空,Stop指示

就清除。新的ACL有效载荷存储到ACL寄存器之前,必须检测SEQN字段。L_CH中的刷新指示和广播信息将影响对SEQN的解释。S2开关每隔TSCO时间进行一次切换,如果分组头错误没有新语音载荷到达,切换仍旧继续进行。

2.2.2.3流量控制新的分组到达时,ACL链路的RX缓存器可能已经处于满的状态,此时就需要流量控制来解决这个问题。但是SCO数据不受流量控制的限制。

1.收方控制只要链路管理器没有清空ACL链路的RX缓存器,链路控制器就在返回分组头插入Stop指示。当能够再次接收新的数据时,就返回GO指示。即使再为返回GO指示时,不含有数据的任何类型的分组仍然可以接收。流量控制在收和发两个方向上分别进行,设备及时不能接收新的信息,仍可以发送信息。

2.发方控制链路控制器收到Stop信号时将自动切换到缺省的分组类型上,当前的ACL链路TX缓存器状态冻结。只要收到Stop指示就发送缺省分组。没有收到分组时,则默认是G指示。缺省分组包含接收方向的链路控制信息,而且可能包含语音信息。链路控制器收到GO指示时将恢复发送存储在ACL链路TX缓存器中的数据。当主设备与多个从设备通信时,如果某个从设备向主设备发送了Stop指示,那么主设备将停止向这个从设备发送数据。

1.3蓝牙主机控制器接口协议

1.3.1蓝牙主机控制器接口概述

蓝牙主机控制器接口(HCI)是蓝牙主机-主机控制器应用模式中蓝牙模块和主机的软硬件口,它提供了控制基带与链路控制器、链路管理器、状态控制器等硬件功能的指令分组格式(包括响应事件分组格式)以及进行数据通信的数据分组格式]

蓝牙技术集成到各种数字设备的方式有两种:一种是单微控制器方式,即所有的蓝牙低层传输协议(包括蓝牙射频、基带与链路控制器、链路管理器)与高层传输协议(包括逻辑链路控制与适配协议、服务发现协议、串口仿真、网络封装协议等)以及用户应用程序都集成到一个模块当中,整个处理过程由一个微处理器来完成;另一个是双微控制器方式,即蓝牙协议与用户应用程序分别由主机和主控制器来实现(低层传输协议一般通过蓝牙硬件模式实现,模块内部嵌入式的微处理器称为主机控制器,高层传输协议和用户应用程序在写

入的个人计算机或嵌入的单片机、DSP等上运行,称为主机),主机和主机控制器之间通过标准的物理总线接口(如通过串行总线USB、串行端口RS232)来连接。在蓝牙的主机-主机控制器连接模型当中,HCI作为蓝牙软件协议堆栈中软硬件之间的接口,它提供了一个控制基带与链路管理器、链路管理器、状态寄存器等硬件的统一接口。当主机和主机控制器通信时,HCI层以上的协议在主机上运行,而HCI层以下的协议由蓝牙主机控制器硬件来完成,它们通过HCI传输层进行通信。主机和主机控制器之间都有HCI,它们具有相同的接口标

准。主机控制器中的HCI解释来自主机的信息并将信息发向相应的硬件模块单元,同时还将模块中的信息根据需要向上转发给主机。主机和主机控制器之间是通过HCI收发分组的方式进行信息交换的。主机控制器执行主机指令后产生结果信息,主机控制器通过相应的事件分组将此信息发送给主机。主机与主机控制器通过指令-应答方式实现控制,主机向主机控

制器发送指令分组。主机控制器执行指令后,通常会返回给主机一个完成事件分组,该分组携带有指令完成信息;对于有些分组,不返回指令完成事件分组,但返回指令状态分组,用以说明主机发出的指令已经被主机控制器接收并开始处理;如果指令执行错误,返回的指令状态事件分组就会指示相应的错误代码。由于篇幅所限,关于HCI分组类型格式、参数和指令在这里就不作介绍。

1.3.2蓝牙主机控制器接口传输层

HCI传输层是指蓝牙主机和蓝牙主机控制器之间相连的物理接口。HCI传输层包括USBRS232UARTPC卡传输层。下面介绍一下和本文有关的RS232UART传输层。

1.3.2.1 HCIRS232传输层RS232传输层与蓝牙USB传输层不同,USB传输层能够区别不同的HCI分组类型,从而做出相应的处理。对于RS232来说,所有的数据收发都是分别经过TXRX两条线,蓝牙RS232主机无法区分收到的HCI分组究竟是哪一分组,所以蓝牙RS232主机的HCI分组必须附加特殊的标志用于区分其分组类型。这一标志就是蓝牙HCI RS232分组指示器,它附加于每种对应的HCI分组的最前面。如表2-1所示。利用RS232接口进行传输之前,在RS232接口两端的设备应该双方协商波特率、奇偶校验类型等接口参数。

1.协商协议在RS232发送任何数据之前,应当在主机控制器和主机之间协商波特率、奇偶校验类型、停止位和协议模式。协商模式可以在任何一端任何时候启动,以便得到新的协值,或者只是把新的TDetect时间通知对方。当协商过程在数据传输过程中启动时,它将使用先前协商的设置来交换新的参数,而不是使用缺省值。协商分组格式如表2-2所示。UART设置和ACK字段见表2-3,其中停止位取0表示一个停止位,取1表示2个停止位;校验使能取0表示关闭校验,取1表示打开校验;校验类型取0表示奇校验,取1表示偶校验;ACK码取(000b表示请求,取(001b表示认可,取(010b表示不认可,(011b-111b预留。如果使用RTS/CTS作为错误指示和重新同步的方式,发送器要求的最大检测时间为TDetect,它包括检测CTS状态变化的时间和刷新发送缓冲区的时间,否则TDetect表示本地中断时延,时间的单位为100ms

协议模式字段见表2-4所示。CRC0表示分组后面不使用CCITT-CRC校验,取1表示分组后面使用CCITT-CRC校验。“所使用的定界符号”取0示不使用定符号0x7E,取1表示和一致性开销字节填充(COBS)一起使用定界符号0x7E。“使用RTS/CTS”字段取0表示不使用RTS/CTS,取1表示使用。“RTS/CTS模式”字段取0表示RTS/CTS用于错误指示和重新同步,取1表示不用于错误指示和重新同步。“使用错误恢复”字段取0表示不支持错误恢复,取1表示支持错误恢复。若RTS/CTS用于同步,错误恢复重新发送错误的分组和所有后面的分组。若使用0x7E定界符作为实现同步的机制,就只重新发送错误的分组。错误恢复不一定总成功,有可能发生超时和重传缓冲区满等情况。

2.分组传输协议根据实际情况,进行分组传输时可以使用检错机制。同步机制可以使用RTS/CTS或者定界符来实现。使用RTS/CTS可以减少COBS编码的计算时间,但是需要2根额外的铜线。若使用3芯线缆,不使用可编程RTS/CTS,那么定界符、0x7E就能够与COBS一起使用。这两种方案的纠错能力差别不大。如果RTS/CTS再次用于同步,就简单的重发所有分组,并将含有

错误的分组作为起始分组。如果使用定界符发送就只重发含错分组。可以选择不使用纠错功能,当接收端检测到错误时,仍将错误信息分组发到发送端。

3.同步方式

(1)使用含有COBS定界符协议的同步方式在不能使用通过物理连接作为硬件流量控制的RTS/CTS情况下,一般采用类似于高级数据链路控制(HDLC)包含有16CRC的数据帧和含有COBS的定界符0x7E作为检错和重新同步的手段。当接收或检测到一个错误时,接收端发送一个错误消息分组到发送端。该错误消息分组包含一个带有错误字段的序列号,序列号就是发送分组的序列号,但是不包含错误类型0x81。错误序列号字段是一个8位的字段,每当发送一个新的分组,该字段的值就加一。对分组进行排序是接收端的任务,接收端要过滤掉重发分组。如果接收端没有接收到某个分组,发送端在其重发保持缓冲器中就不能找到一个正确的序列号,它就可以使用错误类型代码0x81发送一个错误信息,告诉接收端重发分组的序列号已经丢失,接收端就可以检测丢失的分组。这时就不能执行完整的错误恢复,但是接收端可以检测到丢失的分组。(2)使用RTS/CTS的同步方式调制解调器的RTSCTS这两个信号可以用来处理HCI分组的收发。在调制解调器模式下,RTS/CTS这两根线连接在一起,即本地的RTS远端CTS连接在一起,本地CTS和远端RTS连接在一起。这两个信号的作用有二:一是用于只是检测到的一个错误,二是用于重新开始同步。HCI分组旨在CTS1是发送,在HCI分组发送过程中或者在最后一个字节发送之后CTS变为0时,表示有错误存在。接收端一旦检测到错误就会放弃RTS,并向发送端发送一个包含错误类型代码的错误信息分组,这个分组包含了错误信号字段的序列号,。一旦发送但检测到CTS1变为0,就停止发送任何信息,等待接受错误信息分组。当接收端准备接收新的数据时,在最小的TDetect时间就会放弃RTS。协商过程中收发双方要交换TDetect的值。本地TDetect、远端TDetect和波特率三者一起用于估计重发缓冲区的队列长度。在接收端再次放弃RTS之前,要刷新RX缓冲区。当发生错误时,要从错误的分组开始重新发送,序列号要与重发的分组相同。接收端负责对分组进行排序,虑出重复分组。重发分组时,如果重发保持缓冲区当中的分组序列号不正确,发送端将发送一个错误类型代码0x81的错误信息分组,并跳到具有正确序列号的分组进行发送。

1.3.2.2 HCIUART传输层UARTRS232传输层都采用串行通信的方式在蓝牙设备的主机控制器接口之间进行数据传输,两者间的区别在于应用环境。UART传输层针对的环境是蓝牙芯片和主机在同一块印刷电路板上的情况,因此线路误码相对较少。RS232传输层支持的是蓝牙芯片和位于不同实体中的主机进行通信的情况,距离较远并且具有较高线路误码率,因此RS232传输层对信号电器特性进行了规定。使用HCIUART传输层的前提是假设没有线路误码,因而与HCIRS232传输层相比,其分组格式只有指令分组、ACL数据分组、SCO数据分组和事件分组,而没有错误消息分组和协商分组。与HCIRS232传输层一样,HCIUART传输层也使用分组指示器来区分这四种分组,HCI分组紧跟在HCI分组指示器之后发送。UART采用了RS232的接口参数设置:波特率由生产厂商确定;8位数据位;无奇偶校验位;1位停止位;流控信号为RTS/CTS;流关闭响应时间由生产商确定。RTS/CTS信号用来阻止UART缓存的暂时溢出,它不应该用于HCI层的流控,因为HCI层有自身的流控机制。如果CTS1,则主机/主机控制器可以发送分组;如果CTS0则不能。流关闭响应时间定义了从RTS0到字节流实际停止间的最大时间。UART信号线将以空调制解调器的方法相连:本地TXD连接到RXD,本地RTS连接到远端CTS,反之亦然。如果主机或主机控制器在通信过程中失去了同步,则需要进行复位。丢失同步的标志是发现了错误的HCI分组指示器,或者HCI分组中的长度字段超出范围。在主机和主机控制器的方向发生同步丢失后,主机控制器将发送一个硬件错误事件分组通知主机,然后等待主机发来的复位命令来执行复位。接下来主机控制器也将使用复位命令来重新开始同步。在主机控制器到主机的方向发生同步丢失后,主机将使用复位命令来对主机控制器进行复位,接着主机通过检查复位命令的命令完成事件来重新开始同步。

1.4蓝牙串口仿真协议

蓝牙是一种电缆替代技术,对串行电缆连接方式的替代是蓝牙应用的一个重要方面,因SIG发布了专门的串口仿真协议(RFCOMM,为建立在串口之上的传统应用提供了接口环境,使他们可以不做什么改动就能在蓝牙无线链路上工作。RFCOMM采用了ETSITS07.10标准的一个子集,并且针对蓝牙的实际应用情况作了修改。RFCOMM参考模型见图2-4RFCOMM支持两种实际应用设备,分别对应于一般串行通信中的数据终端设备DTE和数据通信设备DCE。对于这两种设备的区分要由RFCOMM高层的执行者来判断。不同的数据链路间及RFCOMML2CAP间的数据和信息交换以帧的形式进行。RFCOMM支持两台设备间的多路串口仿真,也可仿真多个设备上的串口。RFCOMM在应用的过程中涉及到多种流控机制以及RFCOMM自身的流控机制。

1.4.2空调制解调器仿真

空调制解调器是计算机网络中的一种模拟调制解调器,用于本地计算机和附近需要调制解调器的外设相连。在传输控制信号时,RFCOMM并不区分DTEDCE设备,当两台同类设备相连时,RFCOMM以传输RS232控制信号的方式创建了一个隐含的空调制解调器。如图2-5所示。

1.4.2多路串口仿真

RFCOMM的一个重要功能是支持多路串口仿真。两个蓝牙设备间可以支持最多达60路的仿真串口,见图2-6DLCI(数据链路连结标识符)用于标识每一条DLC,它由6个二进制位表示,有效的取值范围为261DLCI0为控制信道,用于多路复用器间的控制命令传输,DLCI1由于服务器信道的概念而不可用,DLCI62DLCI63保留。

如果一台蓝牙设备与不只一台蓝牙设备间存在多路仿真串口,那么该设备上RFCOMM实体必须能够运行多个多路复用器会话,每个多路复用器会话使用他们自己L2CAP信道ID(CID)。运行多个多路复用器会话的能力对于RFCOMM来说是可选的。

1汪锐,杨士元.采用蓝牙技术构建智能家庭网络.电子产品界,2002,6:16-18

2严国荣.无线连接各种便携式电器的蓝牙技术.移动通信,2000,(6):13-16

3 Mischa Schwrtz.Telecommunication Networks:ProtocolsModelingandAnalysis.Addison-Wesley Publishing Company,1987:124-129

4黄智伟.蓝牙技术特点及应用.中国数据通讯网络2000211):33-35

5 A.S.Tanenbaum.计算机网络.曾华桑.2.成都科技大学出版社,198935-40

6金纯,许光辰,孙睿.蓝牙技术.电子工业出版社,2001316-332

7李路.爱立信的蓝牙PC.网络通信,2000,5:14

8马健仓,罗亚军,赵玉亭.蓝牙核心技术及应用.科学出版社,2003:9-20

9庄弈琪.蓝牙-梦想与实现.机械工业出版社,20021-6

10汤清华.蓝牙技术应用前景.通讯世界,2000,(73):18-19

11蓬田宏树.姿现すBluetooth携带机器间在无线でフはぐ.NIKKEIELECTRONICS,1999,12(747):47-54

蓝牙信号的发射与接收

相关推荐