单芯片领头芯片厂商CSR的Bluecore是目前普遍应用的蓝牙单芯片系列,在蓝牙耳机、蓝牙手机和免提装置等设备中应用广泛,也是很多蓝牙工程师的首选。笔者采用Bluecore5-MM(以下简称BC5)和Freescale的Coldfire架构的32位处理器,开发了一款整合USB音乐播放、iPOD控制、蓝牙免提和流媒体音乐播放等功能的设备。下面,首先简要介绍设备硬件结构,然后从设备软件结构、BC5 软件开发方式、内存和DSP的开发上详细讲一下开发中遇到的问题及解决方法。
硬件结构
图1为车载娱乐设备的硬件结构图,包括电源管理、音频输入输出及音源管理、处理器及其外围电路、USB接口及其供电保护、 CAN接口等几个部分。
图1 车载娱乐设备硬件结构图
如图1所示,系统采用BC5-MM+32位外部嵌入式处理器的双处理器结构设计,蓝牙部分用BC5-MM实现。下面,首先介绍该芯片的关键特性,然后介绍其RF子系统的电路设计。其芯片特性如下:
(1)以单芯片的形式集成了蓝牙系统的射频和基带控制、RISC结构的16位MCU和性能高达64MIPS的Kalimba DSP。其中,MCU部分实现蓝牙协议栈和应用软件,DSP用于实现音频和语音处理以及流媒体音乐文件的编解码。
(2)具有独立的音频输入输出系统。
(3)无线发射功率达+8dBm,接受灵敏度-90dBm,无须外部放大器,只需印刷电路板天线便可满足蓝牙射频规范Class 2的要求,通信距离可达10m。
(4)具有USB、I2C、SPI、UART等多种接口,可以外接外部主控制器以实现复杂应用。其中,BC5-MM和主处理器通过UART 进行通信,SPI接口用于BC5-MM程序的调试、下载以及关键PSKEY属性的设置。
蓝牙RF子系统设计如图2所示。由于BC5-MM内部集成了蓝牙射频和基带控制,所以只需外接滤波器和PCB天线便能实现RF子系统设计。滤波器选用插入损耗低、衰减特性高的蓝牙平衡滤波器DBF81F04,保证了蓝牙通信的可靠性;PCB天线采取F型天线,反馈点位置需要根据蓝牙 2.4GHz的频率中心点确定。另外,在音频输入输出系统设计中需要注意的是音频输入有最大电压的要求,所以在外围麦克风输入电路设计时要注意选择电路放大参数以控制输入电压。
图2 RF子系统电路图
软件开发
图3所示为双处理器结构的车载信息娱乐设备的软件结构图。MCF5251端的软件设计不再赘述,BC5软件包括固件、操作系统、剖面和应用程序四个部分。固件的功能是和硬件连接,提供底层驱动的实现,包括蓝牙底层协议栈及片上各种外设,如IO、UART、Timer、ADC等的接口;操作系统Virtual Machine(VM)完成内存管理、任务调度和消息处理功能;剖面的功能是定义某类型设备应该包含的功能及其标准实现方式,保证设备间的互操作性。应用程序是在剖面和VM提供的一系列API上进行开发的,定义了任务和相应的消息,在VM的控制下采用消息队列机制异步发送消息进行通信,软件开发环境为 Roadtunes-SDK。该SDK提供了完整的蓝牙协议栈和各种剖面的源代码,并提供了车载应用的软件解决方案。下面讲述下连接管理及内存问题和 DSP开发中的关键技术。
图3 车载设备软件结构图
连接管理
笔者设计的车载信息娱乐设备需要实现免提通话、电话簿下载、流媒体音乐播放和音乐远程控制应用,每一种应用都是在相应的连接的基础上以相应剖面约定的方式进行的。其中,免提对应HFP剖面,电话簿下载对应PBAP,流媒体音乐播放对应A2DP,音乐远程控制对应AVRCP,合理管理这些连接至关重要。首先,对连接进行分类,HFP和A2DP为主要连接,PBAP是HFP的附属连接,AVRCP是A2DP的附属连接。当手机和设备建立了免提连接后,设备主动与手机建立PBAP连接,下载电话簿并通过UART送到主处理器去解析,当手机和设备建立了流媒体连接后,设备主动与手机建立 AVRCP连接以实现流媒体音乐的远程控制。
系统在逻辑上是完全合理的,但发现此时死机的可能性很大。经分析,每一种连接建立后设备双方需要交互链路监控超时时间、低功耗设置、LMP 版本信息、支持特性等其他信息,短时间内需要消耗相当大的内存,而PBAP电话簿下载和UART的传输也消耗相当大的内存,这样便造成BC5无法为相应的蓝牙消息分配内存。因为蓝牙设备的各种行为都有相应的消息序列和次序,一旦将中间某个环节丢掉,那么后续的行为也是不可控的,继续运行会造成程序的紊乱,这时复位是必需的选择。
评论
加载更多