微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 蓝牙单芯片在车载信息娱乐设备中的应用及开发

蓝牙单芯片在车载信息娱乐设备中的应用及开发

时间:06-17 来源:互联网 点击:
DSP的开发

BC5内置性能高达64MIPS的DSP,可以软件的方式完成两大功能即回声消除和流媒体音乐文件的解码。CSR为BC5的 DSP提供了用于回声消除和噪声抑制的CVC,并提供了SBC和MP3的编解码实现,这些都为车载信息娱乐设备免提通话和流媒体音乐播放功能的实现提供了极大的便利。同时,笔者所设计的车载信息娱乐设备需要有对音频系统的自诊断功能,要求产生标准1kHz声音信号并对麦克风进行检测,这部分功能在BC5的 DSP上实现。下面首先简要介绍DSP的特点及开发方式,然后介绍自诊断功能中麦克风检测的实现。

CSR为其DSP定义了Kalimba的类汇编开发语言,并提供了很多有用的算子,可以被开发者直接调用编程以实现自定义功能。DSP跟外设的接口只有PIO,它无法直接和UART、USB、CODEC或蓝牙数据链路接口,需要跟MCU一起完成具体应用。MCU和DSP之间基于中断以消息的方式进行交互,消息数据采用DSP和MCU的共享内存收发,MCU和DSP都有发送接收消息的相应机制。

麦克风检测需要对所产生的声音信号采样并运算处理。首先,MCU设置好麦克风ADC的采样率和增益,同时设置好ADC数据流与DSP输入端口的连接,DSP对输入的ADC数据进行FFT运算,然后将运算结果以long message的方式发送给MCU,在MCU中做后续处理。MCU的设置代码如下所示:

/*VM_PCM_INTERNAL_A means left adc and left dac*/
PcmRateAndRoute(0,PCM_NO_SYNC,8000,8000,VM_PCM_INTERNAL_A);
/* Set the gains on the codec */
CodecSetInputGainA(13);
/* plug Left ADC into port 0 */
StreamConnect(StreamPcmSource(0),StreamKalimbaSink(0));

StreamKalimbaSink(0) 即为DSP的输入端口,它是一个先进先出的环形缓冲区,Kaimba提供了对它进行操作的算子,包括读数据、写数据、查询剩余空间和当前有效数据空间。对它进行操作前需要查询剩余空间和查询当前有效数据空间,这样才能保证所取的输入数据在时域上的连续性,操作后要更新读写指针,这样才能保证其后续操作的正确性。

FFT运算的输入实部即为麦克风采样数据,虚部为零,是占位运算,即运算结果的输出占用的是输入数据的地址空间。根据FFT原理,输入顺序时,输出逆序,输入逆序时输出顺序,这个逆序算法取决于FFT运算的点数,在这里选择128点运算。根据傅里叶变换原理,频率分辨率取决于运算点数和 ADC的采样速率,计算公式如下:

Δf=fs/N=8000/128=62.5Hz

其逆序序列为0 64 32 96 16 80 48 112 8 72 40 104 24 88 56 120 4...

为了保证运算正确,需要进行多次运算,首先设置一定时器实时刷新FFT输入的实部数据,其次在每次FFT运算之前将虚部全部清零,将没有得到赋值的实部数据全部清零。定时器周期根据ADC的采样速率和运算点数决定,由于对FFT输入数据的补零操作不会影响运算结果和频率分辨率,所以在这里设定定时器周期为 14ms,这样输入数据不会溢出。

运算完成后需要对实部和虚部进行求模运算,按照以上的逆序输出,判断峰值是不是出现在1kHz处即第56个点,是则麦克风工作正常,否则工作不正常。

结语

笔者采用BC5和MCF5251设计实现了车载信息娱乐设备,该设备运行稳定可靠,具有很高的实用价值。本文论述了BC5的应用开发经验和关键技术,有助于采用BC5进行开发的蓝牙工程师同仁加深对其设计开发的理解。

作者:山东省汽车电子重点实验室 马建辉 南京工业大学土木工程学院 吕梦兴 哈尔滨威克科技 马共立

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

网站地图

Top