HCI和UART的结构与原理概述及计HCI-UART的设计实现方法
蓝牙技术作为一种短距离的无线通信技术,具有巨大的发展潜力,本文意从
HCI层进行蓝牙技术的应用开发。本文首先介绍了HCI和UART的结构与原理,在分析和比较HCI三种类型接口USB、RS-232和UART优缺点的基础,提出了一种基于FPGA采用硬件设计HCI-UART的实现方式。本设计在Quartus II 9.0集成设计环境下,采用硬件描述语言Verilog分模块设计完成,设计经过Modelsim 6.4a仿真与验证。
1 引言蓝牙(Bluetooth)是世界级著名的计算机和通信领域大公司(爱立信、IBM、tel/' target='_blank'>INTEL、诺基亚和东芝等) 倡导推出的一种无线通信技术的开放式工业标准,其取自10 世纪丹麦国王哈拉尔德(HaraldBluetooth)的 别名,意在形成一个全球统一的无线通信技术标准[1]。蓝牙技术消除了设备之间的连线,用无线连接取代 传统的电线。蓝牙主要有蓝牙硬件和蓝牙协议组成,蓝牙硬件由模拟部分和数字部分组成。模拟部分指蓝 牙射频发射台,数字部分指主控制器。蓝牙协议采用电路及信息包两种交换方式,主要有射频(RF)、基带 (BB)、链路管理器(LM)、主接控制接口(HCI,Host CONTROL Interface)底层嵌入式驱动程序、HCI 高层软 件驱动程序、逻辑链路控制适配协议(L2CAP)、串口仿真协议(RFCOMM)、业务发现协议(SDP)、电话控制协 议(TCS)构成[2]。
目前,蓝牙技术应用开发有两种方式:1)单微控制器方式,所有的蓝牙传输协议及用户应用程序都 集成到一个模块中,由一个处理器完成。它不一定需要HCI 层,但其涉及到射频、基带等硬件协议层,开 发方式复杂,开发周期加长,成本代价也高;2)双微控制器方式,底层传输协议一般通过蓝牙硬件模块 实现,模块内部嵌入式的微处理器成为主机控制器,高层传输协议和用户应用程序分别由主机和主控制器 来实现,主机和主机控制器之间通过标准的物理总线接口来连接[3]。由于主机与主控制层在硬件上完全分 离,需通过HCI 层把蓝牙模块和蓝牙主机连接起来。在实际应用中,由于高层协议的复杂性和多样性,采 用这种方式,用户不需要考虑底层就可以实现对通信流程的控制,符合用户实际需求,且开发周期短,可 移植性好,本文的设计也是采用这种方式。 2 系统基本原理2.1 UART 基本原理
UART(Universal Asynchronous Receive Transmitter)又称通用型异步接收及发送接口[4],是一种异 步通信传输方式。其通信协议帧格式包括五个部分:空闲状态(idle,高电平)、起始位(start,低电平)、 5~8 位数据位、奇偶校验位(parity,可选)和停止位(Stop,位数可为1,1.5 和2 位)。这种格式是由起 始位和停止位来实现字符的同步,其中奇偶校验位的有无和数据位的长度由通信双方约定。一帧数据传输完毕后可以继续传输下一帧数据,也可以继续保持为高电平,两帧之间保持高电平,持续时间可以任意长。 本设计规定的通信协议帧格式为:1 位起始位(start,低电平)、8 位数据位(d0~d7)、1 位奇偶校验位(parity) 和1 位停止位(stop,高电平),如图1 所示。 2.2 HCI 基本原理 2.2.1 HCI 传输层的比较
HCI 层位于蓝牙高层协议和低层协议之间,其目的是实现主机设备与蓝牙模块之间的互操作,即HCI 是蓝牙主机与主机控制器间软硬件接口。HCI 为蓝牙硬件中基带控制器和链接管理器提供了命令接口,从 而实现对硬件状态注册器和控制寄存器的访问,提供了对蓝牙基带的统一访问模式。 目前,HCI 的传输层主要有三种:USB,RS-232,UART。此外,还有一种PC 卡传输层,其没有定义在 蓝牙标准中,而是在蓝牙SIG 于1999 年8 月发表的蓝牙PC 卡传输层1.0 版白皮书中描述的。蓝牙没有规 定PC 卡传输层实现的具体细节,而是要求制造商提供传输驱动程序,以配合主机上的HCI 驱动程序[5]。不 同传输层对HCI 事件处理没有影响。
(1)USB 传输层在蓝牙硬件上使用USB 硬件接口(该硬件接口有两种嵌入方式:一种是作为USB 加/ 解密芯片,另一种是集成到PC 机主板上)[6]。这一种类编码要求不管使用哪一厂商生产的设备,都能加载 合适的驱动程序栈;同时它还保证了通过控制终端的HCI 指令和USB 指令有所区别。其缺点是软件协议复 杂,软件开销巨大。 (2)RS-232 传输层:通过位于主机和主控制器之间的物理RS-232 接口实现。事件包和数据包通过该 层,但该层并不对它们进行解码。该传输层支持的是主机控制器和不同实体中的主机的通信情况,通信距 离较远,传输层特别规定了电气特性,并采用了更为精
细的链路协议以应对较高的线路误码率,但在硬件 上需要增加电平转换电路。
(3)UART 传输层跟RS-232 传输层类似,也是采用一个UART 的串行通信方式在主控制器与主机之间 进行数据传输。应用环境主要是针对主控制器和主机位于同一个电路板上,传输层假定UART 通信无线性 错误。与其它的相比,UART 传输层方式比较灵活,其应用环境决定其连接错误相对较少,可以采用简单的 复位恢复机制实现失步时的复步。由于主机和主控制器都处于同一块电路板上,因而传输层不需要规定电 气信号,可以直接采用TTL、LV-CMOS 等IC 端电压,应用较多。同时,UART 传输层避开了RS-232 传输层 所要求的较繁琐的协商和同步机制。UART 性能和数据吞吐率水平与USB 接口相当,而传输协议却较为简单, 减少了软件开销,是一种更为经济高效的全硬件解决方案。