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.

[参考译文] TAS5828M:与 ESP32 S3集成时出现问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1469416/tas5828m-problems-integrating-with-esp32-s3

器件型号:TAS5828M
Thread 中讨论的其他器件: PCM5102A

工具与软件:

您好!

我们正在尝试 使用 ESP-IDF 的 I2S 库将 TAS5828M 与 ESP32-S3集成。 为什么不能做到这一点、有什么原因吗?

我们在使用 I2C 命令设置芯片时遇到问题。 请查看我们使用的序列。  

0x00、0x00 //更改页面

0x7F、0x00 //更改簿

0x00、0x00 //更改页面

0x01、0x11 //复位

<等待100ms >

0x01、0x00 //撤回复位

<等待100 ms >

0x03、0x18 // DSP 复位+静音+深度睡眠

<等待100 ms >

0x03、0x02 // HiZ 模式

<等待100 ms >

0x33、0x00 // I2S 格式和16位字大小

0x35、0x11 // L 和 R 通道有自己的数据

0x4C、0xFE // DIG_VOL 设置

0x54、0x1F //再次设置

0x03、0x03 //播放

ESP IDF 配置为48K 采样速率、16位字大小。 预期的 BCLK 为1.536MHz、并在示波器上对其进行验证。 48kHz 下的 LRCLK 也经过验证。

请参阅下面从 MCU 记录的寄存器。 音频通道寄存过流并在运行几秒钟后将芯片置于故障状态。 我们期望寄存器0x38的值为0x20 (十进制的32)、以便反映时钟速率、但芯片似乎检测到0x40 (十进制的64)。

E (6948) TAS5828M 寄存器0x00 0x00 0
E (6948) TAS5828M 寄存器0x01 0x00 0
E (6948) TAS5828M 寄存器0x02 0x00 0
E (6948) TAS5828M 寄存器0x03 0x03 3.
E (6958) TAS5828M 寄存器0x04 0x00 0
E (6968) TAS5828M 寄存器0x05 0x44 68
E (6968) TAS5828M 寄存器0x0F 0x00 0
E (6978) TAS5828M 寄存器0x28 0x00 0
E (6988) TAS5828M 寄存器0x29 0x7C 124
E (6988) TAS5828M 寄存器0x30 0x00 0
E (6998) TAS5828M 寄存器0x31 0x00 0
E (7008) TAS5828M 寄存器0x33 0x00 0
E (7008) TAS5828M 寄存器0x34 0x00 0
E (7018) TAS5828M 寄存器0x35 0x11 17
E (7018) TAS5828M 寄存器0x37 0x00 0
E (7028) TAS5828M 寄存器0x38 0x40 64
E (7038) TAS5828M 寄存器0x39 0x00 0
E (7038) TAS5828M 寄存器0x40 0x01 1
E (7048) TAS5828M 寄存器0x46 0x01 1.
E (7058) TAS5828M 寄存器0x4C 0xFE 254
E (7058) TAS5828M 寄存器0x4E 0x33 51
E (7068) TAS5828M 寄存器0x4F 0x30 48
E (7078) TAS5828M 寄存器0x50 0x00 0
E (7078) TAS5828M 寄存器0x51 0x55 85
E (7088) TAS5828M 寄存器0x53 0x00 0
E (7088) TAS5828M 寄存器0x54 0x1F 31.
E (7098) TAS5828M 寄存器0x5E 0x66 102
E (7108) TAS5828M 寄存器0x60 0x00 0
E (7108) TAS5828M 寄存器0x61 0x00 0
E (7118) TAS5828M 寄存器0x62 0x00 0
E (7128) TAS5828M 寄存器0x63 0x00 0
E (7128) TAS5828M 寄存器0x64 0x00 0
E (7138) TAS5828M 寄存器0x65 0x00 0
E (7148) TAS5828M 寄存器0x66 0x00 0
E (7148) TAS5828M 寄存器0x67 0x98 152
E (7158) TAS5828M 寄存器0x68 0x01 1
E (7158) TAS5828M 寄存器0x69 0x00 0
E (7168) TAS5828M 寄存器0x6A 0x00 0
E (7178) TAS5828M 寄存器0x6B 0x00 0
E (7178) TAS5828M 寄存器0x6C 0x00 0
E (7188) TAS5828M 寄存器0x6D 0xA0 160
E (7198) TAS5828M 寄存器0x6E 0x11 17
E (7198) TAS5828M 寄存器0x6f 0x24 36
E (7208) TAS5828M 寄存器0x70 0x01 1.
E (7218) TAS5828M 寄存器0x71 0x00 0
E (7218) TAS5828M 寄存器0x72 0x00 0
E (7228) TAS5828M 寄存器0x73 0x01 1.
E (7228) TAS5828M 寄存器0x74 0x00 0
E (7238) TAS5828M 寄存器0x75 0xF8 248
E (7248) TAS5828M 寄存器0x76 0x00 0
E (7248) TAS5828M 寄存器0x77 0x00 0
E (7258) TAS5828M 寄存器0x78 0x00 0

