【发布时间】:2018-03-31 11:56:39
【问题描述】:
我正在尝试将 I2S 麦克风 (https://www.adafruit.com/product/3421) 与 BeagleBone Black 连接。我关注了文章 (http://www.ti.com/lit/an/sprac97/sprac97.pdf),并且能够按照文章中的建议更新设备树和 Linux 内核。
设备树的 I2S 组件(用于麦克风)作为 dtsi 包含在主设备树源中。 dtsi的内容如下
&am33xx_pinmux {
mcasp1_pins: mcasp1_pins {
pinctrl-single,pins = <
/* sink must enable receivers */
0x1a0 0x23
/* P9_42 mcasp1_aclkx - bit clock */
0x1a4 0x23
/* P9_27 mcasp1_fsx - frame sync */
0x1a8 0x23
/* P9_41 mcasp1_axr0 - i2s input */
>;
};
};
&mcasp1 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp1_pins>;
status = "okay";
op-mode = <0>;
tdm-slots = <2>;
num-serializer = <4>;
serial-dir = < /* 1 TX 2 RX 0 unused */
2 0 0 0
>;
rx-num-evt = <1>;
tx-num-evt = <1>;
};
/ {
pcm5102a: pcm5102a {
#sound-dai-cells = <0>;
compatible = "ti,pcm5102a";
status = "okay";
};
sound1: sound@1 {
compatible = "simple-audio-card";
simple-audio-card,name = "PCM5102a";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&sound1_master>;
simple-audio-card,frame-master = <&sound1_master>;
simple-audio-card,bitclock-inversion;
simple-audio-card,cpu {
sound-dai = <&mcasp1>;
};
sound1_master: simple-audio-card,codec {
#sound-dai-cells = <0>;
sound-dai = <&pcm5102a>;
clocks = <&mcasp1_fck>;
clock-names = "mclk";
};
};
};
最终的设备树(从 am335x-boneblack.dtb 反编译)附在 here 上。 McASP 条目 (mcasp1_pins),包括上述 TI 文档中指定的引脚,位于第 1077 行。
我还按照文档中的建议使用新驱动程序 pcm5102 编译了内核。最后,我看到了在 arecord 命令的输出中列出的驱动程序。
root@arm:/sys/class/gpio# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCM5102a [PCM5102a], device 0: davinci-mcasp.0-pcm5102a-hifi pcm5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
但是,每当我尝试录制音频时,我都没有收到任何音频数据。音频文件已形成,但无论我尝试录制音频多长时间,文件大小始终为 44 字节。显然文件中没有数据。
使用 arecord 命令录制会出现如下错误
arecord -d 10 -Dhw:0,0 -f dat audio.wav
Recording WAVE 'audio.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
arecord: pcm_read:2032: read error: Input/output error
此外,每当我尝试将时钟 (MCASP1_ACLKR (Bit Clock) - P9_42) 与我的示波器连接时,我都看不到任何脉冲。看起来此引脚上没有正确的时钟信号。我可以做些什么来调试和解决这个问题?
有什么想法吗?
段落
【问题讨论】:
-
我遇到了同样的“输入/输出错误”问题,尽管使用的是 USB 麦克风。奇怪的是,运行“arecord”几次(2 或 3 次)后,它按预期工作。这有什么好运气吗?
标签: beagleboneblack microphone microprocessors