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.

[参考译文] TLV320AIC3109-Q1:tlv320aic3109与 SoC 板之间的通信

Guru**** 2589300 points
Other Parts Discussed in Thread: LM324

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/947102/tlv320aic3109-q1-communication-between-tlv320aic3109-with-soc-board

器件型号:TLV320AIC3109-Q1

您好的团队,

    我们通过 i2c 将 tlv320aic3109音频编解码器与 SoC 主板(英特尔处理器)相连。 我们在 Yocto Linux 中移植了 tlv320aic31xx.c 驱动程序。   

    使用 i2c detect 命令、编解码器正在检测(0x18)。 但 MCLK 不在示波器上。

   我的 DOUT 是:-

    1) 1)需要为音频传输设置什么内容?

   2)我们可以在 tlv320驱动程序中更改什么,以便获得 MCLK?

   3) 3)如何设置 LRCLK 和 BCLK?

       

    

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

    您好、Arijeet、

    遗憾的是、我们不是 Linux 专家、因此我可能无法在这方面提供大量资源。 您能告诉我编解码器是打算用作主机器件还是目标器件来接收时钟吗?

    此致、

    Aaron

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

    您好!

      编解码器是从器件端、SoC 是主器件。 现在,我能够使用 i2cdetect 命令检测编解码器(0x18)。

      1) 1)我们如何从 SoC 端(Linux 平台)进行 i2c 初始化?

      2)正确初始化后,如何配置 I2S 以便传输音频?

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

    阿里耶特

    回答某些问题取决于 TLV320AIC3109如何与英特尔处理器连接并正确配置。 对于这些设备,您通常需要执行以下步骤来设置它们以进行录制和回放:

    1. 需要为器件分配 I2C 和 I2S/TDM 总线、并通过 DTS 配置某些接口。 驱动程序和 DTS 条目的文档位于 Linux 内核站点
      1. 例如:
      • tlv320aic31xx:tlv320aic31xx@18{
        兼容="ti,tlv320aic311x";
        reg =<0x18>;
        a31xx-micbias vg = ;
        RESET-GPIO =<&GPIO1 17 GPIO_ACTIVE_LOW>;
        HPVDD 电源=<&regulator >;
        SPRVDD 电源=<&regulator >;
        SPLVDD 电源=<&regulator >;
        AVDD 电源=<&regulator >;
        IOVdd-supply =<&regulator >;
        DVDD-supply =<&regulator >;
        }; 
    2. 通道使能、通道音量、通道输入等通过 alsamixer 进行配置。 在系统启动图形界面后运行此操作。 对于命令行界面,请使用 amixer 命令。
      • amixer controls =>列出所有控件
      • amixer contents =>列出所有控件和内容
    3. arecord、Play、和 speaker-test 命令通常启动从处理器到编解码器的时钟。 您可以通过将 arecord 传送到 aplay 命令来环回录制
      • arecord -c 2 -f S16_LE -r 48000 -d 5 --device="HW:0、1" test.wav
        • arecord–c f -r D
          • format => 样本类型。  被识别的样本格式为 S8 U8 S16_LE S16_BE U16_BE S24_LE S24_BE U24_LE U24_LE S32_LE S32_LE S32_LE U32_LE FLOAT_BE FLOAT64_LE FLOAT64_BE IEC958_LE S32_LE S32_LE LE U32_LE LE FLOAT_BE FLOAT_LE 24_LE S24_LE LM324_LE S24_LE LM3BLE_LM3BLE_LM3BLE_LM324_LE S24_LE S24_LE S24_LE S20_LE LM3BLE_LM3BLE_ADBLE_LM3BLE_LM3BLE_LM3BLE_LM3BLE_LM324_LE 24_UBLE_LM3BLE_LM3BLE_LM324_ADBLE_LM3BLE_24_
          • 持续时间=>录音的持续时间(以秒为单位)。
          • SAMPLE_RATE => 8000Hz、11025Hz、22050Hz、32000Hz、44100Hz、 48000 Hz
          • file_name =>为录制的音频指定文件名
          • 器件=>启动时映射了器件名称

      • 扬声器测试:扬声器测试-c 2 -t wav -D"硬件:0、1"
      • 环回:arecord -c 2 -f S16_LE -r 48000 | aplay -f S16_LE -c 2 -r 48000 --device="HW:0、1"

    4. 您可以通过 i2cdump 命令验证寄存器设置。
      1. 您可以使用 i2cset 设置寄存器、并使用 i2cset 命令读取它们的值
      2. 您可以确保使用 i2cdetect 命令连接设备。
        由于连接了器件、因此强制使用 i2c 命令:
        • i2cget -y -f 2 0x4c 0x11 =>强制在 器件0x4C 地址和寄存器0x11处获取 I2C 总线2
        • i2cset -y -f 2 0x4c 0x11 0x00 =>强制在 器件0x4C 地址处设置 I2C 总线2、并将寄存器0x11设置为0x00

    此致、
    佩德罗

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

    您好!

      谢谢主席先生的答复。

      但这些配置(.dts 文件)在 ARM 架构中。  但我们正在开发 x86体系结构,以便我们如何继续?

      在 x86中,DTS 文件不是 htere。 在驱动程序文件中,需要在任意位置更改?e2e.ti.com/.../tlv320aic31xx.c

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

    阿里耶特

    据我所知、器件树(DTS)存在于所有 Linux 环境中、因为它将引脚映射到器件。 但是、我不熟悉 Yocto 系统。 DTS 存储在 ARM 器件的 arch/arm/boot/dts 目录中。 您应该能够在您的架构下找到一个类似的架构(为您的处理器替换 ARM)。 否则、您需要修改驱动程序以设置必要的寄存器、并需要 Yocto 专家的指导。 遗憾的是、Yocto 不是我们的专业领域。

    此致、
    佩德罗