首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Beaglebone中录制I2S音频麦克风

如何在Beaglebone中录制I2S音频麦克风
EN

Stack Overflow用户
提问于 2022-02-01 10:27:16
回答 1查看 207关注 0票数 2

我正在尝试录制从圆形麦克风板泰达-01454的Beaglebone AI。我已经检查了I2S数模转换器的输出是否正确(我能听到mics的声音)。然而,我不能在Beaglebone中录制,这就是我试图录制的结果:

arecord -device=“hw:1,0”-c2 -f S32_LE test.wav

记录波'test.wav‘:签名32位小终端,速率8000赫兹,立体声

记录: pcm_read:2145:读取错误:输入/输出错误

我认为问题肯定在我的DTS文件或ALSA配置的某个地方。但是我真的不知道,所以如果需要更多的信息,就去问吧。

DTS(未完成):

代码语言:javascript
复制
pcm5102a: pcm5102a {
   #sound-dai-cells = <0>;
   compatible = "ti,pcm5102a";
   status = "okay";
};


sound {compatible = "simple-audio-card";
        simple-audio-card,format = "i2s";
        simple-audio-card,name = "PCM5102a";
        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>;
            
        };
      };
};
&mcasp1 {
    #sound-dai-cells = <0>;
    status = "okay";
    pinctrl-names = "default";  
    pinctrl-0 = <&mcasp1_pins>;  
    op-mode = <0>;    /* MCASP_IIS_MODE */
    tdm-slots = <2>;
    num-serializer = <4>;
    /* 16 serializers */
    serial-dir = < /* 1 TX 2 RX 0 unused */
             2 0 0 0
        >;
    rx-num-evt = <1>;
    tx-num-evt = <1>;
};

asound.conf:

代码语言:javascript
复制
pcm.onboard{
    type hw
    card 0
}
ctl.onboard {
    type hw
    card 0
}

### Dsnoop splited channels
pcm.onboard_capture_left {
     type dsnoop
     ipc_key 32
     slave {
         pcm "onboard"
         channels 2
     rate 48000
         format S32_LE
     }
     bindings.0  0
}
pcm.onboard_playback_left {
     type dmix
     ipc_key 33
     slave {
         pcm "onboard"
         channels 2
     }
     bindings.0  0
}


pcm.onboard_capture_right {
     type dsnoop
     ipc_key 32
     slave {
         pcm "onboard"
         channels 2
     rate 48000
     format S32_LE
     }
     bindings.0  1
}
pcm.onboard_playback_right {
     type dmix
     ipc_key 33
     slave {
         pcm "onboard"
         channels 2
     }
     bindings.0  1
}


### PLUGS ##
### used with darkice
### device = plug:plug_onboard_left
pcm.plug_onboard_capture_left{
        type plug
        slave.pcm "onboard_capture_left"
}
pcm.plug_onboard_playback_left{
        type plug
        slave.pcm "onboard_playback_left"
}

pcm.!default {
    type asym
    playback.pcm "plug_onboard_playback_left"
    capture.pcm "plug_onboard_capture_left"
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-01 17:01:12

似乎您的DTS文件中可能有错误。考虑到它的I2S输入,您应该使用以下3个引脚:

代码语言:javascript
复制
#define P9_31b (0x3400 + 4 * 169)
#define P9_29b (0x3400 + 4 * 170)
#define P9_18b (0x3400 + 4 * 173)

代码语言:javascript
复制
DRA7XX_CORE_IOPAD(P9_29b, PIN_INPUT | MUX_MODE0) // 29b 0  mcasp1_fsx    FRAME SYNC           RCLK
   DRA7XX_CORE_IOPAD(P9_31b, PIN_INPUT | MUX_MODE0) // 31b 0  mcasp1_aclkx  BIT CLOCK            BCLK
   DRA7XX_CORE_IOPAD(P9_18b, PIN_INPUT | MUX_MODE0) // 18b 0  mcasp1_axr0   I2S INPUT            DATA
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70938965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档