随着汽车电子和消费电子技术的融合,车载信息娱乐系统近几年发展迅猛,成为融合各种技术的集成化平台,很多在消费电子领域中的应用开始在汽车上实现,满足了用户在娱乐、舒适与安全方面的追求。在消费电子领域大行其道的蓝牙技术也开始渗透到汽车应用中,汽车内部空间有限,正符合蓝牙短距离连接应用的初衷,而且蓝牙SIG组织以剖面(profile)的形式详细定义了在各方面应用中的操作方式和应该遵循的原则和步骤,相比于其他无线技术更能保证通用性和互操作性。蓝牙SIG组织专门定义了HFP(Hand Free Profile)规范了蓝牙在车载免提装置中的应用,使得用户通过车载麦克风和音响便可以打电话,保证了行车安全;定义了PBAP(Phone Book Access Profile)和OPP(Obeject Push profile)规范了电话簿下载的应用,使得用户可以将手机中的电话簿同步到车载免提装置上,从而可以利用汽车上的按键和液晶屏直接拨打电话,方便了用户的使用;蓝牙技术在立体声耳机中的应用经验也开始应用到车载娱乐系统中,利用车载音响便可以播放蓝牙立体声流媒体音乐,大大提升了用户的车内娱乐体验。在笔者研制的一款车载娱乐设备中,将USB技术、蓝牙技术、音频解码技术融合在一起,结合汽车内部麦克风和音响,集成了播放U盘存储的音乐、免提应用、电话簿下载和流媒体音乐播放功能,而且通过CAN总线连接车载CAN网络,实现了与车载信息娱乐系统的集成和功能的可扩展性。本文主要从硬件设计和软件设计两个方面讲述一下蓝牙技术在这款车载娱乐设备中的应用与开发。
一、硬件设计
该车载娱乐设备的硬件设计采用双处理器结构实现,主CPU采用Freescale的高性能32位处理器MCF5251,蓝牙芯片采用CSR的Bluecore5-MM,采用UART作为两款处理器的接口。其中USB HOST、音频文件解码、CAN通讯、人机接口均在主CPU上实现,Bluecore5-MM实现蓝牙通讯和相应的剖面协议,其结构框图如图1所示:
图1:硬件结构图
下面介绍下Bluecore5-MM芯片的特点及应用。
BlueCore5-MM是CSR提供的一款高度集成的蓝牙单芯片,在8*8*1.2mm TPBGA封装内集成了蓝牙MAC层和基带IC,其发射功率和接收功率分别可达到+8dBm和-90dBm,无须外部功放即能实现Class 2的范围。CSR以固件的形式提供了完全兼容蓝牙2.0规范的的协议栈,且内部提供了自动校准和内建的自测试机制,用于原型开发和蓝牙协议认证。
Bluecore5-MM内部包含一16位MCU,可外接32M bits FLASH,用于完成协议栈和应用程序,还集成了一颗处理能力高达64MIPS的DSP,主要完成三个功能:
1. 回声消除及噪声抑制,提供非常清晰的语音质量;
2. 实现对流媒体音乐的解码,可以对mp3,aac等格式的音乐文件解码;
3. 能够方便地增加CSR第三方合作伙伴基于该DSP开发的专用的经过验证的音频或语音增强软件,快速加强其终端设计的性能和功能。
这样便提升了免提组件的用户体验, 使其适用于各种先进且高质量音频的车载应用。其内部结构如图2所示:
图2: Bluecore5-MM 结构图
蓝牙子系统硬件在CSR提供的BlueTunes2开发板的基础上进行设计开发,该开发板提供了基于BlueCore5-Multimedia芯片的完整的硬件解决方案,包括原理图设计和PCB设计和天线设计。基于BlueCore5的蓝牙子系统硬件开发一个很重要的工作便是利用PSTOOL工具调整可以决定RF特性的PSKEY值,比如Crystal trim。笔者设计好电路板后,采用多部手机进行搜索和连接测试,发现有的手机搜索不到该设备,采用Anritsu/安立公司的MT8852蓝牙测试仪测试了其RF特性,发现“初始载波”不合格,通过修改影响初始载波偏移的PSKEY-Crystal trim,测试通过,且设备可以被所有的手机搜索到。
二、软件设计
CSR提供固件(firmware)完成蓝牙协议栈,软件开发环境提供各个剖面(profile)库及其源代码,这样我们就可以不必深究底层协议,而在CSR提供的协议栈和剖面库的基础上专注于应用软件开发,软件结构框图如下图所示:
图3: 软件结构图
我们选择的开发环境为RoadTunesSdk,基于其提供的操作系统VM实现应用程序的开发。基于其HFP剖面,可以实现免提通话应用,并可以传递信号强度、电池电量、充电状态、漫游状态等信号量,在液晶屏上显示;基于其A2DP和AVRCP剖面,可以实现流媒体音乐播放和远程控制,这些部分CSR提供了完整的例程,比较容易实现。以下我们从UART通讯、自动连接、电话簿同步等几个方面阐述下软件开发的关键技术。
2.1 UART通讯
BC5和主CPU之间的数据交换采用通讯帧的方式,采用帧头(0x55+0xaa)+ID(标示该帧的含义)+DLC(数据场长度)+DATA(数据)+CRC16(16位CRC校验)的格式进行传输,并且采用缓冲区的方式保证数据在未处理之前可以存储。
主CPU到BC5主要是人机接口命令,比如接听电话、挂断、呼叫保持、激活保密模式等,这个数据量小而且帧间间隔比较长,所以数据可以得到有效的存储和处理。而从BC5到主CPU的数据传输便比较复杂,因为涉及到蓝牙手机、BC5 和主CPU之间的三方通信,蓝牙手机到BC5可能在短时间内有大量的数据传输,这样在BC5到主CPU短时间内便会有多帧传输,为了保证数据存储和次序处理的正确性,采用开辟多个独立缓冲区的方式便有些不可取,我们采用了在主CPU端开辟一个大的FIFO(先入先出)缓冲区的方式,保证了数据得到正确缓存和次序处理。该缓冲区空间比较大,数据便可以得到有效缓存,而且由于其先入先出的特性,所以数据的次序处理又可以得到保证。
串行通信的错误来自于其采样时刻的干扰,当DLC不产生错误时,CRC校验可以保证数据的正确性。但是当DLC由于干扰产生错误时,便会引起帧的解析状态机的混乱,将下一帧的数据误判断为该帧数据,便会产生漏帧的现象,并进而引起FIFO缓冲区的混乱。为了有效解决该问题,必须保证填充到FIFO缓冲区的数据都是严格按照之前定义的帧格式进行顺序排列的。我们采用了帧延时和定时器监测的方式来剔除错误帧,首先在帧发送时会有个10ms的延时,相邻两条帧的时间间隔则大于10ms,在主CPU端接收帧时开启一个7ms的超时定时器,每接收到一个数据便重启该定时器,如果定时器超时,则可以判断出DLC出错,从而将这一帧判断为不完整,将该帧不完整的数据丢掉,然后退出帧尾等待,等待下一个帧头的到来。不完整帧不填充到FIFO缓冲区中,这样便解决了因为DLC错误引起整个FIFO缓冲区混乱的问题。
2.2 自动连接
为了增强使用的便利性和对用户的友好性,我们实现了自动连接功能。我们定义了自动连接的三个触发条件:
1. 系统上电
2. 由于连接设备离开有效范围引起当前连接断开
3. 一个已配对设备进入蓝牙有效范围
为了实现这三个条件下的自动连接,我们实现了配对列表管理和周期搜索功能。配对设备的管理包括添加配对设备、从液晶屏上删除配对设备、存储、提取、优先级管理、查找最后一次连接的免提设备和音频设备、查找进入蓝牙环境的最高优先级的设备等功能。优先级设计为:优先级最高的为上次连接的设备,然后按照配对列表的次序依次递减。
为了确定是否有一个已配对设备进入蓝牙有效范围,采用周期“搜索”的方式进行判断。当配对列表不为空而且当前没有连接的前提下发起周期搜索,如果上次没有搜索到某个配对设备而这次搜索搜索到了,便发起与该设备的自动连接。由于搜索是个对蓝牙基带带宽要求比较高的操作,所以为了保证不因为自动搜索影响外部发起的搜索配对、手动连接、从液晶屏发起的连接,在配对和手动连接进行中停止自动搜索并重启搜索定时,使得自动搜索尽量不影响这些操作。
2.3 电话簿同步
电话簿条目在下载传输时采用VCARD格式,符合vCard2.1和vCard3.0规范,格式如下所示:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:jianhui
TEL;CELL:13475909642
。 . 。 . 。
END:VCARD
可以采用以下几种方式下载: AT命令、OPP、PBAP、syncML,笔者实现了后三种方式。OPP即用户在手机上选择一条或几条电话号码PUSH到车载免提装置上,PBAP是蓝牙SIG为了规范电话簿的自动下载而定义的一个应用剖面,定义了两种功能:下载和浏览。下载是把整个电话本作为一个文件进行下载,浏览是以单条VCARD为单位的下载。按照PBAP的定义,所有的手机都应支持下载和浏览功能,由于手机兼容性问题,我们测试的结果为所有手机都能支持下载功能,部分手机支持浏览功能,而且有的手机采用下载功能下载时下载不全,这是由手机本身的缺陷造成的,为了解决该问题,我们首先获得电话号码总条目数,当采用下载方式下载完并将VCARD解析完成后,我们判断条目数是否相等,如果不相等,我们再采用浏览方式去下载。
syncML是移动设备间数据同步的一种通用协议,与蓝牙OBEX协议绑定便可以实现syncML在蓝牙技术上的应用。syncML不仅可以下载电话簿,还可以完成电话簿的更新,当第一次同步后,第二次同步时便将产生变化的部分以syncML文档的格式传过来,解析该syncML文档便可以实现电话簿条目的增加(ADD)、删除(DELETE)和修改(REPLACE)操作。
结语
蓝牙技术的车载应用开发研究越来越广泛,笔者融合了蓝牙技术和汽车电子技术,设计实现了一款车载信息娱乐设备,介绍了其蓝牙子系统硬件设计和软件开发的若干关键技术,该设备运行稳定,具有良好的用户体验和使用价值。