基于HCI层的蓝牙开发

发布时间:2010-11-8 阅读量:3275 来源: 发布人:

中心议题
    * 分析了蓝牙体系结构
    * 给出了基于HCI层的蓝牙设计
解决方案
    * 以51单片机为蓝牙主机

0
前言

蓝牙技术作为一种工作在全球通用的2.4GHz ISM(工业、科学、医学)频段上的短距离、小范围的无线通信技术,正应用于工业、农业、医疗和教育等各个领域,受到广泛关注,越来越多的科技工作者正在从事着蓝牙技术的研究与应用开发。

蓝牙开发可基于蓝牙协议的芯片级开发,也可基于蓝牙芯片的应用级开发。作为蓝牙技术的应用者,主要任务是根据各应用领域的不同,应用已有的各类蓝牙芯片进行具体的应用开发,即基于蓝牙芯片的应用级开发。

1蓝牙体系结构

蓝牙体系结构采用分层结构,分为软件协议层和硬件协议层,如图1所示。

硬件协议层主要是蓝牙底层协议,是蓝牙体系结构的硬件部分,所有蓝牙设备都必须包括有底层硬件层。底层协议都是由蓝牙芯片硬件来实现的,由蓝牙芯片供应商提供,无需软件处理。

软件协议层包括中间协议层和高端应用层。中间协议层是蓝牙体系特有层,而高端应用层由各种选用协议层组成,是蓝牙体系的可选层。不论是中间协议层还是高端应用层,它们都是蓝牙体系结构中的软件部分,在二次开发中,都需由开发者用软件来实现。

在硬件层与软件层之间,蓝牙规范定义了一个主机控制器接口(HCI)层,它提供了一个调用下层BBLM、状态和控制寄存器等硬件资源的统一命令接口,是蓝牙体系中软硬件之间的接口。主机可通过HCI层与蓝牙主控制器连接,用指令-应答的形式实现对蓝牙芯片的控制。

HCI层以上的协议软件实体运行在主机上,而HCI以下的功能由蓝牙芯片来完成,二者之间通过HCI层进行交互。

进行蓝牙二次开发时,开发者必须明白哪些协议是硬件完成的,哪些协议是软件完成的,哪些工作是要开发者完成的,哪些工作是由蓝牙芯片自动完成的。二次开发人员只需知道蓝牙芯片各引脚功能,知道如何使用蓝牙芯片即可,至于内部的蓝牙协议只需了解一点,集

中精力完成蓝牙软件的编写。

2蓝牙的开发模式

当前,各公司推出的蓝牙芯片大致可分成两类,第一类是不带主控制器的,只把基带(BB)和射频(RF)功能分别做在不同的芯片上或同一芯片中,仅实现了链路控制功能,不具备HCI接口功能。另一类是带主控制器的,把主控制器、BB控制器、RF控制器、连接管理器、控制和事件寄存器等集成在一块芯片上,同时把底层软件协议LMP也以固件的形式固化在芯片中,不仅具有链路控制功能,还实现了HCI功能。HCI可使这类蓝牙芯片透明化为普通的可编程外围器件,几乎各种应用都可以直接内嵌这类蓝牙芯片。

根据所选蓝牙芯片的不同,蓝牙的二次开发既可基于多芯片开发,也可基于单芯片开发。基于多芯片开发,就是采用第一类蓝牙芯片,一块是射频芯片,另一块是基带控制芯片,再加上Flash、天线和电源芯片等构成一个蓝牙模块,利用它们就可以进行各种蓝压产品的开发。

这种开发模式由于涉及到RFBB层和LMP软件协议,开发过程复杂,周期长,但不需要HCI层。早期的蓝牙开发主要采用这种模式。

基于单芯片的开发,也就是基于HCI层的开发,它采用第二类蓝牙芯片,芯片供应商提供完整的蓝牙芯片组集成和USBI2CUART接口等各种物理接口。由于主机与蓝牙芯片HCI层在硬件上完全分离,所以蓝牙芯片只需通过USBI2CUART接口与主机直接相连,并通过HCI指令和HCI事件与蓝牙芯片通信,主机的处理器不必关心蓝牙系统繁琐复杂的协议处理问题,只需基于HCI层进行应用开发。基于HCI层的开发,可以简化整机的设计过程,降低软件协议实现的难度,能有效地缩短开发周期,因此,常用于蓝牙的嵌入式应用开发中。

在基于HCI层的蓝牙二次开发中,蓝牙主机与蓝牙主控制器是两个不同的概念。蓝牙主控制器是指集成在蓝牙芯片中的微处理器,主要完成HCI指令和HCI事件间的交互及LMP功能。蓝牙主机是指蓝牙芯片外面的、通过HCI层与蓝牙芯片相连的计算机,可以是PC机、单片机或DSP等,主要完成主机与蓝牙芯片间的通信及对蓝牙设备的控制。目前,蓝牙的应用开发基本上都是基于HCI层的二次开发。

 

3基于HCI层的蓝牙设计

3.1硬件设计

基于HCI层的蓝牙开发,硬件比较简单,主要是软件的开发。这是单芯片开发模式与多芯片开发模式的最大区别。图2的是以51单片机为蓝牙主机的基于HCI层开发的硬件结构示意图。蓝牙芯片通过异步串口通信接口UART与单片机相连。

在整个系统中,单片机作为主机通过HCI层与蓝牙芯片通信,完成蓝牙链路的建立和管理、用户安全管理、数据的封装和拆分以及数据的发送与接收等功能,与其它蓝牙设备建立无线链接,实现蓝牙设备间的无线通信。

