作者的话
ADAU1452和ADAU1466,作为ADI SigmaDSP里的经典款,支持SPDIF的输入和输出,但是很多兄弟并不知道应该如何配置,来实现这个功能,下面我就用硬件板+软件程序配置来详细的说一说吧。
我在这里做三个例程,SPDIF IN-DAC OUT,SPDIF IN-SPDIF OUT,以及 ADC IN-SPDIF OUT,每一个例程都可以实际操作并得到结果。
硬件准备
我用ADAU1452来讲,ADAU1466因为和1452是P2P兼容的,所以操作是完全一样的,可以直接参考。
ADAU1452EVB:ADAU1452的开发板两块,上面做了SPDIF IN和SPDIF OUT;
ADSP-AUDIO OUT:带SPDIF OUT的声卡
USBi仿真器:ADAU系列DSP的专用仿真器
软件准备
依然是SigmaStdio,这个没啥好说的,但凡是ADAU系列DSP,都是用这个软件,也没有别的软件可以选。
SPDIF设计的硬件原理图
硬件设计真的是平平无奇,因为ADAU1452有专门的SPDIF IN和OUT的管脚,完全独立不复用,直接引线出来到接口就完了,没什么可说的。
SPDIF输入,DAC输出详解
我准备好了手机,PC 电脑,两块 ADAU1452 开发板,一个带 SPDIF IN 接口的 USB 声卡,一个音箱,音频线若干,SPDIF 线若干。
这个例程,我们要用 USB 声卡,把电脑里的音乐,通过 USB 声卡的 SPDIF OUT 接口输出到一块 ADAU1452 开发板中,实现 SPDIF IN,这个时候电脑上的酷我音乐+USB 声卡输出,成为SPDIF IN 的音源。
ADAU1452 开发板接受到了 SDPIF IN 的音源之后,直通到 DAC 模拟接口 16/17 输出,实现整个功能,SPDIF IN 输入,模拟 16/17 输出。
这个例程中,我们要用到一个 ADAU1452 板,一个 USB 声卡,一个音箱,USBi 调试器等,如下图进行硬件链接。
- USB 声卡的设置:
USB 声卡我们先要让他顺利的输出 SPDIF,首先用 USB 线把声卡和 PC 链接起来,PC 插入后
自动识别成下图的设备:
因为我的电脑上本身有声卡,所以我需要让这个 USB 声卡成为我的默认声卡输出。怎么做见下图:
这样就设置好啦,PC 里播放的音乐,就通过这个 USB 声卡的 SPDIF 口输出。
- SigmaStudio 软件里的工程
这里面我就直接讲程序了,详细看过前面文档的用户已经能够很熟练的进行 HARDWARE 设置,以及操作了
1)如图所示的程序,SPDIF IN 就是这个 ASRC Input,过一个音量调节模块,再输出到 16/17。
2)配置下 DSP 内部的寄存器, 切换到 Hardware Configurations 页 面中的 Routing Matrix 一页,在此我们需要把 SPDIF0 的输入接到 ASRC 模块中的 ch0-1 并设置 ASRC 的输出频率参考值。
如果上图看不清,可以直接看我的例程里头的配置。
3) 切换到 Hardware Configurations 页面中的 SPDIF_RX 一页, 如图所示设置 SPDIF 输入端的恢复机制。
4)如要用到 SPDIF 输出, 需要在 SPDIF_TX 页面打开 SPDIF 的发送开关。我们后面要用到SPDIF OUT,所以就都打开吧。
5)我们就完成了一个简单的从 ADAU1452 的 SPDIF 口输入数字音频, 然后从其 I2S 接口输出并经过 DAC 模拟输出的工程。下载程序后,PC 打开某一个音乐软件,播放音乐。ADAU1452板上的小音箱就开始直通播放啦。
SPDIF输入,SPDIF输出
实现的功能说明
SPDIF 的输入输出如何验证,这里就需要 2 块 ADAU1452 开发板了。我们通过USB声卡作为音源,给第一块ADAU1452开发板输入SPDIF IN,并通过板子上的SPDIF OUT 输出,实现直通。
那么这个输出的 SPDIF OUT 怎么验证是否正确呢,我们把他输出到第二块 ADAU1452 板的 IN那里,作为第二块 ADAU1452 板的 SPDIF IN 音源,由第二块板的模拟接口 16/17 输出出去。
如果 USB 声卡播放音乐,第二块板的模拟接口音箱能正常播放,不就能验证了么,下面就是这么做的。
1)硬件准备和链接(第一阶段)
SigmaStudio 软件里的工程(第一阶段)
先做第一块板的 SPDIF IN 和 OUT 程序。
寄存器里的配置我再这里就不重复了。SPDIF IN,经过一个音量调节模块,SPDIF OUT。
下载程序,这个是没有现象的,因为输出 SPDIF OUT 啥都没接。然后我们把这个程序烧写到EEPROM 进行固化脱机。(固化脱机我也不重复了,前面的文档都有讲)
固化后,让第一块板的自启动开关打到 ON,让他自启动,这样这个板子就脱机运行 SPDIF IN
和 SPDIF OUT 了。
2)硬件准备和链接(第二阶段)
SigmaStudio 软件里的工程(第二阶段)
第一块板上电脱机,实现了 SPDIF IN 到 SPDIF OUT 的直通功能,但是我们需要在第二块板上验证他,所以让第一块板的 SPDIF OUT 接到第二块板的 IN,作为第二块板的音源。
然后调试第二块 1452 板,做 SPDIF IN 到 DAC,就可以啦。
这个程序第一个例程里已经详细说了,这里就不重复了。
这个时候,第一块板上电自启动,第二块板下载程序。PC 通过 USB 声卡输出的 SPDIF,接到第一块 1452 中做 SPDIF IN-OUT,再输出到第二块板,做 SPDIF IN-DAC,音箱正常播放,实现功能,是不是很简单!我的宗旨,能动鼠标,绝不多敲一个代码。
ADC输入,SPDIF输出
实现的功能说明
上面两个例程都是 SPDIF IN,能不能模拟音源输入,SPDIF OUT 呢?必然可以,SigmaDSP 就
是这么方便,我们来实现它,手机作为模拟音源,直接接到第一块 ADAU1452 开发板的 0/1输入接口中,再 SPDIF OUT。
怎么去验证这个 SPDIF OUT 正确输出呢,一样我们接第二块ADAU1452 板的 SPDIF IN 接口,把第一块 1452 板作为第二块 1452 板的 SPDIF 音源,然后 DAC送到音箱听直通效果,就可以验证啦。
1)硬件准备和链接(第一阶段)
这个阶段,我们只需要对第一块 ADAU1452 板进行编程就行了,所以就是正常的 USBi 调试板子的链接。
SigmaStudio 软件里的工程(第一阶段)
寄存器得配置我就不多说了,跟第一个例程一样。模拟 0/1 输入,SPDIF OUT 输出。
然后下载程序,注意一定要下载程序,再烧写到板子的 EEPROM 里实现脱机。让这个板子脱机完成模拟输入,SPDIF OUT 输出的功能。
2)硬件准备和链接(第二阶段)
手机输入音源,在第一块板的 0/1 输入,SPDIF OUT 输出,给到第二块板的 SPDIF IN,做 DAC输出到音箱。
SigmaStudio 软件里的工程(第二阶段)
第一块板上电脱机,实现了模拟到 SPDIF OUT 的直通功能,但是我们需要在第二块板上验证他,所以让第一块板的 SPDIF OUT 接到第二块板的 IN,作为第二块板的音源。然后调试第二块 1452 板,做 SPDIF IN 到 DAC,就可以啦。
这个程序第一个例程里已经详细说了,这里就不重复了。这个时候让第一块板脱机,下载程序到第二块板,手机播放的音乐,就在音箱里正常播放了。
总结
SPDIF 的 IN 和 OUT,与模拟的 IN 和 OUT 一样,只需要知道从软件的哪里调出输入输出,然后寄存器配对就可以了。至于音源进来之后的处理,就跟之前文档里讲得一样啦,这个文档到此就结束了,预祝大家在 SPDIF 这块玩得开心。
再说一句题外话,把 ADC 输入,SPDIF 输出的例程固化到板子上,实现脱机之后,这块板就可以当 SPDIF 数字音频的音源啦,也是一个很方便的应用,大家可以考虑玩一下。