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.

[参考译文] TAS5753MD:需要有关默认立体声BTL配置的帮助

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/628894/tas5753md-need-help-with-default-stereo-btl-configuration

部件号:TAS5753MD
主题: PCM5102中讨论的其他部件

您好,

我有一个自定义TAS5753MD板,我正在尝试配置为标准立体声BTL模式,没有均衡器。  不幸的是,我没有PPC主板或评估模块, PurePath控制台3不允许在没有连接 主板/评估板的情况下生成配置文件。

源为3线I2S,16位,FS=44.1kHz,SCLK =32*FS。 我已使用逻辑分析器验证了I2S数据,并且能够使用PCM5102 DAC生成无噪声立体声音频。

PVDD在3.3V电源之后为~12V,100mSec打开。  TAS5753MD 1mSec重置脉冲打开电源,但在生成I2S数据后调用函数init_amp()。 我已禁用均衡器。

但是,我没有任何音频输出。 根据我的理解,如果没有MCLK,TAS5753MD将自动生成MCLK。 我尝试了MCLK接地和将MCLK连接到SCLK。

下面是配置后从UART控制台读回的寄存器设置。 如果您发现问题,或者有任何附加寄存器必须为立体声BTL编程,而没有耳机驱动器,我将不胜感激。

TAS:气缸组开关控制= 0F 70 80 80
TAS:串行数据接口=0x03
TAS:时钟控制= 0x6C
TAS:PWM关闭组=0x30
TAS:软静音=0x00
TAS:输入Mux =0001 77 72
TAS:PWM Mux =01 02 13 45.
TAS:卷配置=0x90
TAS:Master Vol =00 a0
TAS:Chan1体积=00 a0
TAS:Chan2体积=00 a0
TAS:Chan3体积=00 a0
TAS:错误状态=0x00


