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.

[参考译文] TAS5720M:TAS5720M Saif 时钟错误、始终保持高 FAULTZ

Guru**** 2432630 points
Other Parts Discussed in Thread: TAS5720M

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1385819/tas5720m-tas5720m-saif-clock-error-with-high-faultz-all-time

器件型号:TAS5720M

工具与软件:

我正在尝试将 ESP32与 I2S 配合使用、以在8 Ω 扬声器上生成音调。 工作条件:

  • Saif: I²S
  • 16位数据、I2S_SLOT_BIT_WIDTH_32位
  • RCLK = 48kHz
  • BCLK = 3.072 MHz
  • MCLK=BCLK

但我无法获得任何音频、并且故障寄存器始终返回位3有效。 FAULTZ 引脚始终为高电平。 不过、我在数据表中没有找到任何有用的内容。 是否有人知道会发生什么情况? 这是 I2S 配置。

#define I2S_STD_MSB_SLOT_TAS_CONFIG (BITS_PER_SAMPLE、MONOL_OR_STEREO)\
  {                                 \
    .data_bit_width = bits_per_sample              \
    SLOT_BIT_WIDTH = I2S_SLOT_BIT_WIDTH_32位、          \
    .SLOT_MODE = MONONA_OR_STEREO、                 \
    SLOT_MASK = I2S_STD_SLOT_BOTH、                \
    .ws_width = bits_per_sample * 2、               \
    .ws_pol = false、                       \
    .bit_shift = false、                      \
    .left_align = true、                      \
    .big_endian = false、                     \
    .bit_order_lsb = false                    \
  }
