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.

[参考译文] TLV320ADC6140:如何访问每个通道进行音频录制?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/893697/tlv320adc6140-how-do-you-access-each-of-the-channels-for-audio-recording

器件型号:TLV320ADC6140

您好!

我已将 Beagle Board 的 TLV320ADC6140器件驱动程序移植到 Pocket Beagle。 我目前使用 U-Boot 覆盖层来定义引脚多路复用和配置。 我正在使用 TLV320ADC6140 EVM 评估模块进行测试。

目前、我可以从通道1执行录制、但如果我将麦克风移至通道2-4、则不会录制音频。

我认为器件应该为每个通道加载4个子模块。 是这样吗? 或者、是否应该有多个驱动程序实例?

通过查看驱动程序代码、默认情况下、所有4个通道都是按寄存器启用的。

Debian@ARM:~$ arecord -f S32_LE -V mono -r 48000 -d 10 -c 1 --dump-HW-params /home/debian/audio_test/tes
t-mic.wav
录制波形“/home/debian/audio_test/test-mic.wav”:有符号32位小端序,速率为48000Hz,单声道
器件"默认"的硬件参数:
----------
访问:mmap_interleaved MMAP_noninterleaved MMAP_complex rw_interleaved rw_noninterleaved
格式:S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_LE U32_LE U32_BE 浮点_BE FLOAT64_LE FLOAT64_BE MU_LE U24_LE AL_REE S32_LE S32_LE S32_LE U20_LE S3BLE_U20_S3BLE_U20_U20_S3BLE_20_UBLE_20_S3BLE_20_S3BLE_20_U20_U3BLE_20_U3BLE_20_S3BLE_20_UBLE_3BLE_20_U20_S3BLE_20_UBLE_3BLE_U20_UBLE_U3BLE_20_UBLE_U
子格式:标准
SAMPLE_BITS:[4 64]
FRAME_BITS:[4 640000]
通道:[1 10000]
速率:[4000 4294967295)
PERIOD_TIME:(1333 341334)
Period_size:(5 1466018367)
period_bytes:(2 4294967295)
期间:(0 586406202)
Buffer_time:[1 4294967295]
Buffer_size:[10 2932031006]
Buffer_bytes:[5 4294967295]
tick_time:全部
----------

