进入正文之前,先跟Hot叔说声抱歉。很抱歉没有能够履行当初承诺的3篇**。
在软件方面,有那么多珠玉或者砖头在前,我没有啥可说的。下面只讨论一下板子音频部分的硬件。
分两个方面。一是数字接口,一是模拟输出。
I2S 总线接口的 BCLK 所需的频率一般为:
44.1kHz × 16 × 2 = 1411.2 kHz = 1.4112 MHz
这是CD音质的。此处不涉及SRC(采样率变换)。
如果音源文件为 96kHz@24bit 音质的话,U5(HT82V731) 这颗芯片解不了码。
不过计算方式倒是一样的。
96kHz × 24 × 2 = 4608 kHz = 4.608 MHz
板子上使用的是12MHz晶体。使用该频率我得不到 1.4112 MHz 这个频点。所以我给板子换上了 16.9344 MHz 的晶体(1.4112MHz的12倍频)。
数字部分就是这点改动了。
以下为模拟部分。
板子上标号为 U6 这个芯片是 TDA2822。
该芯片有着固定的 40dB 的闭环电压增益。10000倍。
这样来估算一下。该芯片供电电压为 3.3V(肯定不会是轨到轨输出),输出假定为 2V。
2 / 10000 = 0.2mV
也就是说,当它的输入信号的峰峰值小于 0.2mV 时,才不会产生饱和失真。
再来看一下 U5(HT82V731) 的输出范围:
手册上只有供电为 5V 时的输出: 2.5V 峰峰值。
假设3.3V供电时为 1.2 Vpp。
U5 的左右声道隔直输出,通过电阻分压之后输入到U6。
1.2V / 0.2mV = 6000 倍。
1M欧姆 / 6000 = 166 欧姆。如果使用这种分压比,地噪声可能会掩盖有效信号。
我的建议:去掉 U6 这颗芯片。直接使用两个电解电容跨接U5的输出到耳机接头那里。或者,在C25、C26那里可以分别串联 (100~300)欧姆 的稍微有点功率的电阻。(可以叠焊4个1k欧姆的,那就是250了。)
经过这种改动后,至少可以是加上耳机去稍微听一会的。
SD卡的读取,已经有相关帖子了,不赘言。
wav文件的解码,了解一下文件格式后,就能解决。
MP3解码,我不了解。
再提一句SPI1控制SD卡的时钟速率,最高也就是50MHz的4分频,即12.5MHz。再快的话,时钟波形全变了。我用示波器看了 25MHz的,根本建立不起来。 |