一、概念
SIG主机控制器接口协议(HCI,Host Controller Interface)是蓝牙主机-主机控制器应用模式中蓝牙模块和主机间的软硬件接口,它提供了控制基带与链路控制器、链路管理器、状态寄存器等硬件功能的指令分组格式以及进行数据通信的数据分组格式。SIG主机控制器接口协议属于蓝牙无线技术的底层协议,其位置如下图1所示。他的实现包括软件、固件(firmware)和硬件。
图1:蓝牙技术底层软件层的概貌
蓝牙技术集成到各种数字设备中的方式分为单微控制器方式和双微控制器方式,两种方式的特点详见下表1。
表1:蓝牙技术集成到各种数字设备中的方式及特点
在蓝牙技术标准中几乎所有的地址码和各类代码是用16进制表示的,为了区别10进制,采用“0x”为16进制数前缀,请通信人注意。
欲更多了解蓝牙技术介绍的请进入。
二、HCI的分组
SIG HCI分组分为指令分组、事件分组和数据分组三大类,各大类又有其详细的种类,详见下表2-0-1。三大类分组格式详见下表2-0-2,其中数据分组格式分为异步无连接(ACL)分组和同步面向连接(SCO)分组。对于数据分组中各字段的含义详见下表2-0-3。
表2-0-1:SIG HCI分组分类及特点
表2-0-2:SIG HCI分组格式
表2-0-3:SIG HCI数据分组中各字段的含义
1、指令分组
SIG HCI的6种指令分组的指令简表(指令名称、指令代码及含义)分别详见下表2-1-1至表2-1-6。
表2-1-1:SIG HCI链路控制指令简表
表2-1-2:SIG HCI链路策略指令简表
表2-1-3:SIG HCI主机控制器与基带指令简表
表2-1-4:SIG HCI信息参数指令简表
表2-1-5:SIG HCI状态参数指令简表
表2-1-6:SIG HCI测试指令简表
2、事件分组
其事件分组中的事件名称、代码及含义详见下表2-2。
表2-2:SIG HCI事件列表
3、HCI错误代码
当某一指令操作失败时,将返回指令错误代码,长度为一个字节,其代码及含义详见下表2-3。
表2-3:SIG HCI错误代码表
三、HCI传输层的物理接口
SIG HCI传输层的物理接口(主机与主机控制器之间的)目前采用了4种接口,它们是通用串行总线(USB)、RS-232串行端口、通用异步收发器(UART)和个人计算机存储卡国际协会(PCMCIA)推荐的PC卡。
1、USB接口
蓝牙模块的USB固件由两个接口组成,接口0为固定设置,接口1提供可扩展的同步带宽占用方式共有4种设置(缺省为空),以使设备能够支持非同步带宽占用方式,其蓝牙USB接口端点的配置情况详见下表3-1-1。蓝牙USB设备设置了设备类别码,用于区分不同类型的蓝牙USB设备,这样就允许调用合适的驱动程序,以及通过控制端点来区分HCI指令和USB指令,其蓝牙USB设备的类别码的名称和含义详见下表3-1-2。从表3-1-1可知,蓝牙USB可以区分HCI分组类型以不同的端点传输,而蓝牙RS232的所有数据都是经过RX和TX传输的,因此在HCI分组前一个指示器加以区分,其相应的分组数据紧后传输。
表3-1-1:蓝牙USB接口端点配置表
表3-1-2:蓝牙USB设备的类别码
2、RS-232接口
蓝牙RS232分组指示器代码详见下表3-2-1;蓝牙RS232分组中的错误信息代码详见下表3-2-2。
表3-2-1:蓝牙RS232分组知识器代码表
表3-2-2:蓝牙RS232分组中的错误信息代码
欲进一步了解RS232接口技术特性的请进入。
3、UART接口
蓝牙UART与RS232都采用串行通信方式区别在于应用环境,RS232支持的是蓝牙芯片和位于不同实体中的主机进行通信的情况,而蓝牙UART支持的是蓝牙芯片和主机在同一块印刷电路板上,线路误码相对较小,因此没有了错误信息分组和协商分组,故蓝牙UART其它分组指示器代码与蓝牙RS232 相同,详见表3-2-1。
4、PC卡
蓝牙PC卡没有在蓝牙协议中规范,是在“蓝牙PC卡传输层”白皮书中做了描述。
欲进一步了解蓝牙技术物理层技术特性的请进入。