主题: 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,错误); }