代码:

#define SAMPLE_RATE 48000

 

I2S_CHAN_CONFIG_t TX_CHAN_cfg = I2S_CHANNEL_DEFAULT_CONFIG (I2S_NUM_0、I2S_ROLE_MASTER);

esp_error_check (I2S_NEW_CHANNEL (&TX_CHAN_cfg、&TX_CHAN、NULL));

i2s_std_config_t tx_std_cfg ={

    .clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG (SAMPLE_RATE)、

    slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG (

       I2S_DATA_BIT_WIDTH_16BIT、

      I2S_SLOT_MODE_STEREO

     )、

    GPIO_cfg ={

      .MCLK = STD_MCLK_IO1、//某些编解码器可能需要 MCLK 信号、此示例不需要

      .bclk = STD_BCLK_IO1

      .ws = STD_WS_IO1

      .dout = STD_DOUT_IO1

      .DIN = STD_DIN_IO1

      .invert_FLAGS ={

        .MCLK_INV = false、

        .bclk_inv = false、

        .ws_inv = false、

      }、

    }、

  };

tx_std_cfg.clk_cfg.clk_src = I2S_CLK_SRC_PLL_160M;

tx_std_cfg.clk_cfg.MCLK_multiple = I2S_MCLK_multiple_1024;

tx_std_cfg.slot_cfg.slot_bit_width = i2s_slot_bit_width_16BIT;

   

esp_error_check (i2s_channel_init_std_mode (tx_chan、&tx_std_cfg));

