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

    应在30/7之前回答

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

    尊敬的 Ravi:

    我对延迟回复表示歉意。  

    您能向我描述您的设置吗? 另外,您能否告诉我 有关输入音频信号的详细信息?  

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

    设置和问题声明:

    我们将 TLV320AIC3100IRHBR 用作使用  Yocto 项目开发的嵌入式 Linux 平台(imx8MQ)的音频编解码器接口(使用的内核版本为4.14.98)。  在 TI 支持团队的帮助下、我们已在 Linux 驱动程序中成功配置了 Audo 编解码器。  

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

    付款人用于播放: GST-play_1.0和 aplay  

     输入音频信号: sound.wav 文件

     请告诉我更多信息。

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

    我对您的硬件设置不是很了解。 我假设您在某处有一个到 PC 的 USB 连接、并且 wav 文件通过 USB 播放。

    你知道你制作的 wav 文件的采样率吗?

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

    e2e.ti.com/.../Audiocodec_5F00_HWDetails.pptx

    我已准备好硬件详细信息供您参考。  

    否、我们不使用 PC。 Alaram.wav 文件可在 imx8m 板中嵌入的 Linux 目录中使用、从这里 、我使用"gst-play_1.0 Alaram.wav"命令执行/播放音频文件。

    我希望能澄清连接细节和播放执行细节。

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

    Alaram.wav ->  

    比特率为176kbps

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

    是否可以测量 WCLK、BCLK 和 MCLK 的频率?

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

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

    您好、Sanjay、  

    WCLK = 20.83khz

    BCLK = 666.7khz

    MCLK =无时钟频率

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

    BCLK 对应于信号的位速率。 这将是666.7Khz。

    BCLK/WCLK 666/20.83=32

    这看起来像是采样率 为20.83Khx 的16位立体声输入。 和666.7kHz 的比特率。

    这似乎不同于 位时钟为176kbps 的源文件。

    如果你不运行 wav 文件、你仍然获得这些波形吗?

    https://www.kozco.com/tech/soundtests.html

    我从互联网上获取了大约44.1kHz、16位波形文件的链接。 是否可以尝试其中的一些 方法? 您也 可以

    检查这些文件的波形

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

    当 WCLK 为20kHz 时、它不到44.1kHz 的一半、并且该线程不指示播放命令中使用的采样率。 例如、我们应该看到:

    aplay -f S16_LE -c 2 -r 48000 --device="HW:0、1"

    其中

    -r 表示采样率。

    -f 表示字大小格式(上述命令中有符号扩展的16位小端字节序)

    c 是通道数

    假设 BCLK / WCLK = 32、您似乎使用的是具有16位数据的2个通道。

     

    Linux 通常具有测试命令、您不必担心采样率:

    扬声器测试 -c 2 -t wav -D"HW:0、1"

    扬声器测试 -c 2 -t Sine -D"HW:0、1"

     

    第一个命令为每个通道播放“Left”(左)和“Right”(右)。 正弦波只输出正弦波。

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

    是的、Sanjay、通过 Linux 命令、我们可以手动设置速度、并且可以毫无问题地播放.wav 文件。

    但是、由于这个问题、我们无法使用.wav 的正常速度或 QT 应用程序中的任何其他文件。

    在 "wm8960"中、我们没有遇到任何问题"此编解码器可用 IC 评估套件"、在我们的硬件中、我们使用 TLV、我们在这里面临问题。

    因此、任何注册表级速度设置都有助于解决此问题。 请您提供解决方案、这将非常有帮助。

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

    您好、Sanjay、

    如果你不运行 wav 文件、你仍然获得这些波形吗?

    没有时钟脉冲、它被拉高。

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

    root@b2qt-nitrogen8m:~/Test# speaker-test -c 2 -t wav -D"HW:0、0"

    扬声器测试1.1.9

    回放设备为 HW:0、0
    流参数为48000Hz、S16_LE、2个通道
    WAV 文件
    速率设置为48000Hz (请求的48000Hz)
    缓冲器大小范围为64至16384
    周期大小范围为32至8192
    使用最大缓冲器大小16384
    周期= 4
    设置 PERIOD_SIZE = 4096
    设置 buffer_size = 16384
    0 -左前
    1 -右前
    每个周期的时间= 6.175488
    0 -左前
    ^传输失败:地址错误
    root@b2qt-nitrogen8m:~ë/Test#
    root@b2qt-nitrogen8m:~/Test# speaker-test -c 2 -t sine-D"硬件:0、0"

    扬声器测试1.1.9

    回放设备为 HW:0、0
    流参数为48000Hz、S16_LE、2个通道
    正弦波速率为440.0000Hz
    速率设置为48000Hz (请求的48000Hz)
    缓冲器大小范围为64至16384
    周期大小范围为32至8192
    使用最大缓冲器大小16384
    周期= 4
    设置 PERIOD_SIZE = 4096
    设置 buffer_size = 16384
    0 -左前
    1 -右前
    每个周期的^CTime = 6.745331
    root@b2qt-nitrogen8m:~ë/Test#

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

    您好、Sanjay、

     我已经播放 了 LRMonoPhase4.wav (左、右、同相、异相测试、48K/16、 WAV 7.3MB、39秒)和 LRMonoPhase4.mp3 (相同的测试、但在 MP3中)。 使用 GST-play_1.0和 aplay 播放器。  仍然存在相同的速度问题。

    控制台日志:

    root@b2qt-nitrogen8m:~/Test# ls
    Alarm.wav LRMonoPhase4_MP3.mp3 test_splash.gif
    GraphingLogic RM_init tone.mp3
    LRMonoPhase4.wav rm_SOM_integration_wrapper
    root@b2qt-nitrogen8m:~ë/Test#

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

    这听起来像是您的问题未正确编程器件。 显然,您使用他们的 QT 应用程序读取文件,从 wav 文件的头文件中提取采样率,然后配置 AIC 来播放它。 您似乎没有使用 Linux 命令、  

     调试这个的最好方法也许是 比较寄存器转储在使用 Linux 命令播放 wav 文件和通过 QT 应用程序播放之间。  

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

    即使我使用 Linux 命令和 QT、输出也是相同的。 我将进行记录并附上。  

    寄存器转储、如 i2c 转储?

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

    您刚才提到、使用 Linux 命令、它可以正常工作。 是这样吗?

    我们可以看看 I2C 转储。

    我要提到的一点是、我们的器件设置为从器件、因此它从处理器接收 BCLK 和 WCLK。  

    如果我们从源播放44.1kHz、16位立体声的音频文件、则 WCLK 应为44.1kHz、BCLK 应为44.1kHz*32或1.411MHz。   如果芯片设置了时钟 I2C 寄存器、使其采样率为44.1Khx、则 DAC 应正确播放声音。 该寄存器设置可从 I2C 转储中确认。

    因此,如果您正在播放来自任何来源的48kHz 文件,WCLK 必须变为48kHz。 使用 Linux 命令尝试播放48kHz 文件并检查 WCLK 和 BCLK

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

    是 Sanjay、使用我尝试过的以下命令  

    "gst-launch-1.0文件 rc locity=  IEC_Tone_4.wav! 诱骗! 音频转换器! 速度=2.0! 有声! alsasink 设备=HW:0"

    因此、这将以 2倍速度设置播放、音频编码以正常速度播放、这是不可接受的。

    您提供的声音测试也以一半的速度播放、 无论我们使用什么播放器:GS-play_1.0、aplay、youtube 和 QT 应用程序。  

    请为我提供解决问题的解决方案。

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

    我建议如下:

    1.使用 aplay 播放48kHz 文件。

    2.测量 BCLK、WCLK

    3.将写入器件的 I2C 寄存器发送给我

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

    因此、这将以 2倍速度设置播放、音频编码以正常速度播放、这是不可接受的。

    您是否还可以通过此设置让我知道 BCLK 和 LRCLK?

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

    BCLK 正常、哪一行是 LRCLK?

    我是否应该按照您建议的48kHz"LRMonoPhase4.wav (左、右、同相、异相测试、48K/16、 WAV 7.3MB、39秒)"并捕获信号?

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

    控制台日志:

    root@b2qt-nitrogen8m:~ë/Test# aplay -v LRMonoPhase4.wav
    [846.822536] alloc_contig_range:[44d30、44d40) PfN 忙
    [846.829024] alloc_contig_range:[44d70、44d80) PfN 忙
    播放波'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

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

    BCLK @ 680.2khz  

    WCLK @21.19khz

    我在两个扮演 GST 的人中都扮演了角色。 此外、我已通过键盘(输入"+")在 GS-play_1.0中将速度提高到2.50、并且我观察 到 BCLK 和 WCLK 与 上图相同。 。  

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

    e2e.ti.com/.../VID_2D00_20210813_2D00_WA0002.mp4

    通过 QT 应用程序播放:


    e2e.ti.com/.../AUD_2D00_20210813_2D00_WA0003.m4a

    通过 Linux 命令播放

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

    您需要捕获 WCK

    在我看来、源时序始终是器件设置速率的一半。

    通常、器件中的 I2C 设置 设置为接收44、1Khz。源将以1/2的速率或22KZ 的速率生成时序。 我们必须更改源的时序、使其能够在21.9kHZ 但44kHZ 时生成 WCLK

    当您更改  aplay -f S16_LE -c 2 -r 48000 --device="HW:0、1"时      对于96000、您是否看到 WCLK 变为44k 或48K?

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

    此外,如果可能,您可以向我们发送写入编解码器的 i2c 转储设置吗?

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

    您好、Sanjay、

    root@b2qt-nitrogen8m:~# i2cdetect -y 3.
    0 1 2 3 4 5 6 7 8 9 A b c d e f
    00:------------ ------------ ------
    10:------------ ------ UU -------------- ----
    20:------------ ------------ ------------ --
    30:------------ ------------ ------------ --
    40:------------ ------------ ------------ --
    50:---------- -- 56 ------------ ----------
    60:------------ ------------ ------------ --
    70:------------ ------
    root@b2qt-nitrogen8m:~# i2cdump 3 0x18
    未指定大小(使用字节数据访问)
    错误:无法将地址设置为0x18:设备或资源忙
    root@b2qt-nitrogen8m:~

    您能告诉我如何停止使用 i2cset 命令吗? 由于 AM 无法转储0x18地址中的任何值、因此它显示"Resource Bus"、  

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

    您好 Rävi、

    您是否尝试以96k 的采样率使用 Linux 命令运行该文件? w 是否已接近增加至48K?

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

    您好、Sanjay、

    我下载了具有不同频率的.wav 文件、并使用96hz 至48kHz 的 gplay 和 aplay 进行了测试。 但音频速度相同。

    " ">www.mitsue.co.jp/.../high_resolution_narration.html"

    root@b2qt-nitrogen8m:~/Test# ls
    GraphingLogic RM_SOM_integration_wrapper sample06.wav sample09.wav
    LRMonoPhase4.wav sample02.wav sample07.wav test_splash.gif
    rm_init sample04.wav sample08.wav tone.mp3
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample09.wav
    [2495.03737371] alloc_contig_range:[44d30、44d40) PfN 忙
    播放波'sample09.wav':有符号16位小端字节序、速率22050 Hz、单声道
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample02.wav
    [2504.273858] alloc_contig_range:[44d30、44d40) PfN 忙
    警告:格式更改为 S24_3LE
    播放波'sample02.wav':有符号24位小端字节序,3字节,速率192000Hz,单声道
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample07.wav
    [2512.253583] alloc_contig_range:[44d30、44d40) PfN 忙
    警告:格式更改为 S24_3LE
    播放波'sample07.wav':有符号24位小端字节序,3字节,速率44100Hz,单声道
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample04.wav
    [2521.805664] alloc_contig_range:[44d30、44d40) PfN 忙
    警告:格式更改为 S24_3LE
    播放波'simple04.wav':有符号24位小端字节序,3字节,速率96000 Hz,单声道
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample08.wav
    [2539.187419] alloc_contig_range:[44d30、44d40) PfN 忙
    播放波'sample08.wav':有符号16位小端字节序、速率44100Hz、单声道
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 tone.mp3
    [2548.428796] alloc_contig_range:[44d30、44d40) PFN 忙
    播放原始数据'TONE.mp3':有符号16位小端字节序、速率为48000 Hz,立体声
    root@b2qt-nitrogen8m:~/Test# aplay -f S16_LE -c 2 -r 48000 sample4.mp3
    [3001.562027] alloc_contig_range:[44d30、44d40) PfN 忙
    播放原始数据'sample4.mp3':有符号16位小端字节序、速率48000Hz、立体声
    ^已通过信号中断中止...
    aplay:PCM_WRITE:2057:WRITE error:interrupted system call
    root@b2qt-nitrogen8m:~ë/Test#

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

    此外、我尝试通过以下链接设置 PLL 时钟-盲目  

    https://e2e.ti.com/support/audio-group/audio/f/audio-forum/650362/linux-tlv320aic3204evm-k-i2c-tlv320aic3204-evaluation-module-problem

    ################################
    #时钟设置
    编号-->
    编解码器接收到的#:MCLK = 24MHz、
    # BLCK = 1、4112MHz、WCLK = 44、1kHz
    ################################
    编号
    #选择第0页
    i2cset -y -f 2 0x18 0x00 0x00
    编号
    # MCLK 作为 PLL_INPUT;PLL_CLK 作为 CODE_CLKIN
    i2cset -y -f 2 0x18 0x04 0x03
    编号
    # P = 2;R = 1;J = 7;D = 560;PLL 被启用
    i2cset -y -f 2 0x18 0x05 0xa1
    i2cset -y -f 2 0x18 0x06 0x07
    i2cset -y -f 2 0x18 0x07 0x02
    i2cset -y -f 2 0x18 0x08 0x30
    编号
    # NDAC = 3、MDAC = 3;分频器通电
    i2cset -y -f 2 0x18 0x0B 0x83
    i2cset -y -f 2 0x18 0x0c 0x83

    #将 DAC 的 OSR 编程为128
    i2cset -y -f 2 0x18 0x0d 0x00
    i2cset -y -f 2 0x18 0x0E 0x80

    回放速度达到4.0x、我已通过使用 GST-play-1.0并在键盘中输入+键来验证。

    因此、我怀疑我们需要设置寄存器级别。 您能帮我进行设置吗? 我想、这将解决我们的 PBM 问题。

    重新分级

    Ravi V

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

    尊敬的 Ravi:

    当您将 aplay 设置更改为96kHz 时、输入信号是否与下面的设置发生了变化。 如果是,96K 时的 BCLK、WCLKP 是什么?

    IWCLK =20.83KH

    BCLK = 666.7khz

    MCLK =无时钟频率

    这些设置是编解码器的输入,编解码器寄存器设置与这些设置无关。这些设置应在输入更改时更改。

    如果您愿意、我可以尝试为您提供编解码器的寄存器设置、以便在进入编解码器的任何内容上启用操作。

    您能否向我发送当前的 WCLK、BCLK、MCLK?

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

    您好、Sanjay、  

    不存在具有散射频率的变化 aplay 设置。

    我在 I2CSet 命令中获得了良好的结果:

    #选择第0页
    i2cset -y -f 2 0x18 0x00 0x00
    # NDAC = 3、MDAC = 3;分频器通电
    i2cset -y -f 2 0x18 0x0B 0x82
    i2cset -y -f 2 0x18 0x0c 0x84

    上述设置将配置为正常回播放速度,并且工作正常。  

    但问题是、在断电和上电后、它不是稳定的。 此设置不可用、因此每次加电时间我都必须执行此设置。

    因此、请验证上述命令并向我提供如何将该值永久存储在 TLV 芯片中。

    使用此设置、捕获以下频率:56.82kHz 和1.814MHz

    现在我们有了一些线索、请提供稳定/永久的解决方案。 这将非常有用。

    此致

    Ravi V

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

    你好、Sanjay

    请您提供解决方案。

    此致

    Ravi V

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    • i2cdump-y-f 2 0x4c =>显示 I2C 总线2器件0x4c 上的所有寄存器   
    • 您能不能尝试上述操作来查看是否可以实现 I2C 转储。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上 I2C 总线为3、地址为0x18:请在下面找到 i2c 转储

    root@b2qt-nitrogen8m:~# i2cdump -f -y 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 5c 00 00 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
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    但是、我无法获取任何数据@0x4C

    root@b2qt-nitrogen8m:~# i2cdump -y -f 3 0x4c
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    10:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    20:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    30:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    40:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    50:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    60:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    70:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    80:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    90:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    A0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    B0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    C0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    D0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    E0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
    F0:XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX

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

    抱歉、0x4c 只是一个解释格式的示例

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

    明白了、谢谢

    root@b2qt-nitrogen8m:~# i2cdump -f -y 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 5c 00 00 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
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    B0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

     

    IAM 计划更新 tlv320aic31xx 设备树或 tlv320aic31xx.c 内核级别中的问候语。 因此、请帮助我 这样做。

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

    您好、Sanjay、

    请为我提供解决方案。

    此致

    Ravi V

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

    我查看了寄存器转储。

    我注意到的一件事是寄存器27。

    它写入了0x0C。 这意味着 WCLK 和 BCLK 是输出、而 TLV320AIC3100实际上充当主器件

    生成计时。  我们需要进入处理器生成 BCLK 和 WCLK 的情况、以便命令可以生成正确的时序。

    根据 DTS 设置、许多计时和驾驶人员都是自动生成的。 如果在 DTS 级别设置为 Master、则驱动程序将仅驱动时钟。

    之后、编解码器的 i2c 设置必须设置为从器件。

    请参阅文本文件。

    e2e.ti.com/.../4760.DTS.txt

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

    您好、Sanjay、

    一个小数校正、0x0c 写入寄存器17而不是27。  

    我很困惑、我必须做什么以及在哪里。 我已将.dts 文件添加到这里。 我们添加了 TI 推荐的 TLC 音频编解码器。 我还附加了 tlv320aic31xx.c 文件。

    我请您向我推荐我必须做什么以及在哪里做什么。

    此致

    Ravi  

    	sound-wm8960 {
    		compatible = "simple-audio-card";
    		simple-audio-card,name = "TI-TLV320AIC31xx-Card";
    		simple-audio-card,format = "i2s";
    		simple-audio-card,bitclock-master = <&codec_dai>;
    		simple-audio-card,frame-master = <&codec_dai>;
    		simple-audio-card,widgets =
    		"Speaker", "Speaker";
    		simple-audio-card,routing =
    		"Speaker", "SPK";
    
    		simple-audio-card,cpu {
    			sound-dai = <&sai1>;
    		};
    
    		codec_dai: simple-audio-card,codec {
    			sound-dai = <&tlv320aic31xx>;
    			system-clock-frequency = <12000000>; /* this matches sai1 */
    		};
    	};
    	
    	&i2c4 {
    	clock-frequency = <100000>;
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinctrl_i2c4>;
    	status = "okay";
    
    	tlv320aic31xx: tlv320aic31xx@18 {
                    #sound-dai-cells = <0>;
    		compatible = "ti,tlv320aic310x";
    		reg = <0x18>;
                    ai31xx-micbias-vg = <MICBIAS_2_0V>;
                    reset-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
    		HPVDD-supply = <&reg_vref_3v3>;
    		SPRVDD-supply = <&reg_vref_3v3>;
    		SPLVDD-supply = <&reg_vref_3v3>;
    		SKPVDD-supply = <&reg_vref_5v>;
    		SPKVDD-supply = <&reg_vref_5v>;
    		AVDD-supply = <&reg_vref_3v3>;
    		IOVDD-supply = <&reg_vref_3v3>;
    		DVDD-supply = <&reg_vref_1v8>;
    	};
    };
    
    
    	
    	
    	

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

    我已附上 tlv320aic31xx.c file.e2e.ti.com/.../8713.tlv320aic31xx.c

    请帮我、要执行哪些更改以及要执行哪些文件。

    此致

    Ravi V

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

    请尝试此。 这会将处理器更改为主器件、以生成 BCLK 和 WCLK       

      sound-wm8960{

                                 兼容="简单音频卡";

                                 simple-audio-card、name ="TI-TLV320AIC31xx-Card";

                                 simple-audio-card、format ="I2S";

                                  simple-audio-card、bitclock-master =<&sound0_master:>;

                                 simple-audio-card、frame-master =<&sound0_master:>;

                                 simple-audio-card、小工具=

                                 "扬声器"、"扬声器";

                                 简单音频卡,路由=

                                 "扬声器"、"SPK";

     

                   sound0_master:简单音频卡、CPU{

                                                ??Sound-Dai =<?Sa义1>;

                                                                              时钟=<&clk_sa.1????>

     

                                 };

     

                                  codec_dai:simple-audio-card、codec{

                                                sound-dai =<&tlv320aic31xx>;

                                                 

                                 };

                  };

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

    clk{(&C)
    分配的时钟=<&clk IMX8MQ_AUDIO_PLL1>、<&clk IMX8MQ_AUDIO_PLL2>;
    分配的时钟速率=<786432000>、<722534400>;
    };

    sound-wm8960{
    兼容="简单音频卡";
    simple-audio-card、name ="TI-TLV320AIC31xx-Card";
    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound0_master>;
    simple-audio-card、frame-master =<&sound0_master>;

    simple-audio-card、小工具=
    "扬声器"、"扬声器";
    简单音频卡,路由=
    "扬声器"、"SPK";

    sound0_master:简单音频卡、CPU{
    ??Sound-Dai =<?Sa义1>;
    时钟=<&clk IMX8MQ_CLK_SAI1_ROOT>;
    };

    sound0_master:simple-audio-card、codec{
    sound-dai =<&tlv320aic31xx>;
    };
    };

    我已经更新了:但同样的问题…

    ANS 也是,我参考了时钟设置的链接: community.nxp.com/.../948462

    此致

    Ravi V

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

    clk{(&C)
    分配的时钟=<&clk IMX8MQ_AUDIO_PLL1>、<&clk IMX8MQ_AUDIO_PLL2>;
    分配的时钟速率=<786432000>、<722534400>;
    };

    sound-wm8960{
    兼容="简单音频卡";
    simple-audio-card、name ="TI-TLV320AIC31xx-Card";
    simple-audio-card、format ="I2S";
    simple-audio-card、bitclock-master =<&sound0_master>;
    simple-audio-card、frame-master =<&sound0_master>;

    simple-audio-card、小工具=
    "扬声器"、"扬声器";
    简单音频卡,路由=
    "扬声器"、"SPK";

    sound0_master:简单音频卡、CPU{
    ??Sound-Dai =<?Sa义1>;
    时钟=<&clk IMX8MQ_CLK_SAI1_ROOT>;
    };

    sound0_master:simple-audio-card、codec{
    sound-dai =<&tlv320aic31xx>;
    };
    };

    我根据你的建议更新了:但同样的问题,它没有得到解决.....

    ANS 也是,我参考了时钟设置的链接: community.nxp.com/.../948462

    此致

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

    一个问题.. 通过此更改,源现在应该从 处理器端生成 LRCK,bck。 在过去、编解码器创建了时序。

    是否可以使用 Play 命令尝试运行44.1kHz 和48kHz、并查看 LRCK 和 BCK 是否显示48K 和1.53Mhz。 不要担心声音  

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

    您好、Sanjay、

    更改后、我们已检查了频率、它与上一频率相同。 它不工作。

    我尝试在    控制台窗口中设置 i2c 设置(0x0B 0x81和0x0c 0x86)、播放速度良好。 此外、我在内核启动期间的启动期间执行了命令、但它不起作用。  

    因此、我需要您的建议来在.dts 文件和 tlv320aic31xx.c 文件中设置 clk & reg 设置。 您能不能建议一个解决方案。

    此致

    Ravi V

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

    您好、Sanjay、

    您能找到一些解决方案吗?

    此致

    Ravi V

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

    您好、Sanjay、

    任何建议:

    此致

    Ravi V

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

    我只是想检查一下吗? 您是否尝试了 aplay 命令?