微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 蓝牙技术在车载信息娱乐系统中的应用

蓝牙技术在车载信息娱乐系统中的应用

时间:03-02 来源:与非网 博客 点击:

随着汽车电子和消费电子技术的融合,车载信息娱乐系统近几年发展迅猛,成为融合各种技术的集成化平台,很多在消费电子领域中的应用开始在汽车上实现,满足了用户在娱乐、舒适与安全方面的追求。在消费电子领域大行其道的蓝牙技术也开始渗透到汽车应用中,汽车内部空间有限,正符合蓝牙短距离连接应用的初衷,而且蓝牙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缓冲区混乱的问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top