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:如何在 NXP's iMX6u 和 Linux4.1.15上配置 TLV320ADC6140的路由?

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1256283/tlv320adc6140-how-to-config-the-route-for-tlv320adc6140-on-nxp-s-imx6u-with-linux4-1-15

器件型号:TLV320ADC6140

尊敬的所有人:

现在我们尝试在 NXP 的 iMX6u 上使用 TLV320ADC6140、操作系统是 Linux 4.1.15。

对于硬件、我们将4个振动传感器连接到 tlv320adc6140、该 MCU 具有与麦克风相同的模拟差分信号输出。 然后、tlv320将对信号进行采样、并最终使用 alsa 接口来收集数据。

对于软件、现在 tlv320adc6140的编解码器驱动程序已经按照官方的驱动程序成功地被移植、并且我还编写了一个机器驱动程序来连接平台和编解码器。 现在可以成功注册声卡。 但我仍然对连接的路由配置感到困惑。

下面是我现在的路由配置:

{"MIC1P"、NULL、"MIC0"}//将 MIC0用作我的第一个振动传感器
{"MIC1M"、NULL、"MIC0"}
{"MIC2P"、NULL、"MIC1"}
{"MIC2M"、NULL、"MIC1"}
{"MIC3P"、NULL、"MIC2"}
{"MIC3M"、NULL、"MIC2"}
{"MIC4P"、NULL、"MIC3"}
{"MIC4M"、NULL、"MIC3"}
{"Capture"、NULL、"CH1_ADC"}
{"Capture"、NULL、"CH2_ADC"}
{"Capture"、NULL、"CH3_ADC"}
{"Capture"、NULL、"CH4_ADC"}
{"CPU-捕捉"、NULL、"捕捉"}

我配置是否正确? 我缺乏这种音频体验。

如需更多信息、请告诉我。

