引言
随着汽车电子和消费电子技术的融合,车载信息娱乐系统近几年发展迅猛,成为融合各种技术的集成化平台。在消费电子领域大行其道的蓝牙技术也开始渗透到汽车应用中,汽车内部空间有限,正符合蓝牙短距离连接应用的初衷。在笔者研制的一款车载娱乐设备中,将USB技术、蓝牙技术、音频解码技术融合在一起,结合汽车内部麦克风和音响,集成了播放U盘存储的音乐、免提应用、电话簿下载和流媒体音乐播放功能,而且通过CAN总线连接车载CAN网络,实现了与车载信息娱乐系统的集成和功能的可扩展性。本文主要从硬件设计和软件设计两个方面描述蓝牙技术在这款车载娱乐设备中的应用与开发。
硬件设计
该车载娱乐设备的硬件设计采用双处理器结构实现,主CPU采用32位处理器MCF5251,蓝牙芯片采用Bluecore5-MM,两款处理器的接口采用UART。结构框图如图1所示。
图1 硬件结构图
这里,Bluecore5-MM内部包含一个16位MCU,可外接32Mb
FLASH,用于完成协议栈和应用程序,还集成了一颗处理能力高达64MIPS的DSP,主要完成三个功能:
一是回声消除及噪声抑制,提供非常清晰的语音质量;实现对流媒体音乐的解码,可以对MP3、AAC等格式的音乐文件解码;三是能够方便地增加CSR第三方合作伙伴基于该DSP开发的音频或语音增强软件,加强其终端设计的性能和功能。
本设计的蓝牙子系统硬件在CSR提供的BlueTunes2开发板的基础上进行,该开发板提供了基于BlueCore5-Multimedia芯片的完整硬件解决方案,包括原理图设计和PCB设计和天线设计。基于BlueCore5(下称BC5)的蓝牙子系统硬件开发中一个很重要的工作是利用PSTOOL工具调整PSKEY值,它可以决定RF特性的。笔者设计好电路板后,采用多部手机进行搜索和连接测试,发现有的手机搜索不到该设备,采用Anritsu
MT8852蓝牙测试仪测试其RF特性,发现“初始载波”不合格。修改影响初始载波偏移的PSKEY-Crystal trim,测试通过。
软件设计
CSR提供固件完成蓝牙协议栈,软件开发环境提供各个profile库及其源代码,这样我们就可以在CSR提供的协议栈和库的基础上专注于应用软件开发,我们选择的开发环境为RoadTunesSdk,基于VM实现应用程序。本文软件主要从UART通讯、自动连接、电话簿同步等几个方面阐述。
UART通讯
BC5和主CPU之间的数据交换采用通讯帧的方式,采用帧头(0x55+0xaa)+ID(标示该帧的含义)+DLC(数据场长度)+DATA(数据)+CRC16(16位CRC校验)的格式进行传输,并且采用缓冲区的方式保证数据在未处理之前可以存储。
主CPU到BC5之间交换的主要是人机接口命令,比如接听电话、挂断、呼叫保持、激活保密模式等,这个数据量小而且帧间间隔比较长,所以数据可以得到有效的存储和处理。而从BC5到主CPU的数据传输比较复杂。因为涉及蓝牙手机、BC5和主CPU之间的三方通信,蓝牙手机与BC5之间可能在短时间内有大量的数据传输,为了保证数据存储和次序处理的正确性,我们在主CPU端开辟一个大的FIFO缓冲区,该缓冲区空间比较大,且由于其具有先入先出的特性,保证数据得到正确缓存和次序处理。且由于其先入先出的特性。
串行通信的错误主要来自于采样时刻的干扰。当DLC不产生错误时,CRC校验可以保证数据的正确性。但是当DLC由于干扰产生错误时,会引起帧的解析状态机混乱,将下一帧的数据误判断为该帧数据,产生漏帧的现象,并进而引起FIFO缓冲区混乱。为保证填充到FIFO缓冲区的数据都是严格按照之前定义的帧格式进行顺序排列的,我们采用帧延时和定时器监测的方式来剔除错误帧。首先在帧发送时会有一个10ms的延时,相邻两条帧的时间间隔则大于10ms,在主CPU端接收帧时开启一个7ms的超时定时器,每接收到一个数据便重启该定时器,如果定时器超时,则可以判断出DLC出错,从而将这一帧判断为不完整,并将该帧数据丢掉,然后退出帧尾等待,等待下一个帧头的到来。
自动连接
为了增强使用的便利性和用户的友好性,我们实现了自动连接功能。我们定义了自动连接的三个触发条件:系统上电;由于连接设备离开有效范围而引起当前连接断开;一个已配对设备进入蓝牙有效范围。
为了实现这三个条件下的自动连接,我们实现了配对列表管理和周期搜索功能。
为了确定是否有一个已配对设备进入蓝牙有效范围,采用周期“搜索”的方式进行判断。当配对列表不为空而且当前没有连接的前提下发起周期搜索,如果上次没有搜索到某个配对设备而这次搜索到了,便发起与该设备的自动连接。由于搜索是对蓝牙基带带宽要求比较高的操作,为了保证不因为自动搜索影响外部发起的搜索配对、手动连接、从液晶屏发起的连接,在配对和手动连接进行中停止自动搜索并重启搜索定时。
电话簿同步
电话簿条目在下载传输时采用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文档可以实现电话簿条目的增加、删除和修改操作。
结语
笔者融合了蓝牙技术和汽车电子技术,设计实现了一款车载信息娱乐设备,本文介绍了其蓝牙子系统硬件设计和软件开发的若干关键技术,该设备运行稳定,具有良好的用户体验和使用价值。