基于HCI层的蓝牙开发

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

中心议题
    * 分析了蓝牙体系结构
    * 给出了基于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指令函数的思路,实现起来比较方便,具有一定的通用性,值得推广。

相关资讯
体积缩小58%!Vishay发布185℃耐受汽车级TVS解决方案​

汽车电子系统日益复杂,尤其在48V架构、ADAS与电控系统普及的当下,对瞬态电压抑制器(TVS)的功率密度、高温耐受性及小型化提出了严苛挑战。传统大功率TVS往往体积庞大,难以适应紧凑的ECU布局。威世科技(Vishay)日前推出的T15BxxA/T15BxxCA系列PAR® TVS,以创新封装与卓越性能直面行业痛点,为下一代汽车设计注入强大保护能力。

SK海力士突破6层EUV光刻技术,1c DRAM制程引领高性能内存新时代

韩国半导体巨头SK海力士近日在DRAM制造领域实现重大技术飞跃。据ZDNet Korea报道,该公司首次在其1c制程节点中成功应用6层EUV(极紫外)光刻技术,显著提升了DDR5与HBM(高带宽内存)产品的性能、密度及良率,进一步巩固其在先进内存市场的领导地位。

日月光投控7月营收超515亿新台币 AI芯片封测需求引领增长

半导体封测巨头日月光投控最新财报显示,2024年7月公司实现营收515.42亿元新台币,较6月份环比增长4.1%,与上年同期相比则微降0.1%。若以更能反映国际业务实质的美元计价,7月营收高达17.69亿美元,呈现更强劲的增长势头——环比上升6.5%,同比显著增长11.2%。这一差异突显了新台币汇率波动对账面营收换算带来的影响。

停产风波:宁德时代建霞锂矿暂停运营,全球锂市场再起波澜

据彭博社8月11日援引知情人士消息,全球动力电池龙头宁德时代(CATL)已正式暂停其位于江西省宜春市的建霞锂矿生产作业,此次停产预计将持续至少三个月。这一重大变动迅速引发锂产业链高度关注。

巨头财报亮眼:联发科高通逆势增,车用云端成新战场

近日,全球移动芯片两大巨头——中国台湾地区的联发科(MediaTek)与美国的高通(Qualcomm)先后发布了最新一季的财务报告,为洞察消费电子市场动态和半导体产业发展方向提供了重要窗口。两份财报清晰地展现了在智能手机市场增长放缓的背景下,两大巨头正积极寻求多元化突破,竞相布局未来增长引擎。