esp_error_check (I2S_CHANNEL_ENABLE (TX_CHAN));

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

    您好!

    您可以在器件引脚上发送 LRCLK 和 SCLK 的示波器快照吗?

    此致、

    Ramsey

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

    感谢您的答复 Ramsey。

    请找到所附的时钟照片。

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

    请注意、由于我使用较低的时钟速率进行测试、因此将 SAMPLE_RATE 的值减小到了32KHz。 我还要连接具有48KMhz 采样率的时钟、以供您参考。

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

    您好!

    1.ca您是否尝试使用此脚本初始化放大器?

    你所使用的似乎是由你自己疯狂的。

    通过 i2c 烧录脚本之前检查的2.ca已提供 I2S 时钟。

    这与 DS 中的启动序列列表相同。

    /cfs-file/__key/communityserver-discussions-components-files/6/tas5828_5F00_stereo_5F00_initialize_5F00_script.h

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

    尊敬的 Jesse:

    感谢您的分享。 我可以确认 I2C 已启动并正在运行、因为这些日志由固件创建、并且可以向 TAS5828M 发出写入和读取命令。 写入寄存器的值会使数据正确回读。

    遗憾的是、文件中的启动顺序没有帮助。 请查看下面的寄存器值:

    寄存器 0x38显示的比率为64、但我认为对于2个16位字、它应该显示的比率为32?
    此外、寄存器 0x70继续报告过流情况。

    请提供建议。

    E (22488) TAS5828M 寄存器0x00 0x00 0
    E (22488) TAS5828M 寄存器0x01 0x00 0
    E (22488) TAS5828M 寄存器0x02 0x40 64
    E (22498) TAS5828M 寄存器0x03 0x03 3.
    E (22498) TAS5828M 寄存器0x04 0x01 1
    E (22508) TAS5828M 寄存器0x05 0x44 68
    E (22518) TAS5828M 寄存器0x0F 0x00 0
    E (22518) TAS5828M 寄存器0x28 0x00 0
    E (22528) TAS5828M 寄存器0x29 0x00 0
    E (22538) TAS5828M 寄存器0x30 0x00 0
    E (22538) TAS5828M 寄存器0x31 0x00 0
    E (22548) TAS5828M 寄存器0x33 0x00 0
    E (22558) TAS5828M 寄存器0x34 0x00 0
    E (22558) TAS5828M 寄存器0x35 0x11 17
    E (22568) TAS5828M 寄存器0x37 0x00 0
    E (22578) TAS5828M 寄存器0x38 0x40 64
    E (22578) TAS5828M 寄存器0x39 0x00 0
    E (22588) TAS5828M 寄存器0x40 0x01 1
    E (22598) TAS5828M 寄存器0x46 0x01 1
    E (22598) TAS5828M 寄存器0x4C 0x30 48
    E (22608) TAS5828M 寄存器0x4E 0x33 51
    E (22608) TAS5828M 寄存器0x4F 0x30 48
    E (22618) TAS5828M 寄存器0x50 0x00 0
    E (22628) TAS5828M 寄存器0x51 0x55 85
    E (22628) TAS5828M 寄存器0x53 0x61 97
    E (22638) TAS5828M 寄存器0x54 0x00 0
    E (22648) TAS5828M 寄存器0x5E 0x64 100
    E (22648) TAS5828M 寄存器0x60 0x07 7
    E (22658) TAS5828M 寄存器0x61 0x0D 13
    E (22668) TAS5828M 寄存器0x62 0x09 9
    E (22668) TAS5828M 寄存器0x63 0x0B 11.
    E (22678) TAS5828M 寄存器0x64 0x00 0
    E (22688) TAS5828M 寄存器0x65 0x00 0
    E (22688) TAS5828M 寄存器0x66 0x00 0
    E (22698) TAS5828M 寄存器0x67 0x98 152
    E (22708) TAS5828M 寄存器0x68 0x01 1.
    E (22708) TAS5828M 寄存器0x69 0x00 0
    E (22718) TAS5828M 寄存器0x6A 0x00 0
    E (22718) TAS5828M 寄存器0x6B 0x00 0
    E (22728) TAS5828M 寄存器0x6C 0x00 0
    E (22738) TAS5828M 寄存器0x6D 0xA0 160
    E (22738) TAS5828M 寄存器0x6E 0x11 17
    E (22748) TAS5828M 寄存器0x6f 0x24 36
    E (21078) TAS5828M 寄存器0x70 0x01 1.
    E (21078) TAS5828M 寄存器0x71 0x00 0
    E (22768) TAS5828M 寄存器0x72 0x00 0
    E (22778) TAS5828M 寄存器0x73 0x00 0
    E (22778) TAS5828M 寄存器0x74 0x00 0
    E (22788) TAS5828M 寄存器0x75 0xF8 248
    E (22798) TAS5828M 寄存器0x76 0x00 0
    E (22798) TAS5828M 寄存器0x77 0x00 0
    E (22808) TAS5828M 寄存器0x78 0x00 0

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

    您好!  

    0x70继续报告过流情况。

    ->这应该是您无法成功启动放大器的标志。

    您使用的电路板是我们的 EVM? 还是客户设计的电路板?

    如果不使用我们的 EVM、请分享您的观点。

    谢谢

    Jesse

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

    感谢您发送编修。 请参阅随附的原理图

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

    您好!

    您的电路似乎没有问题。 您能告诉我您的 pvdd 和负载电阻吗?

    此外、您能否移除电感器并检查它是否能够正常初始化?

    您是否尝试过其他芯片、这款芯片是否有任何问题?

    谢谢

    Jesse

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

    尊敬的 Jesse:

    PVDD 为12V、并且我们将驱动2个4 Ω 扬声器、额定功率为20瓦。 由于电路的设计、无法对电感器进行拆焊。 但我们在没有连接扬声器的情况下进行了测试、结果相同。 此原理图实现方案中的所有电路板都存在此问题。 作为参考、我们使用4.1A 10mH 电感器。

    请告诉我如何进一步调试。

    谢谢。

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

    你(们)好  

    在您的条件下、很难发生 OC。

    这是奇怪的。

    您是否已经观察到 I2S 信号、它在启动期间是否稳定?

    您是否有我们的 EVM 或 Audio Precision?

    您可以将 I2S 跳至我们的 EVM、看看它是否可配置。

    或者、您可以从音频精度跳转 I2S 以确保 I2S 稳定、以便查看您的电路板中的 I2S 是否有问题。

    谢谢

    Jesse

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

    尊敬的 Jesse:

    我们没有 EVM 或 Audio Precision。 我将检查我们是否可以获取其中任何一个。 我可以确认、我们还有另一个采用 PCM5102A 的电路、我们可以使用类似的电路原理图、布局和固件对其进行操作。  我不知道它是否提供了任何有关 I2S 信号完整性的信息。 I2S 信号来源于 ESP32 S3 WROOM 2模块。

    您是否感觉电感器引起了任何问题? 我们有一个生产中使用7.1安培电感器的升级电路板、用于查看这样是否能够解决此问题。  

    同时、请告诉我们是否还有 可以追求的任何其他改进或调试步骤。

    谢谢。

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

    您好!

    根据您的情况、让我总结一下我的分析。 也许我们错过了一些机会。

    1.origianlly、因为您的代码与我们从 ppc3转储的代码非常明显不同、因此我怀疑您的初始化代码有问题。 尤其是、我们不建议手动配置 I2S 设置、因为我们在 DSP 中具有自动检测功能、因此该功能有助于客户轻松使用我们的放大器。 手动更改设置总是可能会丢失某些配置。 这就是我共享另一个初始化脚本的原因。

    当您读取寄存器时、会发现在启动期间会发生 oc。

    这通常是因为您的电感器不够大、因为启动电流通常很大。 在此点、您可以查看 DS 中的"电感器选择"部分、以进行双重确认。

    但是、正如您的 sch 显示您有7.1A Isat 电感器被使用、这个规格已经足够好了、而且您的 pvdd 不是那么大、因此这似乎也是不可能的。

    3.您会发现 I2S 似乎有问题、但通常如果 I2S 时钟有问题、故障报告寄存器将报告时钟故障、您可以检查0x70-73、但 oc 除外、不会报告其他故障。 所以时钟故障似乎没有发生。

    但是,因为你的 sch 没有明显的风险让 oc 发生,所以最好检查 I2S 以再次确认将发生什么类型的故障。

    谢谢

    Jesse