如果您使用的是Beaglebone AI板,而且在使用I2S接口时只能获取一半的频道,可能是由于在设备树中没有正确配置I2S接口的问题。请按照以下步骤解决:
首先,需要编辑设备树文件来正确配置I2S接口。根据Beaglebone AI的规格说明,I2S接口可以使用McASP1和McASP2控制器。确保您使用的是正确的控制器并将其配置为正确的模式。
以下是一个示例配置McASP1控制器的设备树片段:
&am33xx_pinmux {
...
mcasp1_pins: mcasp1_pins {
pinctrl-single,pins = <
...
0x194 0x13 /* mcasp1_aclkr.mcasp1_slice0_out */
0x198 0x13 /* mcasp1_fsx.mcasp1_slice0_out */
0x19c 0x13 /* mcasp1_axr0.mcasp1_slice0_in */
0x1a0 0x13 /* mcasp1_ahclkr.mcasp1_slice1_out */
0x1a4 0x13 /* mcasp1_axr1.mcasp1_slice1_in */
...
>;
};
};
&mcasp1 {
#sound-dai-cells = <0>;
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mcasp1_pins>;
tdm-slots = <2>;
tdm-slot-width = <16>;
num-serializer = <2>;
serial-dir = < 1 0 >;
tx-num-evt = <1>;
tx-clk-rate = <48000>;
rx-num-evt = <1>;
rx-clk-rate = <48000>;
op-mode = <0>; /* McASP-I2S mode */
sync-source = <1>; /* External Clock */
};
该设备树片段将配置McASP1控制器的I2S模式。它使用两个音频槽,每个槽16位宽,两个序列化器和外部时钟同步。要使用该配置,请通过命令“dtc -I dts -O dtb -o /lib/firmware/am335x-boneblack-ai-00A0.dtbo am335