乍得

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

    感谢您的关注、我们 将在接下来的48个工作时间内收到回复。  

    此致、

    Ore.

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

    有新消息?

    现在、我正在尝试捕获一个 wav 音频流、但是我只能测量 BCLK、完全没有数据。 你有什么想法吗?

    乍得

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

    嘿、Chad、  

    您是否正在尝试为您的应用设置输入终端? 如果是、请分享一个原理图。

    此致、  

    Ore.  

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

    您好!

    是的、这是原理图:

    关于 iepe4、它是一个转换模块、使用 Eddy_IN4和 TMP_IN4作为输入。 对于 R504、R505和 R506、不使用。 如果还不够、请告诉我。

    谢谢

    乍得

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

    嘿、Chad、  

    感谢您的反馈。 预计明天一天结束时会有回应。  

    此致、

    Ore.  

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

    嘿、Chad、

    需要注意的几点:  

    • 将 SDA 和 SCL 引脚拉至 IOVDD
    • 请注意 i2c 地址设置:                                           

    此致、

    Ore.   

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

    您好!

    感谢您的关注。 现在我的 IIC 工作正常。 我可以成功读取和写入寄存器。

    最新的更新:当我尝试使用"arecord -D HW:0、0 -f CD test.wav"进行捕获时、我可以测量 BCLK=1.41mHz、FSYNC=44.1kHz、但根本没有数据。

    你认为我应该检查什么?

    谢谢

    乍得

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

    嘿、Chad、

    在继续之前、您将使用什么来配置您的 ADC?  

    配置 ADC 的最佳方式是使用纯路径控制台3 (ppc3)、您可以在此处提出请求:  

    www.ti.com/.../PUREPATHCONSOLE

    此致、

    Ore.  

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

    您好,

    感谢您的答复。

    但我不认为 ppc3会对我有太大帮助。 现在、我正在处理嵌入式 Linux 系统。 现在我的问题是设备无法正常工作。  但 PPC3似乎是为优化声音而设计的。

    我们在 STM32上使用了 tlv320adc6140、所以只要芯片工作、我们在后续的优化中就具有相关经验。

    关于配置 ADC、我向驱动程序添加了一个接口、允许读取和写入寄存器。

    现在、我的寄存器如下所示:

    0x00=0x00
    0x01=0x00
    0x02=0x81
    0x05=0x05
    0x07=0x00
    0x08=0x00
    0x09=0x00
    0x0B=0x00
    0x0C=0x01
    0x0D=0x02
    0x0E=0x03
    0x0F=0x04
    0x10=0x05
    0x11=0x06
    0x12=0x07
    0x13=0x02
    0x14=0x48
    0x15=0x44
    0x16=0x10
    0x1f=0x40
    0x20=0x00
    0x21=0x22
    0x22=0x00
    0x23=0x00
    0x24=0x00
    0x25=0x00
    0x29=0x00
    0x2A=0x00
    0x2B=0x00
    0x2C=0x00
    0x2F=0x00
    0x32=0x00
    0x33=0xFF
    0x36=0x00
    0x3B=0x00
    0x3C=0x00
    0x3D=0x00
    0x3E=0xC9
    0x3F = 0x80
    0x40=0x00
    0x41=0x00
    0x42=0x00
    0x43=0xC9
    0x44=0x80
    0x45=0x00
    0x46=0x00
    0x47=0x00
    0x48=0xC9
    0x49=0x80
    0x4A=0x00
    0x4B=0x00
    0x4C=0x00
    0x4D=0xC9
    0x4E=0x80
    0x4F=0x00
    0x52=0xC9
    0x53=0x80
    0x54=0x00
    0x57=0xC9
    0x58=0x80
    0x59=0x00
    0x5C=0xC9
    0x5D=0x80
    0x5E = 0x00
    0x61=0xC9
    0x62=0x80
    0x63=0x00
    0x6B = 0x01
    0x6C=0x40
    0x6D=0x7B
    0x70=0xE7
    0x73=0xF0
    0x74=0xF0
    0x75=0xE0
    0x76=0xF0
    0x77=0xE0

    我检查了所有这些、看起来它们都是正常的。 所以这很奇怪。

    谢谢

    乍得

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

    感谢您发送编修。 预计在48小时内得到回复。  

    此致、

    Ore.

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

    您好!

    我取得了一些进展~

    现在我可以接收数据,但不能支持4个通道,只有3个通道。

    我发现问题可能在于时钟的数量。

    如数据表中的图所示:

    CPU 在没有空闲 BCLK 周期的情况下发送 FSYNC 和 BCLK、但我们的 TLV320ADC6140在 SDOUT 上按照标准协议时序发送数据。

    所以、您知道如何配置空闲 BCLK 周期吗? 我没有找到关于它的任何信息。

    谢谢

    乍得

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

    嘿、Chad、  

    要确认 CH4是否实际空闲、请尝试将 CH4移至插槽0。  使用此寄存器禁用 CH1-3:  

    然后使 CH4保持开启、使用此寄存器将其移至插槽0:

    让我们知道您所观察到的情况。

    此致、

    Ore.  

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

    嗨、

    感谢您的建议~

    是的、我可以获取 CH4的数据。 在它开始采样后、我写入(0x73、0x10)、(0x0E、0x00)和(0x74、0x10)、然后我得到以下波形:

    我认为这是正常的。

    谢谢

    乍得

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

    嘿、Chad、

    根据您的寄存器0x07、您的配置好像使用了16bits/ch。 您需要遵循以下公式来获取 ASI 总线的精确 bck:  

    bck= FS*#ch*bits/ch.  

    在您的情况下、您的 bck 应该是  

    BCK=44.1k * 16 * 4 = 2.83MHz 非1.4MHz。

    实施后、让我们知道4个通道是否正常工作

    此致、

    Ore.

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

    您好!

    抱歉、忘了告诉您。

    是的、回答正确。 现在我的 bck 是2.83MHz、不是1.4MHz。 起初我无法获取任何数据、因此我使用了1.4MHz 来了解单通道还是双通道可以正常工作。

    当前情况:

    寄存器:

    0x00=0x00
    0x01=0x00
    0x02=0x81
    0x05=0x05
    0x07=0x40
    0x08=0x00
    0x09=0x00
    0x0B=0x00
    0x0C=0x20
    0x0D=0x21
    0x0E=0x22
    0x0F=0x04
    0x10=0x05
    0x11=0x06
    0x12=0x07
    0x13=0x02
    0x14=0x48
    0x15=0x44
    0x16=0x10
    0x1f=0x40
    0x20=0x00
    0x21=0x22
    0x22=0x00
    0x23=0x00
    0x24=0x00
    0x25=0x00
    0x29=0x00
    0x2A=0x00
    0x2B=0x00
    0x2C=0x00
    0x2F=0x00
    0x32=0x00
    0x33=0xFF
    0x36=0x00
    0x3B=0x00
    0x3C=0x00
    0x3D=0x00
    0x3E=0xC9
    0x3F = 0x80
    0x40=0x00
    0x41=0x00
    0x42=0x00
    0x43=0xC9
    0x44=0x80
    0x45=0x00
    0x46=0x00
    0x47=0x00
    0x48=0xC9
    0x49=0x80
    0x4A=0x00
    0x4B=0x00
    0x4C=0x00
    0x4D=0xC9
    0x4E=0x80
    0x4F=0x00
    0x52=0xC9
    0x53=0x80
    0x54=0x00
    0x57=0xC9
    0x58=0x80
    0x59=0x00
    0x5C=0xC9
    0x5D=0x80
    0x5E = 0x00
    0x61=0xC9
    0x62=0x80
    0x63=0x00
    0x6B = 0x01
    0x6C=0x40
    0x6D=0x7B
    0x70=0xE7
    0x73=0xF0
    0x74=0xF0
    0x75=0xE0
    0x76=0xF0
    0x77=0xE0

    这个寄存器列表支持4个通道,我测得的波形很混乱。

    但是、如果我写入(0x74、0xE0)来禁用通道4、那么我可以获得如下所示的正确波形:

    关于仅测试通道4、正如我们之前讲过的、它也可以正常工作。

    谢谢

    乍得

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

    解释波形。 蓝色是 bck、对吗? 什么是黄色和粉红色?  

    根据寄存器0x07、您处于 I2S 模式、该模式仅支持2个通道。 使用支持多通道的 tdm 模式。  

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

    您好!

    谢谢、我知道我现在犯了一个错误。

    我见过一篇博客、在 IIS 模式下每个通道的时隙数量可以不同、并且波形可以对称、所以我错误地认为 FSYNC 是可以的。

    我将尝试使用 TDM 模式、如果存在其他问题、我现在会提出一个问题。 本次问题到此结束。

    再次感谢~

    乍得