XMOS USB Audio 2.0 可以支持采样率176.4kHz的S/PDIF输出

最近有很多人反映XMOS USB Audio 2.0的SPDIF输出不支持176.4khz。其实,这种说法并不完全正确。今天我就来给大家讲解下这其中的原由。

可以这么说,如果没做任何修改的话,原本XMOS官方出的XMOS USB Audio 2.0参考设计板是不支持176.4kHz的S/PDIF输出的。为什么会出现这样的情况呢?原来问题不是出在XMOS XS1-L1的芯片身上,而是USB AUDIO 2.0板子上面的时钟晶振的问题。

我们先来看看板子是如何选择时钟,来做到可以支持不同采样率的音源!以L1_128pin的芯片为例,在芯片的X0D51端口上的MCLK_SEL就是用来作为选择时钟的控制引脚。

当MCLK_SEL为低时,选择11.2896MHz的晶振,从而可以支持44.1kHz,88.2kHz和176.4kHz的采样率。
当MCLK_SEL为高时,选择24.576MHz的晶振,从而可以支持48kHz,96kHz和192kHz的采样率。

那么,为什么I2S会支持以上所有的采样率,而SPDIF却不可以呢?原因就在于:SPDIF要求双倍于I2S的采样时钟,因此这样除下来就支持不到176.4k了。


那如何才能解决这个问题呢?
其实很简单,只需两个步骤:
1.修改板子上的晶振,将11.2896MHz的晶振换成两倍的,也就是22.5792MHz即可。
2.修改软件,用XDE打开USB-Audio-2.0-Software-Reference-Design(3.3)[11.2.0]源码,在app_usb_aud_l1 -> src -> customdefines.h 中找到以下代码:

/* Master clock defines (in Hz) */
#define MCLK_441 ( 256 *44100) /* 44.1, 88.2 etc */
#define MCLK_48 (512*48000) /* 48, 96 etc */

将其改为以下的代码即可:

/* Master clock defines (in Hz) */
#define MCLK_441 ( 512 *44100) /* 44.1, 88.2 etc */
#define MCLK_48 (512*48000) /* 48, 96 etc */

你可能感兴趣的:(hifi)