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.

[参考译文] TLV320AIC3100:TLV320AIC3100音频编解码器中的回放速度问题

Guru**** 2524550 points
Other Parts Discussed in Thread: TLV320AIC3100

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1022585/tlv320aic3100-playback-speed-issue-in-tlv320aic3100-audio-codec

器件型号:TLV320AIC3100

目前、我们还面临着与播放速度相关的其他问题。

 

问题说明 :  TLV320AIC31xx 的播放速度  是预期速度的一半。 我们希望它以1倍的速度运行、但播放速度以0.5倍的速度运行。

我已在 DTS 文件中将频率更改为高达时钟频率=<19200000>、但问题 尚未解决。 只有我们在 TLV320AIC31xx 音频编解码器中遇到了问题、我也尝试过 wm9860、一切都正常。

因此、我需要您的支持来解决 TLV320AIC31xx 驱动程序级别的播放设置问题。 
此致 
Ravi V
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、Sanjay、我使用了"aplay -v LRMonoPhase4.wav"。  

    但是、速度问题仍然相同。

    请查找日志

    root@b2qt-nitrogen8m:~ aplay -v LRMonoPhase4.wav
    播放波'LRMonoPhase4.wav':有符号16位小端序、速率48000Hz、立体声
    插头 PCM:速率转换 PCM (44100、sformat=S16_LE)
    转换器:线性内插
    协议版本:10002
    其设置为:
    流:播放
    访问:rw_interleaved
    格式:S16_LE
    子格式:标准
    频道:2.
    价格:48000
    精确比率:48000(48000/1)
    msbits:16.
    Buffer_size:5760
    Period_size:1920
    Period_Time:40000
    tstamp_mode:无
    tstamp_type:单调
    Period_step:1.
    AVALE_MIN:1920
    Period_event:0
    START_THRESHOLD:5760
    STOP_THRESHOLD:5760
    Silence_threshold:0
    Silence_size:0
    边界:6485183463413514240
    受控:直接流混合 PCM
    其设置为:
    流:播放
    访问:MMAP_Interleaved
    格式:S16_LE
    子格式:标准
    频道:2.
    价格:44100
    确切价格: 44100(44100/1)
    msbits:16.
    Buffer_size:5292
    Period_size:1764
    Period_Time:40000
    tstamp_mode:无
    tstamp_type:单调
    Period_step:1.
    AVAIL_MIN:1764
    Period_event:0
    START_THRESHOLD:5292
    STOP_THRESHOLD:5292
    Silence_threshold:0
    Silence_size:0
    边界:5958262307011166208
    硬件 PCM 卡0 "TI-TLV320AIC31xx-Card"器件0子器件0
    其设置为:
    流:播放
    访问:MMAP_Interleaved

    请告诉我接下来要做的更改。

    此致

    Ravi V

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

    您好、Sanjay、

    我也尝试使用 aplay 命令、但仍然看到同样的问题、

    请找到相同的日志文件。

    root@b2qt-nitrogen8m:~ aplay -v LRMonoPhase4.wav
    播放波'LRMonoPhase4.wav':有符号16位小端序、速率48000Hz、立体声
    插头 PCM:速率转换 PCM (44100、sformat=S16_LE)
    转换器:线性内插
    协议版本:10002
    其设置为:
    流:播放
    访问:rw_interleaved
    格式:S16_LE
    子格式:标准
    频道:2.
    价格:48000
    精确比率:48000(48000/1)
    msbits:16.
    Buffer_size:5760
    Period_size:1920
    Period_Time:40000
    tstamp_mode:无
    tstamp_type:单调
    Period_step:1.
    AVALE_MIN:1920
    Period_event:0
    START_THRESHOLD:5760
    STOP_THRESHOLD:5760
    Silence_threshold:0
    Silence_size:0
    边界:6485183463413514240
    受控:直接流混合 PCM
    其设置为:
    流:播放
    访问:MMAP_Interleaved
    格式:S16_LE
    子格式:标准
    频道:2.
    价格:44100
    确切价格: 44100(44100/1)
    msbits:16.
    Buffer_size:5292
    Period_size:1764
    Period_Time:40000
    tstamp_mode:无
    tstamp_type:单调
    Period_step:1.
    AVAIL_MIN:1764
    Period_event:0
    START_THRESHOLD:5292
    STOP_THRESHOLD:5292
    Silence_threshold:0
    Silence_size:0
    边界:5958262307011166208
    硬件 PCM 卡0 "TI-TLV320AIC31xx-Card"器件0子器件0
    其设置为:
    流:播放
    访问:MMAP_Interleaved
    格式:S16_LE
    子格式:标准
    频道:2.
    价格:44100
    确切价格: 44100(44100/1)
    msbits:16.
    Buffer_size:5292
    Period_size:1764
    Period_Time:40000
    tstamp_mode:启用
    tstamp_type:单调
    Period_step:1.
    AVAIL_MIN:1764
    Period_event:0
    START_THRESHOLD:1.
    STOP_THRESHOLD:5958262307011166208
    Silence_threshold:0
    Silence_size:5958262307011166208
    边界:5958262307011166208
    appl_ptr:0
    HW_PTR:0

    此致

    Ravi V

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

    您好、Sanjay、

    我已经尝试过、但仍然存在相同的问题。

    此致

    Ravi V

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

    您能否在 init 命令之后和运行后命令(i2cdump)获取寄存器转储。 然后对转储输出执行 DIFF 以查看是否有任何寄存器发生更改。 显然、寄存器未正确编程。 基本上、我们需要确定 DTS 条目或其他一些配置是否会阻止正确配置寄存器。

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

    您好、Sanjay、

      寄存器0x06、0x07、0x08、0x12、0x13几乎没有变化、 0x1E 寄存器。

    播放命令之前

    root@b2qt-nitrogen8m:~# i2cdump -y -f 3 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 01 66 00 91 04 00 00 00 81 00 80 80。。。
    10:08 00 81 80 04 00 00 01 0c 00 81 00????? ...??...
    20:00 00 00 80 10 00 00 00 00 00 00 00 00 00 00 00 00 00……?………………………………
    30:00 00 00 02 32 12 03 02 02 11 00 01 04 00 14……?2???????? ???
    40:0C 00 00 6F 38 00 00 00 00 00 00 10 D8 7e E3 ?...o8… ???~?
    50:00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00...? ?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70:00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00… ?.........
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    执行 Play 命令后

    root@b2qt-nitrogen8m:~# i2cdump -y -f 3 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 01 66 03 91 07 14 90 00 88 82 00 80。?f???????? ????
    10:08 00 88 82 80 04 00 00 01 0c 00 88 00????? ...??...
    20:00 00 00 80 98 10 00 00 00 00 00 00 00 00 00 00 00 00……………………………………………
    30:00 00 00 02 32 12 02 02 02 02 11 10 00 01 04 00 94……?2??????? ???
    40:00 00 00 00 6F 38 00 00 00 00 00 00 10 D8 7e e3... o8… ???~?
    50:00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00...? ?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70:00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00… ?.........

    请建议我必须做什么改变。

    此致、

    Ravi  

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

    我记得您在执行 init 和 Play 命令后向我发送了的寄存器转储。 但出于某种原因、我在这个线程上看不到它们。  

    很抱歉,您能重新发帖。

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

    您好、Sanjay、

      寄存器0x06、0x07、0x08、0x12、0x13几乎没有变化、 0x1E 寄存器。

    播放命令之前

    root@b2qt-nitrogen8m:~# i2cdump -y -f 3 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 01 66 00 91 04 00 00 00 81 00 80 80。。。
    10:08 00 81 80 04 00 00 01 0c 00 81 00????? ...??...
    20:00 00 00 80 10 00 00 00 00 00 00 00 00 00 00 00 00 00……?………………………………
    30:00 00 00 02 32 12 03 02 02 11 00 01 04 00 14……?2???????? ???
    40:0C 00 00 6F 38 00 00 00 00 00 00 10 D8 7e E3 ?...o8… ???~?
    50:00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00...? ?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70:00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00… ?.........
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    执行 Play 命令后

    root@b2qt-nitrogen8m:~# i2cdump -y -f 3 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:00 00 01 66 03 91 07 14 90 00 88 82 00 80。?f???????? ????
    10:08 00 88 82 80 04 00 00 01 0c 00 88 00????? ...??...
    20:00 00 00 80 98 10 00 00 00 00 00 00 00 00 00 00 00 00……………………………………………
    30:00 00 00 02 32 12 02 02 02 02 11 10 00 01 04 00 94……?2??????? ???
    40:00 00 00 00 6F 38 00 00 00 00 00 00 10 D8 7e e3... o8… ???~?
    50:00 00 80 00 00 00 00 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00...? ?。
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    70:00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00… ?.........

    请建议我必须做什么改变。

    此致、

    Ravi  

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

    您好、Sanjay、

    我希望您收到转储消息。

    请向我提供解决问题的建议。

    此致

    Ravi V

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

    您好、Sanjay、

    温和的余数,你能给我解决办法吗?

    此致

    Ravi V

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

    您好、Sanjay、

    请回复。

    此致

    Ravi V

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

    您好、Sanjay、

    我知道您很忙、能否为我提供解决方案来解决回放问题。

    此致

    Ravi V

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

    尊敬的 Ravi:

    我对延迟回复表示歉意。

    我正在尝试为您的芯片确定时序。 您是否碰巧知道施加到芯片上的 MCLK 波形的频率。 我记得你以前测量过它、但现在我在线程中看不到它

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

    您能否在应用 aplay 命令后检查此时钟是否发生变化

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

    您好、Sanjay、

    我已经测量了 MCLK 的频率,它显示在播放前后为零(aplay -v LRMonoPhase4.wav ) 命令。  

    此外、我还测量了以下 clk、值为 WCLK 为19.80KHz、BCLK 为633.3KHz。 这已经被捕获、您知道了这一点。  

    那么、请告诉我接下来做了什么修改。

    此致

    Ravi V

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

    我已经查看了命令执行前后的两个文件。 我注意到寄存器0x1B 设置器件以将 WCLK 和 BCLK 作为输出。 这是在主模式下完成的。 但要使主模式正常工作、需要

    外部时钟输入 MCLK。   

    根据您的观察结果、我发现没有外部 MCLK 进入。  

    我觉得 音频源的 I2S 连接有一些设置需要正确设置。 为了使48K 正常工作 、需要从源中生成以下任何时钟值。

    例如、6.144MHz 可能是 MCLK 的一个选项。

    请在您的电路板内查找 MCLK 产生的引脚。 这也许会帮助您找到如何在固件中进行设置

    我的经验主要集中在硬件方面、我可以帮助您解决硬件问题和编解码器 I2C 设置。 我不是 Linux 领域的专家。

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

    您好、Sanjay、

    如果我想为 MCLK 提供外部时钟、这意味着我必须做什么更改。

    以及为解决该问题、我应给 MCLK 提供多少频率。

    此外、您能否检查原理图并告诉我是否有任何更正?

    请做不必要的事。

    此致

    Ravi V

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

    您可以在从模式下设置器件。 在这里、我们从 I2S 源提供 BCLK、LRCLK 和 Din。

    音频源可以是48kHz、16位 I2S 音频。 源应给出48kHz 的 LRCLK 和 buck=48k*32=1.53MHZ。

    应使用 CRO 进行检查。

    您可以在 I2C 上加载以下脚本。 器件地址为0x30。

    声音应该出现在 D 类输出上。

    请告诉我它是否起作用。

    e2e.ti.com/.../AUDIO_5F00_CODE.txt

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

    您好、Sanjay、  

    我有一些更新:我获得的音频.wav 文件更好、但不准确。

    我已经根据 上述 PLL 示例更新了这些值 、并使用0x0B 和0x0c 优化值

    从内核级别、我能够设置0x0B = 1和0x0c = 8寄存器值。 此外、在播放 BCLK=1.28MHz、WCLK=40KHz、MCLK:nA 期间、我将获得以下频率
    /* 44.1k 速率*/
    {12000000、44100、7、0560、128、 1、8、128、8、2}、
    {12000000、44100、8、0560、128、 1、8、128、6、3}、
    {12500000、44100、7、2253、128、 8、2、128、8、2}、
    /* 48K 速率*/
    {12000000、48000、8、1680、128、 1、8、128、8、2}、
    {12000000、48000、7、1680、96、 1、8、96、5、4}、
    {12500000、48000、7、8643、128、 8、2、128、8、2}、

    问题是如何确认这是标准的1x 速度?

    注:

    我们可以通过 i2cset 命令执行上述脚本、而不是从脚本执行。

    请帮我更新 tlv320aic31xx.c 中的设置、可以进行更新。

    此致

    Ravi V  

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

    您好、Sanjay、

    基于上述0x0B 和0x0c 设置、仍然观察到0.10x 速度差值。 但是,我无法调整0.10x 的比率,我不知道 谁会阻止这一问题。

    可以帮我解决这个问题吗?

    Regads

    Ravi V

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

    我发送的 I2C 设置 是为了将器件配置为具有48kHz 输入的从模式。  

    LRCK 和 BCK 是编解码器芯片的输入,我们可以 将设置保留在芯片中,就像我发送的一样。 PLL 应正确设置为48kHz

    这意味着音频源(正在获取48K 文件并生成数据的音频处理器)应设置为组成48K 的 LRCLK 和1.53MHz 的 BCLK。

    您必须找到用于调节进入编解码器芯片的 LRCK 和 BCK 频率的代码。 一旦将其设置为48kHz 和1.53Mhz、声音就会很好。

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

    我尝试通过 i2cset 设置所有寄存器、  

    但不幸的是,它没有发挥任何作用。

    请找到 相同的 i2cdump 屏幕截图(它包含第0页和第1页)

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

    这有2个方面。

    1、设置编码为我发送的 I2C 代码的寄存器。

    2.提供与48K 相对应的正确输入时序,以便 LRCLK=48K 和 BCLK=48K*32被馈入芯片。 您需要在源(而不是编解码器)中找到可以执行此操作的设置。