车载蓝牙多媒体网关的设计与实现
引言:蓝牙技术应用十年有余,近年来其车载应用越加广泛,主要包括免提通话、电话簿自动下载和流媒体音乐播放三个方面,不仅方便了用户接打电话,保证行车安全,而且丰富了用户的娱乐体验。笔者采用Freescale的32位嵌入式处理器MCF5251和CSR公司的蓝牙单芯片BlueCore5-MultiMedia(以下简称BC5)芯片设计了一款整合车载免提和流媒体音乐播放的蓝牙多媒体网关,本文从硬件和软件两个方面详细介绍下开发中的关键技术。
一 硬件开发
多媒体网关采用双处理器结构,包括音频子系统、RF子系统、人机接口和CAN通讯四个部分,硬件结构框图如图1所示。BC5内部集成了RF接口和音频输入输出接口,实现蓝牙RF通讯和音频输入输出系统,MCF5251实现按键矩阵的检测和对OLED液晶屏的控制以及CAN通讯,BC5和MCF5251之间通过UART进行通讯。下面首先介绍下BC5的特点,然后介绍下音频子系统的电路设计。
图1:硬件结构图
1.1 芯片特性
BC5是一款蓝牙单芯片,在8x8x1.2mm、0.5mm间距的169pin BGA封装内集成了蓝牙系统的射频和基带控制、16位RISC结构的MCU和性能高达64MIPS的Kalimba DSP1。其特点如下:
1、 无线发射功率达+8dBm,接受灵敏度-90dBm,无需外部放大器,只需印刷电路板天线便可满足蓝牙射频规范 Class 2的要求,通讯距离可达10m;
2、 DSP性能高达64MIPS,用于实现语音处理及音乐文件的编解码。该DSP是唯一能够支持第三方音频增强软件的内部DSP,可以提供同类最佳的回声消除和噪声抑制功能,并可实现对MP3、AAC音乐文件的编解码而不增加任何BOM成本;
3、 具有独立的音频系统,包括音频输入输出和可配置的I2S及PCM接口,可以直接通过音频输入接口采集麦克风输入信号,其音频输出信号可直接连接到有源音箱;
4、 具有USB、I2C、 SPI 、UART等多种接口,可以外接外部主处理器以实现复杂应用。
1.2 电路设计
下面介绍下多媒体网关的音频输入输出电路的设计,并且根据实际开发经验指出需要留意的关键点。图2为音频输出电路,图3为麦克风输入电路。
BC5的音频输出是峰峰值可达2V的差分信号,采用TLV2372完成差分转单的转换,而且在输入端提供一个偏置电压,使得不会出现信号在负半周期的截止失真,选择合适的放大倍数,使之也不会出现信号在正半周期的顶部削波失真。
TLV2372是采用单电源供电的轨对轨运放,电路简单,可以提供最大的输出电压摆幅,提升音频性能,输出可接近0和Vcc。在这里选择偏置电压为2.5V,放大倍数为43/30.1,可以计算出:
Vout=2.5+43/30.1(SPK_P-SPK_N)
音频输出具有一定的驱动能力,可以直接接耳机,也可以接到车载收音机的音频输入端通过车载功放播放声音。
图2:音频输出电路
需要注意的是BC5音频输出的驱动能力有限,不能直接接到大功率的无源音响上,否则会对免提通话时的回声消除造成不好的影响,由上图分析,当外接大功率的无源音响时,会造成VCC_AUDIO_5V的电压随音频输出而线性变化,VCC_AUDIO_5V同时是麦克风输入的偏置电压,这样便会造成麦克风输入信号的波动,当免提通话时,麦克风的输入通过蓝牙AUDIO连接传送到手机然后传送到远端通话方时,会造成远端通话方可以很清晰地听到自己的声音,而这是无法通过软件回声消除算法处理掉的。
BC5的麦克风输入要求是个差分信号,外接麦克风为单端信号,以下的电路可以完成对单端麦克风信号的差分转换,而且运放TLV2372的输入亦是轨对轨的,可以满足麦克风输入信号的电平范围。
图3:麦克风输入电路
需要注意的是BC5麦克风输入信号最大为800mVrms,如果选用的麦克风电平范围超过了这个限制,麦克风输入信号会混到音频输出端,即在免提通话时本地音频输出端会听到本地麦克风输入的声音,所以必须在TLV2372运放电路上将麦克风信号电平适当衰减以满足大多数麦克风的要求。
二 软件开发
对于蓝牙应用而言,其软件包括协议栈和应用程序两个部分,CSR开发了专用蓝牙协议栈,并提供了一个小型操作系统-Virtual Machine(以下简称VM)完成内存管理、任务调度和消息管理等功能,BC5端的应用程序便是在VM上进行开发,MCF5251的应用程序在Freescale提供的操作系统Flex OS上进行开发,软件结构如图4所示。下面首先介绍下应用程序的开发方式,然后分析下车载设备最大的问题-兼容性问题的解决。
图4:软件结构图
2.1 开发方式
对于各种蓝牙应用,蓝牙SIG组织以Profile的形式定义了各种功能的实现方式,本网关使用到的剖面包括HFP(实现免提通话)、PBAP(实现电话簿自动下载)、OBEX(实现SyncML绑定协议)、A2DP、AVRCP(实现流媒体音乐播放和远程控制)。以下讲一下BC5端应用程序的开发和车载设备中非常普遍的蓝牙手机兼容性问题及若干解决方法。CSR为BC5的车载应用专门提供了RoadTunes系列的开发环境,开发环境提供了协议栈和Profile库源代码2,便于用户根据需要进行修改和重新编译,而且可以根据选项设置选择编译哪些剖面库,自动管理MakeFile文件。应用程序在Profile库上进行开发,应用程序和profile之间通过四种类型的消息进行交互,按照消息的流向和作用,划分如下:
1、应用程序发给Profile的请求MSG_REQ;
2、Profile对该REQ的响应处理MSG_CFM;
3、Profile发给应用程序的提示MSG_IND;
4、应用程序对该IND进行的响应MSG_REP。
采取这种接口固定的消息交互方式,保证了应用的可扩展性,无论修改Profile还是修改应用程序都不会互相影响。
2.2 兼容性问题
兼容性问题一直是制约蓝牙应用的一个关键因素3,同时也是决定一款优秀的车载蓝牙设备的功能完善性的关键因素。兼容性问题来源于手机厂商实现某应用的灵活性,是由其应用差异性带来的,因为虽然蓝牙SIG组织以Profile的形式定义了某功能的实现方式,但是它没有定义包含多个功能的某项应用的严格的流程或者上下文,比如配对后是不是自动连接,是马上连接还是先做一下服务查询再连接,再比如判断设备功能是靠服务发现协议(SDP)还是靠读取设备类型,这些都是没有定义从而在实现上比较灵活的。如果车载设备的应用程序没有考虑到这种差异性,便会造成跟某些手机互操作性上的兼容性问题。
兼容性问题是个综合性的问题,需要蓝牙芯片厂商和应用软件开发人员共同解决。首先CSR作为蓝牙业界的领导者,在兼容性方面做了非常充分的测试,其固件和蓝牙协议栈凝结了CSR在蓝牙领域的多年开发经验,在底层上就保证了最大程度的蓝牙兼容性,一部分兼容性问题可以通过固件升级或者设置固件特性(通过修改PSKEY值)解决,LG KG系列手机存在音频流播放不连续的情况便是通过修改Local Support Feature(本地设备的支持特性)这个PSKEY值实现的,因为CSR的固件和协议栈中没有综合考虑手机端的支持特性(Remote Support Feature)和蓝牙协议栈的版本(LMP Version),所以选择了不合适的音频流包类型,造成了音频流播放的不连续,通过禁止掉多媒体网关的Local Support Feature中的EDR 3 slot packet和EDR 5 slot packet解决了该问题。
大部分兼容性问题来源于应用程序上的缺陷,需要对多部手机进行充分测试,完善应用程序。若干三星手机和多普达手机在配对后首先进行服务查询再发起连接,会出现手机端无法完成服务查询的情况,多媒体网关在配对完成后加入4秒等待,然后再去读取手机的服务确定手机是否支持音频流功能,使得手机端可以顺利完成服务查询;针对若干手机经常出现链路丢失的情况,首先修改默认的链路监控超时5秒为10秒,同时将读取手机服务和发起免提连接的并行操作改为串行处理,这样就大大减少了链路丢失的几率。诺基亚新手机在进行第一次SyncML同步时,会发送查询SyncML服务器属性的命令,在应用程序中加入对该命令的处理,否则无法与该手机进行SyncML同步。
- 不断提升的蓝牙数据速率催生多种新兴应用(09-04)
- 面向大众市场的超宽带技术(09-04)
- 标准化进程难挡UWB市场增长,2011年出货量接近3亿 (09-04)
- 基于CSR CVC-HF系统的汽车蓝牙免提解决方案(09-08)
- 蓝牙与UART:互补配合,相辅相成(09-27)
- 浅析蓝牙技术 (上)(09-27)