Debian@ARM:~$ cat /proc/asound/card0/pcm0c/sub0/info
卡:0
器件:0
子设备:0
流:捕获
ID:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec-0
名称:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec-0
子名称:子设备#0
类:0
子类:0
subdevices_count:1.
子设备_可用:1.

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

    我们还有更多的数字专家可能会提出一些其他意见、但您能否确认您已将麦克风从 CH1物理连接到 CH2-4通道?  默认情况下、它仅路由到 EVM 上的 CH1。 另一种选择是将线路输入源连接到 CH2-4端子块、以查看您是否获得任何信息。

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

    您好 Collin、

    您的意思是 EVM 仅路由到通道1?

    我已经测试了板载麦克风、它工作正常。 我已通过移除跳线14、15和16禁用板载麦克风、然后插入我自己的麦克风、这也起了作用。

    当我将麦克风的+、接地和-引脚从通道1移至 IN2、IN3或 IN4时、没有音频输出。

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

    尊敬的 Bob:

    感谢您的快速回复、这证实了我们希望验证您是否已将已知源连接到这些输入。  注释仅用于确认 EVM 仅具有连接到 CH1的麦克风、如果目标是在外部手动连接到其他输入。

    我假设是这样、但也要验证您是否已将 MICBIAS 输出连接到麦克风、以便在连接到 Ch2/3/4输入时正确为其供电。

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

    您好、再说一次、

    噢、是的、我有一个外部麦克风、它被焊接到麦克风偏置上。 我不会移除麦克风偏置、只会将+、-和接地从 IN1端子块移动到 IN2端子块。

    此外、我的 amixer 设置在所有8个数字通道上都有音量增大、而麦克风增益为100%。

    通道1的工作设置已复制到所有其他通道。

    当您执行 arecord -l 时、是否应该列出4个子设备? 我只看到1

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

    Bob、

    Linux 驱动程序可启用所有通道、只需一个实例。 但是,arecord 命令只指示一个通道。 尝试四个通道的录制命令:

    arecord -f S32_LE -V mono -r 48000 -d 10 -c 4 --dump-HW-params /home/debian/audio_test/test-mic.wav

    请注意、此处提供了最新版本的驱动程序:

    https://git.ti.com/gitweb?p=ti-analogue-linux-kernel/dmurphy-analogue.git;a=shortlog;h=refs/heads/tlv320adcx140_upstream

    此致、

     佩德罗

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

    您好、Pedro、

    我用"-c 4"作为标记以及从32到32的每个数字尝试了命令、运气不好。

    我注意到、默认情况下所有通道都启用"{ADCX140_IN_CH_EN、0xf0}"、因此我不知道为什么无法访问2-4。

    驱动程序是否应该加载4个子设备?

    此外、我无法访问这些 Bitbucket 存储库。 网站显示“找不到 IP 地址”。 您有其他链接吗? 我要用于驱动程序的链接是:

    https://git.ti.com/gitweb?p=ti-analogue-linux-kernel/dmurphy-analogue.git;a=shortlog;h=refs/heads/tlv320adcx140_upstream

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

    这是我目前为止的 DTS 副本。 一切都正常、但如果需要子器件、我看不到多个子器件。 我正在加载 U-Boot 覆盖、因此开发起来更简单、每次我想测试时都无需重新构建内核。

    /DTS-v1/;
    /plugin/;
    
    #include 
    #include 
    
    /{
    /*
    * Helper,在/proc/device-tree/chosen/overlays 下显示已加载的覆盖图
    *
    片段@0{
    target-path="/";
    _overlay__{
    
    选择{
    覆层{
    PB-I2C1-TLV320ADC6140 =__时间戳_;
    };
    };
    };
    };
    
    #if 0
    /*
    *从引脚多路复用器帮助器中释放 Cape 使用的引脚。
    *
    碎片@1{
    Target =<&OCP>;
    _overlay__{
    
    P2_34_pinmux{status ="disabled";};// SHDNz
    
    P1_29_pinmux{status ="disabled";};// McASP0_ahclkx
    P1_33_pinmux{status ="disabled";};// McASP0_FSX
    P1_36_pinmux{状态="禁用";};// McASP0_aclkx
    P2_30_pinmux{status ="disabled";};// McASP0_axr2
    P2_32_pinmux{status ="disabled";};// McASP0_axr0
    };
    };
    #endif
    
    碎片@2{
    目标=<&am33xx_pinmux>;
    _overlay__{
    
    tlv320adc6140_default:tlv320adc6140_default{
    pinctrl-single、pins =<
    //SHDNz
    AM33XX_IOPAD (0x9a4、PIN_OUTPLUP | MUX_MODE7)// McASP0_fsr.GPIO3[19] P2_34
    >;
    }
    
    pinmux_p1_29_default_pin{
    pinctrl-single、pins =<
    // McASP0_ahclkx.McASP0_ahclkx
    AM33XX_IOPAD (0x09AC、PIN_OUTPUT 下拉| INPUT_EN | MUX_MODE0)
    >;
    };
    
    pinmux_p1_33_default_pin{
    pinctrl-single、pins =<
    // McASP0_FSX.McASP0_FSX
    AM33XX_IOPAD (0x0994、PIN_OUTPUT 下拉| INPUT_EN | MUX_MODE0)
    >;
    };
    
    pinmux_p1_36_default_pin{
    pinctrl-single、pins =<
    // McASP0_aclkx.McASP0_aclkx
    AM33XX_IOPAD (0x0990、PIN_OUTPUT 下拉| INPUT_EN | MUX_MODE0)
    >;
    };
    
    //时钟启用
    pinmux_P2_28_default_pin{
    pinctrl-single、pins =<
    // McASP0_axr1.GPIO3_20
    AM33XX_IOPAD (0x09a8、PIN_OUTPUT | INPUT_EN | MUX_MODE7)
    >;
    };
    
    pinmux_P2_30_default_pin{
    pinctrl-single、pins =<
    // McASP0_ahclkr.McASP0_axr2
    AM33XX_IOPAD (0x099C、PIN_OUTPUT 下拉| INPUT_EN | MUX_MODE2)
    >;
    };
    
    //DOUT
    pinmux_P2_32_default_pin{
    pinctrl-single、pins =<
    // McASP0_axr0.McASP0_axr0
    AM33XX_IOPAD (0x998、PIN_INPUT | MUX_MODE0)
    >;
    };
    };
    };
    
    碎片@3{
    target-path="/";
    _overlay__{
    
    clk_McASP0_fixed:clk_McASP0_fixed{
    #clock-cells =<0>;
    compatible ="固定时钟";Clk_McASP0
    
    
    
    ;compatible ="固定
    时钟";Clk_McASP0 =<0>;clock-cell-cells =<GPMCLK 频率};clk_McASP0
    
    
    = clock_clock-clock_clock_clockpit =<GP0>;启用 GPO0;cl&gpit <GPO0;cl_cl_cl_clock-cl&GPT_clock-cl&GPT_cl
    
    
    听起来{
    兼容="简单音频卡";
    simple-audio-card、name ="TLV320ADCx140 Audio";
    simple-audio-card、小工具=
    "麦克风"、"麦克风插孔";
    简单音频卡,路由=
    "MIC1P"、"麦克风插孔"、
    "MIC1P"、"麦克风插孔";
    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound_master>;
    simple-audio-card、frame-master =<&sound_master>;
    
    sound_master:simple-audio-card、CPU{
    Sound-Dai =<&McASP0>;
    系统时钟方向输出;
    时钟=<&clk_McASP0>;
    };
    
    简单音频卡、编解码器{
    sound-dai =<&tlv320adc6140;
    };
    };
    };
    };
    
    碎片@4{
    目标=<&i2c1>;
    _overlay__{
    时钟频率=<100000 >;
    状态="正常";
    
    tlv320adc6140:tlv320adc6140@4c{
    status ="确定";
    #sound-di-cells =<0>;
    兼容="ti,tlv320adc6140";
    reg =<0x4c>;
    ti、mic-bias - source =<6>;
    ti、use-internal-Areg;
    
    pinctrl-names ="default";
    pinctrl-0 =<&tlv320adc6140_default>;
    };
    };
    };
    
    碎片@5{
    目标=<&McASP0>;
    _overlay__{
    #sound-di-cells =<0>;
    状态="正常";
    OP-MODE =<0>;// MCASP_IIS_MODE
    TDM-SLOTS =<2>;
    serial-dir =</* 0:非活动、1:TX、2:Rx */
    // 
    2 1 0 0
    >;
    
    tx-num-evt =<32>;
    Rx-num-evt =<32>;
    };
    };
    }; 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    Bob、

    抱歉、我发布了错误的链接、现在已更正。 它与驱动程序所在的网站相同。

    供参考、这里有一个 Beagle Bone Black 的设备树绑定示例:

    https://git.ti.com/gitweb?p=ti-analogue-linux-kernel/dmurphy-analogue.git;a=commit;h=3fc068a34a591d818467da60e06d777b8c7357a9

     此处提供的文档非常有限  

    https://git.ti.com/gitweb?p=ti-analogue-linux-kernel/dmurphy-analogue.git;a=blob;f=Documentation/devicetree/bindings/sound/tlv320adcx140.yaml;h=1433ff62b14f0264ae5278d40a612da8a82ad718;hb=47d53a01e1835c56eec2f301b93156c494f3e068

    让我与驱动程序开发人员联系、了解有关您问题的更多信息。

    此致、
    佩德罗

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

    谢谢 Pedro。 我把 dts 比 dan murphy 的 dts 大得多。 再次感谢您的帮助。

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

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

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

    Bob、

    您是否使用了 alsamixer 来确保其他信道未静音和打开?

    此致、
    佩德罗

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

    您好 Pedro

    以下是我的 amixer 设置。 我将所有数字输出音量设置为79%、而麦克风增益设置为100%。 我在该驱动程序中看不到使通道静音的选项。

    简单混频器控制'AGC 最大增益'、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:单声道
    限制:0 - 13
    单声道:7 [54%]
    简单混频器控制'AGC 阈值'、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:单声道
    限制:0 - 15
    单声道: 14 [93%]
    简单混频器控制'Analog CH1 Mic Gain'、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:单声道
    限制:0 - 42
    单声道:42 [100%][42.00dB]
    简单混频器控制'Analog CH2 Mic Gain'、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:单
    
    声道限制:0 - 42单声道:单声道限制:单声道:单声道 42 [100%][42.00dB]
    简单混频器控制'Analog CH3 Mic Gain'、0
    功能:音量已加入
    
    
    
    
    
    
    回放通道:单声道捕获通道:单声道限制:0 - 42单声道:42 [100%][42.00dB]简单混频器控制'Analog CH4 Mic Gain'、0功能:音量已加入
    单声道:单声道捕获通道:
    0 - 42
    :单声道限制:0: 42 [100%][42.00dB]
    简单混频器控制'CH1_ASI_EN'、0
    功能:Pswitch 单
    
    
    
    
    
    
    
    
    声道:单声道:回放[ON]简单混频器控制'CH1_DRE_EN'、0功能:Pswitch 单声道:回放[OFF]简单单
    声道控制'CH2_ASI_EN_EN'、0功能:PSWITCH0:单
    声道回放:单声道:单声道:回放[OFF]单声道:回放[OFF]简单混频器控制[CH2_ASI_EN_EN_ON_SI_IN_IN_CH0:回放
    控制[CH0_ pswitch pswitch 已加入
    回放通道:单
    声道:回放[关闭]
    简单混频器控制'CH3_ASI_EN'、0
    功能:pswitch 已加入
    回放通道:单声道
    :回放[开
    
    
    
    ]简单混频器控制'CH3_DRE_EN'、0功能:pswitch 已加入回放通道:单声道:回放[关]
    简单混频器控制'CH3_DRE_EN'、pswitch
    已加入回
    放通道0功能:pch4:单声道 CH4:pswitch 已加入回放
    回放[ON]
    简单混频器控制'CH4_DRE_EN'、0
    功能:pswitch pswitch 已加入
    回放通道:单
    声道:回放[OFF]
    简单混频器控制're Max GAIN'、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:
    0 - 12
    单声道限制:11 [92%]
    简单控制're 阈值'、0
    功能:
    音量已加入回放通道
    :单声道:单声道 单声道
    限制:0 - 9
    单声道:7 [78%]
    简单混频器控制'Re_enable'、0
    功能:pswitch pswitch-加入
    的回放通道:单
    声道:回放[off]
    简单混频器控制'ecimation Filter'、0
    功能:
    
    
    
    加入项:'linear Phasy'低延迟'超低延迟'项目0:'linear Phasy'简单混频器控制'enum 1音
    量输出通道:音量输出 单声道
    捕捉通道:单声
    
    道限制:0 - 255单声道:169 [66%][-15.50dB]
    简单混频器控制"数字通道2输出"、0
    功能:音量已加入
    回放通道:单声道
    
    限制:0 - 255
    单声道:201 [79%][0.50dB]
    简单混频器控制"数字通道3输出"、0
    功能:音量已加入
    回放通道:单声道
    :单声道捕获通道:单声道: 单声道
    限制:0 - 255
    单声道:201 [79%][0.50dB]
    简单混频器控制"数字通道4输出"、0
    功能:音量已加入
    回放通道:单声道
    限制
    :0 - 255
    单声道限制:201 [79%][0.50dB]
    简单混频器控制"数字通道5输出"、0
    功能:音量已加入
    回放通道:单声道
    限制:单声道:单声道捕获
    :单声道控制: 0 - 255
    单声道:201 [79%][0.50dB]
    简单混频器控制'Digital CH6 OUT'、0
    功能:音量已加入
    回放通道:单声
    道捕获通道:
    0 - 255
    单声道限制:201 [79%][0.50dB]
    简单混频器控制'Digital CH7 OUT'、0
    功能:音量已加入
    回放通道:单
    声道捕获通道:
    0 -单声道限制:0:255
    201 [79%][0.50dB]
    简单混频器控制"数字 CH8输出"、0
    功能:音量已加入
    回放通道:单声道
    捕获通道:单
    
    声道限制:0 - 255单声道:201 [79%][0.50dB]
    简单混频器控制'IN1模拟麦克风电阻器、0
    功能:枚举
    项:'2.5kOhm''10kOhm' 20 k'温度
    :0 '2.5kOhm'
    简单混频器控制'IN2模拟麦克风电阻器'、0
    功能:枚举
    项:'2.5kOhm'10kOhm'20kOhm'
    Item0:'2.5kOhm'
    简单混频器控制'in3模拟麦克风电阻器'、0
    功能:枚举
    项:'2.5kOhm''10kOhm''20kOhm'
    
    
    
    '2.5kOhm'10kOhm'20kOhm'
    温度0:'2.5kOhm'
    简单混频器控制'IC1模拟多路复用器'
    、0功能:枚举
    项:'模拟''线路输入'
    温度0:'模拟'
    简单混频器控制'IC1M 输入多路复用器'、0
    功能:'枚 举
    项:'模拟'线路输入多
    
    路复用器0
    功能
    '模拟''线路输入'数字'
    温度0:'模拟'
    简单混频器控制'IC2模拟 Mux'、0
    功能:枚举
    项:'模拟''线路输入'
    温度0:'模拟'
    简单混频器控制'MCI2M 输入 Mux'、0
    功能:枚举
    项:'模拟'线路输入'温度
    0:'模拟
    输入'
    
    模拟'数字0
    "模拟"
    简单混频器控制"IC3模拟多路复用器"、0
    功能:枚举
    项:"模拟"线路输入
    "Item0:"模拟"
    简单混频器控制"IC3M 输入多路复用器"、0
    功能:"
    模拟"线路输入"Item0
    :"模拟"
    简单混频器控制"IC3M 输入多路复用器"、0
    功能
    :"数字"线路"0功能:
    "数字" "模拟"
    简单混频器控制"IC4模拟多路复用器"、0
    功能:枚举
    项:"模拟"线路输入
    "Item0:"模拟"
    简单混频器控制"IC4M 输入多路复用器"、0
    功能:"
    模拟"线路输入"Item0
    :"模拟"
    简单混频器控制"IC4P 输入多路复
    用器"、0功能:
    
    "模拟"线路"数字"项目"0功能:"模拟" 

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

    Bob、

    这些设置看起来不错。 您是否已检查 TLV320ADC6140是否确实通过 ASI 总线将所有通道发送到 Beagle Board? 您应该能够探测 DOUT 和 FSYN 线路、并在 DOUT 上的 FSYNC 之后看到四个32位数据通道、每个 FSYNC 重复。

    此致、
    佩德罗

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

    您好、再说一次、

    我刚才探测 fsync 和 dout。

    arecord -f S32_LE -V 单声道-r 48000 -d 10 -c 1 /home/debian/audio_test/test-mic.wav

    arecord -f S32_LE -V 单声道-r 48000 -d 10 -c 4 /home/debian/audio_test/test-mic.wav

    看起来不像-c 4命令正在传递到编解码器。 两个命令输出的波形几乎相同。 黄色= FSYNC、蓝色= DOUT

    C1

    C4

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

    但是、每个通道是否应该有多个子器件才能使其正常工作?

    Debian@ARM:~$ cat /proc/asound/pcm
    00-00:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec0:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec0:捕获1

    Debian@ARM:~$ cat /proc/asound/card0/pcm0c/sub0/info
    卡:0
    器件:0
    子设备:0
    流:捕获
    ID:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec-0
    名称:Davinci-McASP/0-tlv320adcx140-codec tlv320adcx140-codec-0
    子名称:子设备#0
    类:0
    子类:0
    subdevices_count:1.
    子设备_可用:1.

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

    因此我能够使它正常工作。 我将 tdm-slot 更改为8并硬编码 ADCX140_FSYNCINV_BIT。

    结果 FSYNC 的正边沿相对于 tdm-slot 值在持续时间上增加。 但是、开箱即用的代码在负边沿上计时 DOUT、因此只有1个通道的数据值会计时输出。

    1最后一个问题。 我可以对以下行进行硬编码"iface_reg1 |= ADCX140_FSYNCINV_BIT;"、它可以正常工作、但我不想从器件树中设置它。 所有其他选项似乎都可以从器件树中设置、即"位时钟反转"或"帧反转"、但我看不到 从 DT 设置 ADCX140_FSYNCINV_BIT 的选项。

    静态 int adcx140_set_da_fmt (struct snd_soc_dai * codec_dai、
    unsigned int fmt)
    {
    struct snd_soc_component * component = codec_dai -> component;
    struct adcx140_privt * adcx140 = snd_soc_component_get_drvdata (component);
    u8 iface_reg1 = 0;
    u8 iface_reg2 ccs_slace_sbace_cfmt
    
    = 0;// set masterccs_sc_ccs_clb_m_sb_cf_mcc = snf_cr_m_case_s/sensor_cf_cl_cl_mt
    :snd_cf_cfmt ccs_cl_cl_cl_mt_sb_mt_sb_cfmt_sb_cf:cf_cf_cf_cfmt_sb_cl_cfmt_sb_cl_mt_cf_
    
    
    
    
    
    
    
    
    DEV_ERR (component->dev、"Invalid DAI master/slave interface\n");
    return -EINVAL;
    }
    
    
    printk (Kern_alert "fsync bit 3:%d\n"、fmt);
    //iface_reg1 |= ADCX140_FSYREGIN_bace_cos_b_cl_b_clase_b_clase_nf
    
    
    
    
    
    
    
    ;//
    
    
    
    
    
    
    
    DEV_ERR (component->dev、"Invalid DAI clock signal polarity (DAI 时钟信号极性无效)\n");
    return -EINVAL;
    } 

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

    哦、很抱歉我的错误。 我在 SoC/SoC-core.c 中找到了它的设置位置

    帧反转和 BCLK 会设置这些位

    /*
    *选中"[前缀]bitclock-in倒置"
    *选中"[前缀]frame-inframe"
    * SND_SOC_DAIFMT_INV_MASK 区域
    *
    snprintf (prop、sizeof (prop)、"%sbitclock-in翻转"、前缀);
    位=!!!of _get_property (np、prop、NULL);
    
    snprintf (prop、sizeof (prop)、"%s"帧反转"、前缀);
    帧=!!!of _get_property (np、prop、NULL);
    
    开关((位<< 4)+帧){
    情况0x11:
    format |= snd_SOC_DAIFMT_IB_IF;
    中断;
    情况0x10:
    format |= snd_SOC_DAIFMT_IB_NF;
    中断;
    情况0x01:
    format |= snd_SOC_DAIFMT_NB_IF;
    中断;
    默认值:
    /* snd_SOC_DAIFMT_NB_NF 为默认值*/
    中断;
    } 

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

    Bob、

    我不确定我是否理解您的解决方案或问题。

    TLV320ADx14 TDM 总线的时序接口为:

    因此、上述 adcx140_set_da_fmt 例程 执行了这些与 TLV320ADCx140的默认值相关的选项。

    • SND_SOC_DAIFMT_NB_NF ->正常位时钟和正常帧
    • SND_SOC_DAIFMT_NB_IF ->正常位时钟 和反相帧
    • SND_SOC_DAIFMT_IB_NF ->正常反相位时钟 和正常帧
    • SND_SOC_DAIFMT_IB_IF  ->正常反相位时钟 和反相帧

    您可以编辑 adcx140_set_da_fmt 例程 、根据 需要设置 ADCX140_FSYNCINV_BIT。  

    此致、

     佩德罗

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

    大家好、Pedro、

    这里有一些怪异的东西。 YAH 因此、如果我在 adcx140_set_dai fmt 中对 FSYNCINV_BIT 进行硬编码、则输出如下:(该输出正确地为4个通道中的每个通道提供 DOUT。 (黄色= BCLK、蓝色 DOUT、粉色 FSYNC)

    我在对该值进行硬编码后验证了上述 fmt = 16897。

    如果在设备树中设置了"simple-audio-card、frame-inframe;",则 fmt = 16897。 因此、您认为您不需要对该值进行硬编码、因为会设置相同的值。 但是、示波器输出如下所示:

    原始输出(无 BCLK、黄色= FSYNC、蓝色= DOUT)。  

    因此、基本上、如果我增加 TDM 时隙值以包含多个通道、而不是上面(最后一张图片)、负边沿持续时间会增加、正边沿持续时间会增加以允许 TDM 时隙。 那么、我要做的是将 DOUT 移动到正边沿。 fsyncinV_bit 似乎不是从器件树中执行该操作、但如果我硬编码、就会执行该操作。

    无论如何,我知道这一切都令人困惑,哈哈,我可能会混淆一点,但我有一个解决方案,所以我将继续生活,继续生活。 感谢您的所有帮助!