作者的话
ADAU1467是现阶段ADI支持最多通道的ADAU音频DSP,他配合外部的AD/DA,可以实现最多32路音频通道,接了一个小项目,我拿它做了一块20进10出的板,10个MIC/LINE输入,10个LINE IN输入,10个HPOUT,算是把他的接口几乎都用全,芯片性能开发到了极致。(其实可以做20个MIC IN,但是因为客户的具体需求是10个LINE IN,10个MIC IN)
芯片选型
项目背景的话,做这块板的目的是给ADAU1467搞功能验证,还有极限性能评估,所以并没有考虑更细节的芯片成本,怎么方便怎么来。
主芯片当然就是ADAU1467了,CODEC考虑到要LINE IN的同时能够模拟MIC IN,这就要求Codec的AD需要具备前置放大,需要有偏置电压,我选了ADAU1772做Codec,这其实也是一颗DSP,但他片内有一个adda,能做到4进2出,而且4进全部可以支持MIC IN,搞起来非常方便快捷,于是我就直接用它了。这颗codec也因为有自带的运放,我在模拟输出的设计时就不需要额外加运放了。
4进2出去配ADAU1467显然是不够的,那我就拼5个,就有20进10出了,这是我的选型思路。
这个系列文章将对这个电路板的软硬件开发设计做详细讲解,上一章我们讲了硬件设计,这一章我们开始讲软件开发。
硬件准备
开发板的产品链接:https://item.taobao.com/item.htm?id=625095214294&spm=a1z10.5-c.w4002-5192690539.15.713a1c74E0XfRv
调试器的产品链接:https://item.taobao.com/item.htm?id=38242936768&spm=a1z10.5-c.w4002-5192690539.11.663b2dbdDNXVZF
ADAU1467 的开发 8:双通道音量调音
SigmaStudio 里的算法模块,很多都是可以添加输入输出的,比如这个音量调节模块就可以,我们来看一下如何用一个音量调节模块,来控制 2 路输出(立体声)。
1)通过原理图设计,达到下面的效果
2)选中并鼠标右键点击刚加入的 Single 1 模块, 选择弹出菜单里的 Grow Algorithm>1. Gain (HW slew) >1, 使其支持双声道处理。并将 input 与其链接。
3)将 Input 模块和音量调节模块进行连接。
4)设置输出:点开 IO 的 output,如下图拖出来 2 个。
这两个就是你要输出的 HP-OUT。
5)选择 HP-OUT 的接口:我们板子上有 10 个 HP-OUT,也就是说有 10 路输出,应该如何让软件设置与板子的硬件接口对应呢?其实很简单,我们选择一下就好了。这里我就默认的4/5。
6)将调音量的模块与音频输出链接,完成该例程的设计。
7)小技巧:如果有用户找不到调音的模块,没有关系,可以复制我工程中的模块,SigmaStudio支持这个功能。(SigmaStudio 里的功能模块非常多,很多时候我也不记得哪个模块具体在哪里,要么就直接复制以前的工程,要么就通过软件的 Help 搜关键字,然后看能不能找到路径)
8)将做好的例程下载到板子上。可按下图所示,来把你的设计下载到开发板的 ADAU1467的 SRAM 中,实现 1467 的音频功能。
如 USBi 与开发板通信正常, SS 右下角的状态栏会显示 100%, Active: Downloaded。
9)将输入音源设备播放音源,输出音源开始正常播放,这个时候只需要在 SigmaStudio 软件中,你的工程里调节调音模块,就可以控制音量大小了。
注意:编译完毕后,SS 会在右边的 output 窗体里显示编译结果,如有错误会提示错误信息,用户可据此信息去修改设计;如成功则会显示资源占用信息,用户可根据百分比来增减模块,如图:
这个例程把下载再写一遍,加深印象,相信 ADAU1467 的最基础开发流程用户已经能熟练掌握了。
ADAU1467 的开发 9:多通道音量调音
做一个复杂一点的程序,2 进 8 出,8 通道音量全部控制。
这个程序里,一个总音量调节之后,分出 8 通道,每 2 个通道(1 组立体声)分别由一个调音量模块来控制音量。同学们自己分别调一下音量,感受一下这个逻辑电路的含义。