3.2软体设计

蓝牙设备间既可实现点对点的通信,也可实现点对多点的通信,既支持异步数据信道(ACL)的数据传输,也支持同步语音信道(SCO)的语音传输。图3给出的是蓝牙设备间点对点链接的ACL数据传输一般流程,主要包括蓝牙模块的初始化、查询、链接、数据通信和链接断开等几个过程。蓝牙设备既可设置成主设备,也可设置成从设备。

所谓的主设备就是先发起链接请求的设备,从设备就是被动接收链接请求的设备。建立链接前,主设备先查询从设备,看看有效范围内有没有其他牙设备。当查询到附近有从设备时,主设备就主动发起链接请求,要求与从设备建立链接,而从设备一直等待链接请求。当两个蓝牙设备间链接成功后,按照蓝牙规范规定的ACL数据包格式,主从设备就可相互间透明地收发数据了。任意蓝牙设备一旦搜寻到附近有另一个蓝牙设备,马上就可建立链接,无需用户进行任何设置。

 

4 HCI指令的函数封装

基于HCI层的蓝牙二次开发与其它技术的应用开发不同,因为不仅主机与蓝牙芯片间的通信是通过HCI指令-事件机制来实现的,而且蓝牙设备间的通信也是通过HCI指令-事件机制来实现的,并且HCI指令和HCI事件都是十六进制数,而不是通常所见的汇编指令。发送HCI指令或接收HCI事件实际上就是发送或接收固定格式的一串十六进制数。因此实现时,可以先将蓝牙指令以函数的形式封装成一个HCI指令接口函数库。编写HCI驱动程序时,可直接从函数库中调用HCI指令函数,对蓝牙设备进行基本操作,如蓝牙芯片的复位、读取蓝牙地址、初始化、查询、建立链接、收发数据和断开链接等。

若蓝牙主机选51单片机,则先初始化单片机串行通信接口,设置串口通信的波特率和串口工作方式。串口工作于查询方式。

HCI指令接口函数的编写是建立在单片机串口通信的基础之上,在初始化单片机串行口之后,就可根据HCI层协议规范,编写HCI指令接口函数。单片机通过串行口向蓝牙芯片发送HCI指令,接收蓝牙芯片返回的HCI事件,完成HCI指令功能。编写时,可以用汇编语言,也可用单片机C语言。下面以蓝牙复位指令为例,用C进行指令封装。

如果函数返回1,说明蓝牙复位指令执行成功,返回0,则失败。

5结束语

本文对基于HCI层的蓝牙二次开发过程和方法进行了归纳和总结。虽然蓝牙技术的应用开发有多种方案,可从不同协议层开始,但相对而言,还是基于HCI层的开发模式来得方便,比较容易掌握。随着所采用的蓝牙主机不同,HCI指令的封装形式不同。针对蓝牙的嵌入式应用,比较而言,本文提出的在单片机系统中封装HCI指令函数的思路,实现起来比较方便,具有一定的通用性,值得推广。

相关资讯
全球组织瘦身:英特尔启动新一轮裁员应对业绩挑战与战略转型

英特尔公司新一轮全球裁员行动正式启动。根据内部信息,其核心制造部门——英特尔代工厂(Intel Foundry)的“初步”裁员已于7月中旬展开,预计在本月底完成首阶段人员调整。公司高层在致工厂员工的备忘录中强调,该决策旨在“打造一个更精简、更敏捷、以工程及技术能力驱动的制造体系”,此举对于“赢得客户信任”及提升市场竞争力至关重要。

全球DRAM产业加速转向DDR5,美光正式启动DDR4停产计划

全球三大DRAM巨头——三星电子、SK海力士和美光科技——已正式拉开DDR4内存大规模停产的序幕,标志着主流内存技术加速进入更新换代期。继三星率先宣布其DDR4产品线将在2025年底结束生命周期后,美光也正式向核心客户发出通知,确认其DDR4/LPDDR4产品在未来2-3个季度内将逐步停止出货。

三星试产115英寸RGB MicroLED电视,高端显示技术再升级

据行业消息,三星电子近期在其越南工厂启动115英寸RGB MicroLED电视的试生产。电视业务负责人Yong Seok-woo亲赴产线视察流程,标志着该技术正式进入量产准备阶段。尽管产品命名包含"MicroLED",但技术本质为采用RGB三色MiniLED背光的液晶电视(LCD),通过创新背光方案实现画质跃升。

AMD与三星深化AI芯片合作,HBM3E加速量产推动AI服务器升级

AMD在AI Advancing 2025大会上正式宣布,其新一代MI350系列AI加速器将搭载三星电子与美光的12层堆叠HBM3E高带宽内存芯片。这是AMD首次公开确认三星的HBM3E供货身份,标志着双方战略合作进入新阶段。MI350X与MI355X两款芯片采用相同架构设计,仅在散热方案上存在差异,均配备288GB HBM3E内存,较上一代MI300X的192GB提升50%,比MI325X提升12.5%。

舜宇光学5月出货数据解析:车载业务强势增长,高端化战略重塑手机业务格局

全球光学龙头舜宇光学科技(02382.HK)近期披露2025年5月出货量数据,呈现“车载领跑、手机承压、新兴品类崛起”的鲜明态势。在汽车智能化浪潮与消费电子结构性升级的双重驱动下,公司业务版图正经历深度调整。