ADAU1452和ADAU1466应该怎么做SPDIF输入和输出?(含图文+例程详解)

news/2024/12/11 22:57:38/

作者的话

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 调试器等,如下图进行硬件链接。

在这里插入图片描述

  1. USB 声卡的设置:

USB 声卡我们先要让他顺利的输出 SPDIF,首先用 USB 线把声卡和 PC 链接起来,PC 插入后
自动识别成下图的设备:

在这里插入图片描述

因为我的电脑上本身有声卡,所以我需要让这个 USB 声卡成为我的默认声卡输出。怎么做见下图:

在这里插入图片描述

在这里插入图片描述

这样就设置好啦,PC 里播放的音乐,就通过这个 USB 声卡的 SPDIF 口输出。

  1. 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 数字音频的音源啦,也是一个很方便的应用,大家可以考虑玩一下。


http://www.ppmy.cn/news/473781.html

相关文章

poj1466

这题考察的是最大独立集问题, 算是裸的二分匹配, 只要在计算上添加一个n - count/2 就可以直接得出结果了。 不管是男的还是女的都一样,因为你男的算一边,女的再算一遍,这样算两遍, 不管你这个学号是男的还…

hdu 1466

F-计算直线的交点数HDU - 1466 平面上有n条直线&#xff0c;且无三线共点&#xff0c;问这些直线能有多少种不同交点数。 比如,如果n2,则可能的交点数量为0(平行)或者1(不平行)。 Input 输入数据包含多个测试实例,每个测试实例占一行,每行包含一个正整数n&#xff08;n<20&a…

ORACLE故障处理之ORA-1466

[问题现象] 客户系统运用已经非常久时间&#xff0c;不过最近某几个业务运用量上涨出现各种诡异的情况。 如下是其中一个问题数据库抛出ORA-1466错误。 Mon Sep 23 09:07:17 2019 ORA-1466 (RO Tx began: 09/23/2019 01:07:13, Last DDL: 09/23/2019 01:07:16, Curr Time: 09…

1466:【例题2】Power Strings

题意&#xff1a; 定义a为一个字符串&#xff0c;aa表示两个字符相连&#xff0c;即 an1aan &#xff0c;也就是出现循环了。给定一个字符串&#xff0c;若将其表示成an&#xff0c;问n最大为多少&#xff1f; 思路&#xff1a; 如果完全不循环&#xff0c;顶多就是类似于ab…

从C语言到C++_20(仿函数+优先级队列priority_queue的模拟实现+反向迭代器)

目录 1. priority_queue的模拟实现 1.1 未完全的priority_queue 1.2 迭代器区间构造和无参构造 1.3 仿函数的介绍和使用 1.4 完整priority_queue代码&#xff1a; 1.5 相关笔试选择题 答案&#xff1a; 2. 反向迭代器 2.1 反向迭代器的普通实现 reverse_iterator.h&a…

测试面试的流程

1 测试流程&#xff1f; 项目启动后&#xff0c;测试人员尽早找开发人员拿到接口文档&#xff0c;获取接口文档后进行接口用例的编写和调试&#xff0c; 完成后部署到持续集成的测试环境中&#xff0c;进行接口的日常监控&#xff0c; 定期对接口脚本的维护更新&#xff0c;接…

这个是我18年整理的,之前在我的电子笔记,现在感觉还是需要分享写写博客大家互相学习更好

** 总结功能测试面试常见问题 ** 一、接口测试需要注意什么&#xff1f; 1、 注意数据清理 在写脚本后注意及时清理接口测试过程中&#xff0c;向数据库或实时搜索中插入的数据&#xff0c;以免脚本的持续运行&#xff0c;会对数据库和实时搜索造成不必要的负担。 2、 在编写…

如何规划一款AI硬件产品(以人脸识别考勤门锁为例)_团员分享_@ocean

前言&#xff1a;本文作者团员ocean&#xff0c;分享了很多来自实战的内容&#xff0c;特别是人脸识别考勤门禁一体机的需求分析&#xff0c;以及人脸识别算法指标&#xff08;准确率、召回率、误识率、拒识率、ROC曲线和识别速度&#xff09;&#xff0c;大家能直接借鉴到自己…