This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/TLV320AIC3106:2个输入通道,只有1个通道提供音频

Guru**** 2448270 points
Other Parts Discussed in Thread: AM4378

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/723578/linux-tlv320aic3106-2-input-channels-only-1-gives-audio

部件号:TLV320AIC3106
主题中讨论的其他部件:AM4378

工具/软件:Linux

AM4378 EVM板,附带子卡。

SDK 4.3 .0.5

子卡使用McASP0与不同的AIC3106编解码器通信。编解码器连接到麦克风,扬声器以及电话POTS线路的Rx和TX

我将第二个编解码器设置为:  

POTS Tx -> MONO_LOUT

扬声器-> LLOut

POTS Rx -> LINE2R

麦克风-> LINE1L

我在DTS文件中设置了编解码器。我在两个信道都传输信号。我只能在手机麦克风上接收音频数据。我在POTS信道上只能收到DC值和光噪声。

我不知道为什么没有发生,应该正确布线,我正在获取样品,其他通道似乎工作正常。

当我尝试通过bash执行所有操作时,我使用arecord进行录音,我只得到听筒麦克风样本。

我通过示波器验证拨号音是否进入了来自DAA的LINE2R线路。

ALSA默认为仅允许1个输入源吗? 我是否应该同时获得两个渠道? 我的音频是否可能从未连接的端口进行路由?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更多信息

    当我进行amixer时,我得到:
    简单的混音器控制'左PGA混音器线路1L',0
    功能:pswitch pswitch-joined
    回放频道:单声道
    黑白:播放[开]

    如果"Mono:Playback (单声道:回放)"意味着正在采集样本,这是正确的



    简单的混音器控制'Right PGA Mixer Line1L',0
    功能:pswitch pswitch-joined
    回放频道:单声道
    黑白:播放[OFF]
    简单混合器控制'Right PGA Mixer Line1R',0
    功能:pswitch pswitch-joined
    回放频道:单声道
    黑白:播放[开]
    简单混合器控制'Right PGA Mixer Line2R',0
    功能:pswitch pswitch-joined
    回放频道:单声道
    黑白:播放[OFF]

    看起来它是从Line1R拉出的

    即使在我的DTS文件中我有:

    simple音频卡,小工具=
    "扬声器","POTS线路输出",
    "扬声器","听筒扬声器",
    "线路","POTS线路输入",
    "麦克风","手机麦克风";
    simple-audio-card,routing=
    " POTS线路输出", "单声道输出",
    "听筒扬声器", "LLOut",
    "LINE2R", "POTS Line IN",
    "LINE1L", "手机麦克风",
    "手机麦克风", "麦克风偏置";
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想我明白了:

    /********************************************************************************
    *找到@ alsa.opensrc.org/HowTo_access_a_mixer_control
    */
    void SetInputToLine2R (void)


    const char *card ="default";
    const char * Selem_name_line1r ="右PGA混音器Line1R开关";
    const char *Selem_name_line2r =“Right PGA Mixer Line2R Switch”;
    Int错误;

    snd_hctl_t *hctl;
    ERR = snd_hctl_open(&hctl, card, 0);
    ERR = snd_hctl_load(hctl);

    snd_ctl_elem_id_t *id;
    snd_ctl_elem_id_alloca(&id);
    snd_ctl_elem_id_set_interface (id,snd_ctl_elem_iface_mixer);
    //snd_ctl_elem_id_set_id (id, 1);

    snd_ctl_elem_id_set_name (id,Selem_name_line1r);
    snd_hctl_elem_t *elem = snd_hctl_find_elem (hctl,id);

    如果(elem !=0)

    snd_ctl_elem_value_t *control;
    snd_ctl_elem_value_alloca(&control);
    snd_ctl_elem_value_set_id (control,id);

    snd_ctl_elem_value_set_integer (control,0,0);
    ERR = snd_hctl_elem_write(elem, control);

    //打开line2r
    snd_ctl_elem_id_set_name (id,Selem_name_line2r);
    elem = snd_hctl_find_elem (hctl,id);

    如果(elem !=0)

    snd_ctl_elem_value_set_integer (control,0,1);
    ERR = snd_hctl_elem_write(elem, control);
    }
    }
    snd_hctl_close(hctl);

    }