微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 蓝牙主控制器接口简析

蓝牙主控制器接口简析

时间:06-28 来源:互联网 点击:
1蓝牙技术的背景

蓝牙是一种短距离的射频通信连接,最初设计的目标是代替用来连接固定或便携电子设备的电缆。蓝牙设备工作在不需要许可证2.4GHz的工业、科学和医疗(ISM)频带。蓝牙基带协议同时支持电路交换和分组交换通信,并采用跳频扩展频谱(FHSS)技术进行传输。在北美和欧洲的大部分地区,蓝牙设备工作于2.402~2.480GHz的频带,整个频带被分成 79.1MHz带宽的子信道。

蓝牙协议的体系结构分底层硬件模块、中间协议层和高层应用三大部分。底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)部分。它们分别定义了蓝牙收发器在2.4GHz频段上,以跳频的方式传输信息帧和传输链路连接的建立或拆除以及链路的安全和控制所必须满足的要求。中间协议层包括逻辑链路控制和适应协议(L2CAP)、服务发现协议(SDP)、串口仿真RFCOMM和电话通信协议(TCS)。它们分别完成数据的拆装、服务质量控制、协议复用、发现网络中可用的服务及服务特性、仿真R-232串口、提供蓝牙设备间话音和数据的呼叫控制信令等功能。在这两层之间规定了一个主控制器接口(HCI)。这是协议中软硬件之间的接口,该层以上的协议软件实体运行在主机上,而HCI以下的功能由蓝牙设备来完成。在协议体系结构的最上部是高层应用的框架(Profiles)。目前仅规定了拨号网络、耳机、局域网访问、文件传输等常规应用,将来还会不断增加。各种应用程序可以通过各自对应的Profi1e实现无线通信。

在这个标准的支持下,蓝牙系统支持点对点和点对多点的连接,每个蓝牙系统可以连接200个以上蓝牙装置。蓝牙系统的传输特性是在供工业、科学和医学领域自由使用的ISM 2.4GHz频段内用单工或全双工的方式进行信息传输。每个蓝牙信道的带宽是1MHz,它支持三个同步数据信道或同时支持 一个同步数据信道和一个异步数据信道。每个同步数据信道的数据传输率是64kb/s,用于语音数据的传输;异步数据信道的传输率是下行721 kb/s和上行57.6 kb/s,用于数字数据的传输。若设置为上下行对称的传输方式,传输率上下行各是432.6 kb/s。一般情况下的传输距离是10m(30FEET),最大可达100m,自动调整。

2 HCI概述

主控制器接口(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器等硬件的统一命令接口。蓝牙设备之间进行通信时,HCI以上的协议软件实体在主机上运行,而HCI以下的功能由蓝牙设备来完成,两者之间通过一个对两端透明的传输层进行交互。

如图1所示,蓝牙标准对机控制器接口(HCI)的定义如下:HCI提供了一个调用和访问基带控制器和链路控制器以及硬件状态和控制寄存器的命令接口。这一接口提供了一个访问蓝牙基带功能的统一方法。在主机端的HCI软件和蓝牙硬件的HCI固件之间存在着与蓝牙协议关系并不密切的几层中间层,我们称之为机控制器传输层,它们提供数据的透明传输。


HCI由两部分组成,实现命令接口的软件和用来连接蓝牙子系统和主机的物理硬件。HCI软件的目的是使构成接口的硬件对系统高层软件来说看起来是透明的。

蓝牙软件结构包括两种类型的部件。数据相关部件负责数据通过链路的传输。控制相关部件则负责链路的控制和管理。图2 示出了HCI软件结构以及与蓝牙主机接口硬件的关系。


3 HCI流控制

流控制在主机到主控制器之间,用于防止将传送到未应答远程设备的ACL数据溢出主控制器的数据缓冲区,由主机来管理主控制器的数据缓冲区。

主机通过发出Read_Buffer_Size命令进行初始化,这个命令的返回参数可以确定主机发向主控制器的HCI ACL和SCO数据包(不包括包头)的最大长度。另有两个返回参数表示主控制器为等待传输可以缓存的HCI ACL和SCO数据分组的数量。当只有一个与其他设备的连接或者设备处于回环模式时,主控制器利用已完成数据分组事件来控制从主机发来的数据流。事件分组包括一个链接句柄列表以及对应连接上自上一个此事件以来完成的HCI包的数目;完成指的是发送、清空或回环回主机。根据这一事件的返回参数以及读缓冲区大小命令的返回参数,主控制器可以进行流量控制。每当主机发送一个ACL或SCO数据包,主机应该记录主控制器的相应链路缓冲区中的剩余空间减少了一个包,当主机收到完成包数目事件,主机知道了又有多少缓冲区空间得到释放,主机可以算出现在主控制器可以接收的包数目。当主控制器中有数据时,它必 须周期性的向主机发送完成包数目事件,直到向主机报告所有包都发送或清空,而发送的间隔由各厂家自行定义。注意,如果SCO流量控制失效,则已完成数据分组事件号就不能在SCO链接句柄中进行报告。

对应于每一个链接句柄,数据必须依照他们在主机生成时的顺序依此在HCI数据包中发往主控制器,主控制器也同样按顺序将这些数据发往空中,另一设备的主控制器收到后也必须按序发向它的主机,这意味着同一连接句柄上数据的顺序自生成起不再改变。

在某些情况下,主控制器到主机方向的流量控制是必须的,一般采用Set_Host_Controller To_Host_Flow_Control命令来开关这个方向的流量控制。这个方向的流量控制方法类似于上述的方法。起初,主机发出Host_Buffer_Size命令,告知主控制器发向主机的ACL和SCO数据包的最大长度以及主机缓冲区可存放ACL和SCO数据包的数目。主机利用主机Host_Number_Of_Completed_ Packets命令类似于主控制器的完成包数目事件,主机完成包数目命令是不需要命令流量控制的特殊命令,在有连接或处于本地回环模式时可以随时发送,这使得两个方向的流量控制同样的工作,正常的命令流也不被打断。

当主机收到拆链完成事件后,可以认定该连接句柄上的所有发往主控制器的数据被清空,相应数据缓冲区被释放,主控制器不需要用完成包数目事件将这些告诉主机。如果也采用了主控制器到主机方向的流量控制,主控制器在发送了拆链完成事件后假设主机在收到这一事件后也清空了这一连接句柄上的所有数据,主机也不需要用主机完成包数目命令将这些告诉主控制器。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top