和配置 tas5720 i2c  
  TAS5720_init (&TASI2C_NUM_0I2C_DEVICE_ADDRTRUE);
  TAS5720_MUTE (&TAStrue);
  TAS5720_setSerialAudioInterfaceFormat (&TASSAI_I2S);
  TAS5720_setChannelSelection (&TAS右侧);
  TAS5720_setAnalogGain (&TASGAIN_25_DBV);
  TAS5720_setDigitalBoost (&TAS、DIGITAL_BOOST_6dB);
  TAS5720_setVolume (&TAS255,255);
  TAS5720_MUTE (&TASfalse);

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

    嗨、airton、

    看起来您共享的代码特定于您正在使用的驱动程序。 请读回数据表中表9" I2C 寄存器映射摘要"中所示的寄存器。 这将帮助我们调试您的设置。 谢谢。

    此致、

    Sam

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

    从表9中读取的 ADDR 为8、而变为高电平的位为3 (CLKE)。

    我使用的库如下所示: github.com/.../TAS5720-Arduino

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

    表9中的所有寄存器都使用变量 uint8_t 进行读取

    I (10579) TAS5720:从寄存器0x00读取数据0x01
    E (10579)标签信息:地址0:1
    I (10589) TAS5720:从寄存器0x01读取数据0xFC
    E (10589)标签信息:地址1:252
    I (10599) TAS5720:从寄存器0x02读取数据0x14
    E (10599)标签信息:地址2:20
    I (10609) TAS5720:从寄存器0x03读取数据0x80
    E (10609)标签信息:地址3:128
    I (10619) TAS5720:从寄存器0x04读取数据0xFF
    E (10619)标签信息:地址4:255
    I (10629) TAS5720:从寄存器0x06读取数据0x59
    E (10629)标签信息:地址6:89
    I (10639) TAS5720:从寄存器0x08读取数据0x08
    E (10639)标签信息:地址8:8
    I (10649) TAS5720:从寄存器0x10读取数据0xFF
    E (10649)标签信息:地址10:255
    I (10659) TAS5720:从寄存器0x11读取数据0xFC
    E (10659)标签信息:地址11:252

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

    嗨、airton、

    1.根据表12 ,您正在进入关机模式,这是您想要的吗?

    2.根据表14、您目前正在将位4设置为1。 如果您对此寄存器进行写入、则应将其设置为0。 谢谢。

    此致、

    Sam

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

    我进行了一些更改并获得了以下结果:

    I (10392) TAS5720:从寄存器0x00读取数据0x01
    E (10392)标签信息:地址0:1
    I (10402) TAS5720:从寄存器0x01读取数据0x00
    E (10402)标签信息:地址1:0
    I (10412) TAS5720:从寄存器0x02读取数据0x04
    E (10412)标签信息:地址2:4
    I (10422) TAS5720:从寄存器0x03读取数据0x80
    E (10422)标签信息:地址3:128
    I (10432) TAS5720:从寄存器0x04读取数据0xCF
    E (10432)标签信息:地址4:207
    I (10442) TAS5720:从寄存器0x06读取数据0x55
    E (10442)标签信息:地址6:85
    I (10452) TAS5720:从寄存器0x08读取数据0x08
    E (10452)标签信息:地址8:8
    I (10462) TAS5720:从寄存器0x10读取数据0xFF
    E (10462)标签信息:地址10:255
    I (10472) TAS5720:从寄存器0x11读取数据0xFC
    E (10472)标签信息:地址11:252

    我将关断位设置为 true、系统本身自动进入关断模式

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

    嗨、airton、

    我相信我们有一个错误的沟通。 为什么使用数据0x00设置寄存器0x01?  请尝试将其设置为0xFD。

    此致、

    Sam

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

    您好、Sam、  

    我没有更改该寄存器;它自己变为零。 我向其写入了值0xFD。 但是、错误仍然存在。 这些寄存器如下:

    I (10369) TAS5720:从寄存器0x00读取数据0x01
    E (10369)标签信息:地址0:1
    I (10379) TAS5720:从寄存器0x01读取数据0xFD
    E (10379)标签信息:地址1:253
    I (10389) TAS5720:从寄存器0x02读取数据0x04
    E (10389)标签信息:地址2:4
    I (10399) TAS5720:从寄存器0x03读取数据0x80
    E (10399)标签信息:地址3:128
    I (10409) TAS5720:从寄存器0x04读取数据0xCF
    E (10409)标签信息:地址4:207
    I (10419) TAS5720:从寄存器0x06读取数据0x55
    E (10419)标签信息:地址6:85
    I (10429) TAS5720:从寄存器0x08读取数据0x08
    E (10429)标签信息:地址8:8
    I (10439) TAS5720:从寄存器0x10读取数据0xFF
    E (10439)标签信息:地址10:255
    I (10449) TAS5720:从寄存器0x11读取数据0xFC
    E (10449)标签信息:地址11:252

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

    嗨、airton、  

    1. MCLK 可以直接连接到 BCLK、能否仔细检查 BCLK 与 RCLK 的比率是否始终为64、LRCLK 是否始终为48kHz?

    2.请检查/FAULTZ 引脚是否有连接到 DVDD 引脚的上拉电阻。

    3. /FAULTZ 引脚是否会被拉低? 如果发生 Saif 时钟错误、TAS5720M 将进入睡眠模式、且/FAULTZ 引脚变为低电平。  在 Saif 时钟错误期间、FAULTZ 引脚将被置为低电平、而 CLKE 位将被置为高电平(寄存器0x08位3)。  

    此致、

    Sam

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

    您好、Sam、  

    1. R: MCK 和 BCLK 连接在一起、并且始终具有精确的64比率。

    2. R:是的、FAULTZ 引脚有一个上拉电阻器连接到具有100k 电阻器的 DVDD 引脚。

    3. R:FAULTZ 引脚在任何时候都不会变为低电平。 它始终保持高电平。

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

    嗨、airton、

    我将做一些进一步的研究,并尽快回到你。 同时、您能否尝试将 FAULTZ 引脚上的上拉电阻替换为10k、并告诉我发生了哪些变化。 另外、请转交原理图。 谢谢。

    此致、

    Sam

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

    我将进行更改并返回结果。 这是 TAS5720的原理图。

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

    嗨、airton、

    听起来不错。 目前、在原理图中、我没有在 FAULTZ 引脚上看到上拉电阻器。 ALM_V 电源的值是多少? 您是否通过写入 PWM_RATE 位(位6-4、寄存器0x06)来设置 PWM 频率?

    此致、

    Sam

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

    我忘记了在原理图中添加上拉电阻器、但稍后在电路板上实现了该上拉电阻器。 目前、我使用12V 作为电源电压。 PWM 速率设置为16 × LRCLK。

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

    嗨、airton、

    请尝试通过2.5k 电阻将 SCL 和 SDA 拉高至3.3V。 谢谢。

    此致、

    Sam

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

    目前已经有一个使用560欧姆电阻器的5V i2c 上拉。 I2C 与其他器件共享

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

    嗨、airton、  

    我们建议使用2.4k 至3.3V 的 I2C 上拉电阻。 您为什么选择 VDD 为5V 并使用560欧姆的电阻器? 谢谢。

    此致、

    Sam

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

    我使用5V、因为其他器件在此电压范围内工作、并且560欧姆产生高电流。 我将其调整到4.7K 欧姆、然后查看是否有任何变化。

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

    嗨、airton、

    请尝试调整 I2C 和 FAULTZ 上拉电阻、让我知道您看到了什么。 谢谢。

    此致、

    Sam

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

    进行了如下更改:3.3V、I2C 上拉电阻为2.7k Ω、faultz 引脚上拉电阻为10k Ω。 FAULTZ 引脚始终保持高电平。

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

    嗨、airton、

    您可以发送时钟波形和 PWM 信号的示波器快照吗? 如果您有 TAS5720MEVM、您可以尝试将 I2S 信号馈送到 EVM (将 MCLK 和 BCLK 短接在一起)并报告 FAULT 引脚的状态。

    您在问题中共享的代码格式不正确。 请以清晰可辨的 I2S 和 I2C 格式提供更新的代码、以便我们对其进行调试。 谢谢。

    谢谢你。

    此致、

    Sam

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

    lib usede2e.ti.com/.../CMakeLists.txte2e.ti.com/.../TAS5720.he2e.ti.com/.../TAS5720.c

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

    以下是带有 ESP32-S3的 ESP-IDF 扩展的 VS Code 的完整项目:e2e.ti.com/.../teste_5F00_i2s_5F00_std-_2800_2_2900_.zip

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

    嗨、airton、

    LRCLK 和 BCLK 是否来自同一个源? 否则、这可能是同步问题、我们必须检查时序要求。 为什么 PWM 频率为1.56MHz 而不是768kHz。 谢谢。

    此致、

    Sam

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

    LRCLK 和 BCLK 来自同一个源、二者均来自 ESP32-S3和 DOUT。 在 PWM 图像中、顶部显示的频率为353kHz、这就是我观察到的频率。

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

    我已经使用另一个模块 MAX98357测试了该 I2S 系统、它工作100%、产生1kHz 音调。

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

    在此原理图中、SDZ 引脚保持悬空。 不建议这样做。 SDZ 引脚的状态是怎样的? SDZ 引脚应由您的系统控制。 如果将该引脚拉至低电平、器件将处于非活动状态。 尝试将此引脚拉高、然后让我知道您看到了什么。 您也可以尝试切换此引脚。 谢谢。

    此致、

    Sam

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

    您好、Sam、

    我将 SDZ 连接到 faultz 上拉、此时仍然获得相同的结果。 要切换、我需要重做原理图。

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

    嗨、airton、

    请勿将 SDZ 引脚连接到 FAULTZ 引脚。 请将 SDZ 引脚单独拉至高电平以开启放大器。 在第三个示波器屏幕截图中、PWM 开关频率正在变化、因此您必须有某种音频输出。 请尝试应用不同的输入、不应用任何输入、然后记录您在输出中看到的内容。 这是为了查看输入信号是否根本改变 PWM 频率、如果没有输入、信号应该处于空闲状态。 我们建议您购买我们的 EVM、因为我们无法调试您的代码、因为代码是特定于您的应用的。 谢谢。

    此致、

    Sam