ADAU1452的开发教程3:常规音频算法的开发(1)

作者的话

查看以前写的文章,竟然漏了ADAU1452的教程,这个系列补上。

硬件准备

ADAU1452EVB开发板 一块

产品链接:https://item.taobao.com/item.htm?id=39289236798\&mi_id=0000wqoRr6-98ywbCw8ZTr0mE6q1cknIFCl463Z2sUYdsks\&spm=a21xtw.29178619.0.0

USBi仿真器 一个

产品链接:https://item.taobao.com/item.htm?id=38242936768\&ltk2=17537807781694bl3w9jzvg4i3etpojyy4\&spm=a21xtw.29178619.0.0

5V2A电源适配器一个

3.5mm音频线两条

MINI USB线一根

模拟音频输入音源:手机

模拟音频输出设备:耳机

软件准备

首选需要安装 SigmaStudio 软件,这个软件是开发 ADAU1452 的唯一工具,你的所有功能都依赖这个软件来实现,所以请随时关注 ADI 官网上的软件更新情况,确保自己安装的是最新的 SigmaStudio 软件,已获得更多更稳定的功能。

目前最新的SigmaStudio软件版本是4.7,而且应该不会再有更新了,所以我们如果用SigmaStudio,就固定在4.7版。

这个软件是完全免费的,直接下载安装即可。

特别注意,安装 SigmaStudio 时,有可能需要你安装 Microsoft.NET Framework Ver4.0,如果你的机器之前没有安装过此类软件包。 最新版本的.net Framework 可到网站下载。

软件都装好了,就可以正式开启我们的 ADAU1452 的开发之旅了!

开发平台搭建示意图

ADAU1452 的开发 2:直通 2

第一个例程我们把板子弄出声了,输入音乐,输出音乐,这个也是验证板子硬件是否正常的最常规办法。第二个例程,我们把直通换到另一个输出通道接口上去,加深一下对通道设置的理解。

首先是硬件设计,再是原理图设计,跟例程 1 完全一样,我就不再重复叙述了。

在原理图的设计中,把输出改成 OUT2,就对应的是板子上的 16/17,第二个输出接口,将音乐输出到这个接口的音箱上:

下载做好的程序,这个时候音箱就不出声了,因为我们改通道了,拔掉之前插在 OUT1 上的音箱,直接插到 OUT2 上,音箱又开始播放了。

ADAU1452 的开发 3:音频一分二(二进四出)

这个例程,我们将实现一路音源入,两路同时输出。

首先是硬件设计,然后到了原理图的阶段,因为是两路输出,所以我们需要拖出 4 个 output

先将 output 的通道选择好, 0/1 是一组, 16/17 是第二组。

于是问题来了,输入接口只有 2 个点,如何才能跟 4 个 output 相连呢,这里我们需要引入一个非常重要的模块,T。T 可以让他们并联起来。

链接好原理图,下载程序,手机输入的音乐,将会在 OUT1 和 OUT2 输出到外设音箱,同时同步播放。

ADAU1452 的开发 4:音频二分四(四进八出)

通过前三个例程,在直通这块,用户应该能理解了,下面做一个音频二分四,两路音频输入,分别通过四路音频输出接四个音箱。(特别注意,我这里二分四,指的是输入两个立体声音源,从四个立体声音箱输出,如果用更专业的通道来描述,应该是模拟的四进八出,一个一个立体声音源是占用的两路通道,这个在软件程序中也能很清晰得看出来)

从上面的程序可以看出来,音频输入是 0/1 和 16/17,两个立体声(四进)输入。

 0/1 输入后接输出接口 0/1 和 16/17,两个立体声(四出)输出

 16/17 输入后接输出接口 32/33 和 40/41,两个立体声(四出)输出

所以程序就实现了二分四(四进八出)的功能。

ADAU1452 的开发 5:音量控制

前面 4 个例程都是直通,没有做任何的音效处理,下面就让我们正式在这些直通中间加入各种算法,来做音效吧。

第一个处理,也是最简单的,音量调节。

1)硬件设计,所有的 SigmaDSP 第一步都是如此,参照前面的说明,不再赘述。

2)首先设计 Input,同样是将左边的 input 拖到右边。Tree Toolbox, 点开 IO 模块组, 然后选择 Input 模块中的 sdata0-15(因为我们要用到开发板上的 IN0-1) , 并将其拖到右边的空白工作区;

2)设置一个音量控制,点开 Volume Controls 模块组,然后依此选中/点击 Adjustable Gain >Clickless HW Slew, 再把其中的 Single volume 模块拖到工作区。

3)选中并鼠标右键点击刚加入的 Single 1 模块, 选择弹出菜单里的 Grow Algorithm>1. Gain (HW slew) >1, 使其支持双声道处理。并将 input 与其链接。

4)将 Input 模块和音量调节模块进行连接。

5)设置输出:点开 IO 的 output,如下图拖出来 2 个。

这两个就是你要输出的 HP-OUT。

6)选择 HP-OUT 的接口:我们板子上有 4 个 HP-OUT,也就是说有 8 路输出,应该如何让软件设置与板子的硬件接口对应呢?其实很简单,我们选择一下就好了。这里我选 OUT2(CH16-17)

7)将调音量的模块与音频输出链接,完成该例程的设计。

8)再多说一句,这里我们输入用的是 0-1 通道,输出用的是 16-17 通道,在板子上你会很清晰的看到这两个接口,将硬件的输入和输出分别对应的接上就好啦。

9)将做好的例程下载到板子上。可按 F7 或快捷按钮,或通过主菜单 Link Compile Download来把你的设计下载到开发板的 ADAU1452 中,实现 1452 的音频功能。

10)将输入音源设备播放音源,输出音源开始正常播放,这个时候只需要在 SigmaStudio 软

件中,你的工程里调节调音模块,就可以控制音量大小了。

注意 1:编译完毕后,SS 会在右边的 output 窗体里显示编译结果,如有错误会提示错误信息,用户可据此信息去修改设计;如成功则会显示资源占用信息,用户可根据百分比来增减模块,如图:

注意 2:USBi 将例程 down 到了板子上 ADAU1452 的 SRAM 上,断电就没有了。USBi 的这种调试是为了快速验证功能,最终需要把这个例程的代码烧写到 ADAU1452 的外部 EEPROM 来实现自启动,从而实现脱机运行。因为还想要多写几个例程,所以这个最终的烧写操作我会放到最后来写。

这个例程再重复了一遍 1452 的开发全流程,相信用户经过前面几个例程的自己开发,已经能够熟练掌握。后面的例程就只讲程序,不复述整个流程了。

相关推荐
王老师青少年编程13 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
叼烟扛炮14 小时前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说14 小时前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
wuweijianlove14 小时前
关于算法设计中的代价函数优化与约束求解的技术7
算法
leoufung15 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了15 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
HXDGCL15 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
谭欣辰15 小时前
C++ 排列组合完整指南
开发语言·c++·算法
代码中介商15 小时前
银行管理系统的业务血肉 —— 流程、状态机、输入校验与持久化(下篇)
c语言·算法
foundbug99916 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab