XXX平台音频概述和loudspeaker调试总结

来源:互联网 发布:电子商务美工设计 编辑:程序博客网 时间:2024/06/06 01:47

 

                            XXX平台音频概述和loudspeaker调试总结

 

修改人版本号描述修改日期

 

目录

1     范围... 2
2     术语... 2
3     背景概述... 3
4     软件架构... 5
5     Loudspeaker调试过程... 6







1          范围本文只涉及XXX平台的AUDIO框图和软件架构,以及在实际工作中的调试心得,不涉及语音编码技术、模型建立、性能评估和音频校准部分的工作。以下部分主要是个人理解和参照XXX资料说明编写的,有不对的地方还请指出。

2          术语AFE: Audio Front End
MMI: Man-Machine Interface
MCP: Micro Control Processor
DSP: Digital Signal Processing

3          背景概述
下图是XXX音频部分的结构框图,在通信系统中,该图在前端连接的是用于采集信源信息的受话器和向信宿发送信息的扬声器,在后端连接XXXDSP芯片YYY,为信道编解码提供输入和输出。
在音频处理模块内部,又主要分为3个部分:模数/数模转换、采样处理、语音编解码20MS的数据帧,另外还有一块是处理MIDI播放的电路。可根据需要,单独对各个器件进行增益、电压、开关控制等参数进行调整,以达到各种应用场合的使用要求。各放大器、滤波器等器件参数的默认设置、范围、以及向DSP发送的操作命令等,可参考XXX的文档和实际调试的结果。
如图所示,该音频处理模块提供2Microphone输入,2Speaker输出,和1Loudspeaker输出。目前的工作是将1Speaker输出连接至电话手柄,另1Speaker输出和1Loudspeaker输出可通过软件控制来任选其一来连接至外部扬声器。






在开发初期,我们需要结合软硬件,让产品在特定的硬件电路上的能正常工作,包括管脚配置、寄存器配置、通道控制、增益调节等等。在平台在底层基本定型之后,在后续的应用开发上,遇到的问题一般是音量控制、通道选择、侧音消除、回音消除、个别器件的增益调节等。下图是在音量控制当中,对调节不同类型的声音,实际上调节的是不同放大器的示意说明:





4          软件架构声音部分的软件层次结构如下图所示,





MMI等上层应用通过接口函数来控制声音功能,中间层为上层提供API,在处理这些API的时候,向驱动层发送信令;驱动层又分为控制层和功能层,控制层根据当前需要使用的资源设备类型,将信令事件分发给不同的功能函数,功能层则是这些功能函数的集合。
下面的流程图便是一个简单的API调用例程:






5          Loudspeaker调试过程
下面是部分的参考设计原理图,


可以看到:
LOUD1LOUD2EPp1EPn1是短接的,并连接到电话手柄;EPPa1单端输出,连接到扬声器。我们所要做的工作在硬件上是把LOUD1LOUD2接到扬声器上,并在软件上进行通道控制,使声音从合适的地方播放出来。

下面是软件部分的几个数据结构:aud_afe_vrxctrl_1_typeaud_afe_vrxctrl_2_typeaud_intern_ldspk_cfg_type





这几个数据结构是在进行通道控制的时候,发给DSP Task来修改当前寄存器的值,来使设置的语音通道生效的。数据结构的各个BIT的含义在后面的注释里有明确的说明,我们可以按要求给这几个数据结构赋值,并通过给DSP发送相应的命令来达到自己的预期目的。
而实际上更为简单的方法是修改eep.c的静态数据的默认设置值,来完成这个工作,因为我们不需要动态控制语音的输出通道,所以直接修改默认配置是完全可以的。
eep.h文件里,有一个数据结构eep_static_type,它有一个eep_aud_setting_type类型的成员变量audio_setting,是来进行默认通道配置的。对照上面提到的三个用来写寄存器的数据结构的说明,并参考eep.c文件的相应参数,就可以完成工作了(下图黑圈里的值是修改之前的,红圈里的值是修改后能实现我们目标的设置值)。

原创粉丝点击