您说I2S有什么大不了的? 将接线连接到所需的引脚,一切正常。

我也这么认为,但是事实证明,使用Omega2微型计算机并不是那么简单。 所以我决定写这篇文章。
让我们从我最后取得的成就开始。 我将TDA1543芯片(振幅为16位的分辨率的立体声I2S DAC)连接到Omega 2微型计算机,声音很好,我喜欢听互联网广播电台(应该有关于发烧友和暖管声音的笑话)。 但是,我仍然不明白音频过载的原因,只是学会了使用拐杖方法绕过音频。 我非常想听听您对这个问题的想法。
也许有人不知道Omega2是什么。 这是Linux基于LEDE的微型计算机,LEDE本质上是OpenWRT的一个分支。 MT7688处理器,64 MB RAM和16 MB Flash。 通常,您可以在
此处和
此处在
Wikipedia上阅读更多内容。
还需要注意的是,所有操作均在原始固件版本0.2.0上执行现在,让我们谈谈我遇到的
痛苦 。
首先,一切都是透明的,我们将I2S TDA'shki和Omega的所有线路连接在一起。 它们分别是CLK时钟线,WS通道同步线,DATA数据线和GND地。 另外,我们添加了一对电阻器和电容器,但主要的是TDA1543第七脚的调谐电阻。 我第一次入睡时,必须对这条腿施加零偏移。 事实是,TDA1543芯片是目前唯一的,它以单极电源运行。 好吧,声音信号是相对于0上下的振荡,因此您需要将此零移至电源电压范围的中间,并获得相对于该点的振荡。 一切都写在数据表中,但是最初,我用一个常规电阻器(来自您的Internet电阻)组装了一个电路,并收到了我很长一段时间不了解的失真。 在输入端没有信号(待机模式)为1.3-1.5 V(使用3.3 V电源)时,放置一个可变电阻器并实现零偏置。 事实证明以下方案。

此外,按照
洋葱官方网站上的步骤操作
,我们已更新以开发固件版本,该固件版本增加了对I2S的支持(我想写不到一年的时间,但没有通过)。 我们更新并安装必要的声音包:
opkg update opkg install alsa-utils mpg123
使用以下命令将GPIO切换为I2S模式:
omega2-ctrl gpiomux set i2s i2s
我们复制测试的wav文件,我使用了经典的Suzanne Vega-汤姆的晚餐。 并尝试使用aplay进行游戏:
aplay za_sebya_i_za_sashky.wav
而且我们听到失真。 只是很多硬过载。 如此之多,以至于您仿佛回到了2007年。但是这首歌的震撼力可以追溯到其中,所以在那里有些奏效吧?
我试图调低alsa混音器的音量-无济于事,因为驱动程序由MAX98090芯片锐化,该芯片由I2C控制,因此所有设置都直接发送到I2C,并且I2S数据本身不会改变。
好的,打开MAX98090的数据手册。 然后我们开始发光。 该微电路支持许多输入数据格式:I2S / LJ / RJ / TDM,并且可以消化大量数据。 MT7688处理器本身也可以比TDDA更大,更快。 也许是I2S中的数据问题?
我逐渐去修理示波器。
位16位? 是的 我将WS线挂在另一个通道的CLK线上。 我对WS-16脉冲长度的测量方法深信不疑。
工作频率错误? 不行 频率全部对应于工人。 WS-44100 Hz,CLK-1411200 Hz。
格式化数据中的类型数字? 使用正确的字符格式(是的,我认为需要unsigned)。 他通过创建人工正弦并在大胆的基础上相对于0上下移动来进行检查,并更改了振幅。 没有质的变化。
反正有I2S吗? 很可能是。 首先,因为随后一切都对我有用(嗯,或者在我看来是这样),其次,我尝试使用示波器进行检查,尽管没有逻辑分析仪当然很困难。 进行更准确的测试并将您的Beaglebone带到这里可能是值得的。
似乎所有事情都是对的,对于洋葱论坛上的人来说,一切都可以,但是事实在其他芯片上:MAX98357A和PCM5102。 通常,我放弃播放wav'ki的想法,而让mpg123播放mp3。 我用-C标志将其剪切并开始降低音量。 在这里我坐了下来。 将mpg123程序中的音量设置为大约1%时,我会得到很好的声音。 芯片摆动到最大幅度。 我从-f 128标志开始广播:
mpg123 -f 128 http://us2.internet-radio.com:8443/
轻松的美国布鲁斯的声音让我感到满足。 顺便说一句,到收音机的链接可能不起作用,
取自此处 。

我开始锯齿状信号并逐渐增加幅度。 结果,我看到失真是从0到电源电压的混沌跳跃,并且电平越高,这些跳跃越多。 我花了几个星期才让欧米茄说话。 我非常疲倦,因此,此刻我决定停止-它起作用了!
但是,我知道这是不可能的,因此,我很高兴听到您的想法和建议。 好吧,对于那些试图在痛苦中进行欧米茄讲话的人,希望我能对您有所帮助!
谢谢大家!