主题中讨论的其他器件: TLV320ADC3140
我们将使用 PCMD3180编解码器和4个数字 PDM 麦克风测试新的 PCB 原型。 每个麦克风都连接到其中一个 GPI 输入、如我们的原理图所示: 
我们将使用适用于 TLV320ADCx140的共享上游 Linux 驱动程序、请参阅此论坛博文 https://e2e.ti.com/support/audio-group/audio/f/audio-forum/954542/faq-pcmd3180-is-there-a-linux-driver-for-the-pcmd3180-devices 中的详细信息
我们的主机是 Raspberry PI 4计算模块。
我们取得了一些初步的成功、能够通过我们的麦克风通道之一、通道1录制声音、质量似乎很好。 但是,我们无法通过任何其他渠道录制声音。 我们将 I2S 用于 DAI 格式/协议。
我们有以下问题:
1.对于我们的配置、在每个 GPI 输入上都有一个 PDM 麦克风、这是否与使用通道1、3、5、7相关? 通道2、4、6、8未使用?
2. Linux 驱动程序表示支持44.1kHz 和48kHz 的采样率,该驱动程序是否也可用于96kHz 和192kHz 的采样率?
3.假设 I2S 在默认情况下只能处理 RPI 左右两个通道,我们如何选择 I2S 流左右两个通道使用哪两个数字麦克风?
我们一直在使用 amixer 测试不同的通道组合、但到目前为止仅从通道1获取音频。 下面是一个尝试为通道1和3进行配置的示例:
amixer cset numid=29、iface=mixer、name='CH1_ASI_EN Switch'打开
amixer cset numid=30、iface=Mixer、name='CH2_ASI_EN Switch'关闭
amixer cset numid=31、iface=Mixer、name='CH3_ASI_EN Switch'打开
amixer cset numid=32、iface=mixer、name='CH4_ASI_EN Switch'关闭
amixer cset numid=33、iface=Mixer、name='CH5_ASI_EN Switch'关闭
amixer cset numid=34, iface=mixer, name='CH6_ASI_EN Switch'关闭
amixer cset numid=35, iface=Mixer, name='CH7_ASI_EN Switch'关闭
amixer cset numid=36、iface=Mixer、name='CH8_ASI_EN Switch'关闭
amixer cset numid=25、iface=mixer、name='MIC1M Input Mux' 2 # 0x3C、ADCX140_CH1_CFG0将通道1设置为数字麦克风输入
amixer cset numid=26、iface=mixer、name=MIC2M 输入多路复用器' 2 # 0x41、ADCX140_CH2_CFG0将通道2设置为数字麦克风输入
amixer cset numid=27、iface=mixer、name='MIC3M 输入多路复用器' 2.
amixer cset numid=28、iface=mixer、name='MIC4M 输入多路复用器' 2.
amixer cset numid=17、iface=mixer、name='MIC4P 输入多路复用器' 2.
amixer cset numid=18、iface=Mixer、name='MIC4P Input Mux' 2.
amixer cset numid=19、iface=mixer、name='MIC4P 输入多路复用器' 2.
amixer cset numid=20、iface=mixer、name='MIC4P 输入多路复用器' 2.
amixer cset numid=46,iface=Mixer, name='PDM Clk Div Select' 0
我们还使用'CHX_ASI_EN 开关'尝试了多种其他通道组合、我认为这些组合应该与我们启用的通道相关。 我们的假设是、如果我们启用两个通道、它们将进入 I2S 流的左通道和右通道。 我们在这里缺少什么吗?
我们的器件树设置如下、我们现在正在将简单音频卡用于声卡:
/DTS-v1/;
/插件/;
/{
兼容="BRCM,bcm2708";
片段@0{
目标=<&I2S>;
_overlay__{
#sound-di-cells =<0>;
状态="正常";
};
};
碎片@1{
target-path ="/";
_overlay__{
pcmd3180_MCLK:CODEC - MCLK{
兼容="固定时钟";
#clock-cells =<0>;
时钟频率=<24000000>;
};
};
};
碎片@2{
目标=<&i2c1>;
_overlay__{
#address-cells =<1>;
#size-cells =<0>;
状态="正常";
pcmd3180_A:pcmd3180@4C{
兼容="ti、tlv320adc3140";
reg =<0x4C>;
数据协议=<0>;
ti、mic 偏置源=<0>;
TI、PDM 边缘选择=<1 1 1>;
TI、GPI-CONFIG =<4 5 6 7>;
TI、GPO-CONFIG-1 =<4 1>;
TI、GPO-CONFIG-2 =<4 1>;
TI、GPO-CONFIG-3 =<4 1>;
TI、GPO-CONFIG-4 =<4 1>;
TI、ASI-TX-DRIVE =<1>;
TI、GPIO-CONFIG =<0 0>;
};
};
};
碎片@3{
目标=<声音>;
sound_overlay:__overlay__{
兼容="简单音频卡";
simple-audio-card、format ="I2S";
simple-audio-card、name ="pcmd3180-soundcard";
状态="正常";
simple-audio-card、bitclock-master =<&dailink0_master>;
simple-audio-card、frame-master =<&dailink0_master>;
dailink0_master:simple-audio-card、CPU{
Sound-Dai =<&I2S>;
时钟=<&pcmd3180_MCLK>;
};
简单音频卡、编解码器{
sound-dai =<&pcmd3180_a>;
};
};
};
_override__{
card-name =<&sound_overlay>、"simple-audio-card, name";
};
};
谢谢、
~Jeremy