---------------------------------- 配置代码------------------------------- #define REG_CLOCK_CTRL 0x00 #define REG_DEVICE_ID 0x01 #define REG_ERROR_STATUS 0x02 #define REG_SYS_CTRL_1 0x03 #define REG_SDATA_INTERFACE 0x04 #define REG_SYS_CTRL_2 0x05 #define REG_Soft_MU_MUX06 #REG_REG_REG_REG_MAST_REG_NOM_0x19 #REG_REG_REG_NOM_0x21 #DIF_REG_NOM_0x19 #DIF_REG_NOM_REF#DIE #DIE #DIE #DIF_0x21 #DIF_0xNOM_REF_0x21 #DIE #DIF_0xNOM_REF_0x21 #DIE #DIE #REG_REG_REG_REG_REG_REG_REG_REG_NO_0x21 #REG_NO 0x50 静态void init_amp(void){uint8_t regbuf[4]; SCCB_Write (i2cSlaveAddr,REG_OSC TRIM,0x00); DELAY (500); uint8_t osctrim = SCCB_Read (i2cSlaveAddr,REG_OSC TRIM); printf ("\r\nTAS:OSC Trim = 0x%02x\r\n",osctrim); SCCB_Write(i2cSlaveAddr,REG_SDATA_interface,0x03);// I2S 16位 SCCB_ReadBytes(i2cSlaveAddr,REG_Bank_SW_CTRL,regbuf,4); //printf ("TAS:Bank Switch Control =%02x %02x %reg02x %02x\rdbuf], UINT8_t银行控制[]={REG_BANK_SW_CTRL,regbuf[0],regbuf[1],regbuf[2],regbuf[3]| 0x80}; //禁用均衡 器SCCB_WriteBytes(i2cSlaveAddr,bankswctrl,5); SCCB_ReadBytes(i2cSlaveAddr,REG_Bank_SW_CTRL, regbuf,4); printf ("TAS:Bank Switch Control =%02x %02x %02x %02x\r\n ",regbuf[0],regbuf[1],regbuf[2],regbuf[3]); UINT8_t sdic = SCCB_READ(i2cSlaveAddr,REG_SDATA_interface); printf ("TAS:串行数据接口= 0x%02x\r\n",sdic); UINT8_t CCR = SCCB_READ (i2cSlaveAddr,REG_CLOCK_CTRL); printf ("TAS:时钟控制= 0x%02x\r\n",CCR); UINT8_t pwmshdn = SCCB_READ(i2cSlaveAddr,REG_PWM_SHUTDOWN); printf ("TAS:PWM Shutdown Group = 0x%02x\r\n",pwmshdn); UINT8_t softmute = SCCB_READ(i2cSlaveAddr,REG_soft_mute; printf ("TAS:软静音= 0x%02x\r\n",软静音); SCCB_ReadBytes(i2cSlaveAddr,REG_INPUT_MUX,regbuf,4); printf ("TAS:输入Mux =%02x %02x %02x %02x\r\n",regbuf[0],regbuf[1],regbuf[3]); SCCB_ReadBytes(i2cSlaveAddr,REG_PWM_MUX,regbuf,4); printf ("TAS:PWM Mux =%02x %02x %02x %02x\r\n",regbuf[0],regbuf[1],regbuf[2],regbuf[3]); SCCB_Write(i2cSlaveAddr,REG_VOL_CFG,0x90);//从寄存器0x08,0x09 uint8_t volcfg设置AGL = SCCB_Read(i2cSlaveAddr,TAS_VOL_CFG); printf ("REG:卷配置= 0x%02x\r\n",volcfg); SCCB_Write (i2cSlaveAddr,REG_SYS_CTRL_2,0x00);//退出关机 Delay (100); uint8_t mastervol[]={REG_MASTER_VOL,0x00,0xA0}; SCCB_WriteBytes (i2cSlaveAddr,mastervol, 3); uint8_t通道1vol[]={REG_CHAN1_VOL,0x00,0xA0}; SCCB_WriteBytes (i2cSlaveAddr,通道1vol, 3); uint8_t通道2vol[]={REG_CHAN2_VOL,0x00,0xA0}; SCCB_WriteBytes (i2cSlaveAddr,通道2vol, 3); uint8_t通道3vol[]={REG_CHAN3_VOL,0x00,0xA0}; SCCB_WriteBytes (i2cSlaveAddr,通道3vol, 3); SCCB_ReadBytes (i2cSlaveAddr,REG_MASTER_VOL,regbuf,2); printf ("TAS:主卷=%02x %02x\r\n",regbuf[0],regbuf[1]); SCCB_ReadBytes(i2cSlaveAddr,REG_CHAN1_VOL,regbuf,2); printf ("TAS:Chan1 Vol =%02x %02x\r\n",regbuf[0],regbuf[1]); SCCB_ReadBytes(i2cSlaveAddr,REG_CHAN2_VOL,regbuf,2); printf ("TAS:Chan2 Vol =%02x %02x\r\n",regbuf[0],regbuf[1]); SCCB_ReadBytes(i2cSlaveAddr,REG_CHAN3_VOL,regbuf,2); printf ("TAS:Chan3 Vol =%02x %02x\r\n",regbuf[0],regbuf[1]); SCCB_Write (i2cSlaveAddr,REG_ERROR_STATUS,0x00);//清除错误 延迟(100); uint8_t错误= SCCB_Read (i2cSlaveAddr,REG_ERROR_STATUS); printf ("TAS:错误状态= 0x%02x\r\n\r\n,错误); }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Hari,Shawn可以进一步了解您的问题,但是您是否遇到了特定的时钟错误,如果是,是什么? 当采样率为44.1kHz或48kHz时,只要MCLK和SCLK的频率为64×FS,就可以将它们捆绑在一起。 如果您的客户想要将MCLK和SCLK捆绑在一起,这些时钟的频率应为3.072MHz (64×FS)。 谢谢,Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hari,您好!

    如上所述,TAS5753MD需要MCLK输入。 如果它不可用,您也可以使用SCLK。 但请注意,MCLK只能为64/128/192/256*FS,因此最低MCLK为64*FS。 在您的应用程序中,它是32*FS。 请尝试使用64*44.1kHz I2S输入吗?

    此致,

    郑少文

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

    谢谢Shawn,Jeff。  将源位clk更改为64*FS有效。

    但有一点是32*FS, 在清除错误状态寄存器并等待100ms后,我没有收到任何错误。 在读取时钟控制寄存器时, MCLK被设置为256*FS。 这是MCLK接地和MCLK连接到SCLK的情况。   所以我确信我有一些寄存器设置错误。