TI中文支持网
TI专业的中文技术问题搜集分享网站

aic3204

我想用aic3204的DSP模式,数据格式为mono,耳机的输出模式Mono Differential DAC to Mono Differential Headphone Output和Mono DAC and Analog Bypass Input to Mono Differential Headphone Output这两种模式有什么区别呢,下面是我的配置,在C5535的一个例子上改的,我将I2S配成了dsp模式,耳机有声音输出,但是用示波器看波形的时候,波形不对,我发的是一个正弦信号,走势大致正确。请问是什么原因呢,我现在不用AD,只用到了DA部分。

AIC3204_rset( 0,  0x00 );  // Select page 0
        AIC3204_rset( 1,  0x01 );  // Reset codec
        EZDSP5535_waitusec(1000);  // Wait 1ms after reset
        AIC3204_rset( 0,  0x01 );  // Select page 1
        AIC3204_rset( 1,  0x08 );  // Disable crude AVDD generation from DVDD
        AIC3204_rset( 2,  0x01 );  // Enable Analog Blocks, use LDO power
        AIC3204_rset( 123,0×05 );  // Force reference to power up in 40ms
        EZDSP5535_waitusec(50000); // Wait at least 40ms
        AIC3204_rset( 0,  0x00 );  // Select page 0

        /* PLL and Clocks config and Power Up  */
        AIC3204_rset( 27, 0x4d );  // BCLK and WCLK are set as o/p; AIC3204(Master)
        AIC3204_rset( 28, 0x01 );  // Data ofset = 0
        AIC3204_rset( 4,  0x03 );  // PLL setting: PLLCLK <- MCLK, CODEC_CLKIN <-PLL CLK
        AIC3204_rset( 6,  0x07 );  // PLL setting: J=7
        AIC3204_rset( 7,  0x06 );  // PLL setting: HI_BYTE(D=1680)
        AIC3204_rset( 8,  0x90 );  // PLL setting: LO_BYTE(D=1680)
        AIC3204_rset( 30, 0x88 );  // For 32 bit clocks per frame in Master mode ONLY
                                   // BCLK=DAC_CLK/N =(12288000/8) = 1.536MHz = 32*fs
        AIC3204_rset( 5,  0x91 );  // PLL setting: Power up PLL, P=1 and R=1
        EZDSP5535_waitusec(10000); // Wait for PLL to come up
        AIC3204_rset( 13, 0x00 );  // Hi_Byte(DOSR) for DOSR = 128 decimal or 0x0080 DAC oversamppling
        AIC3204_rset( 14, 0x80 );  // Lo_Byte(DOSR) for DOSR = 128 decimal or 0x0080
        AIC3204_rset( 20, 0x80 );  // AOSR for AOSR = 128 decimal or 0x0080 for decimation filters 1 to 6
        AIC3204_rset( 11, 0x82 );  // Power up NDAC and set NDAC value to 2
        AIC3204_rset( 12, 0x87 );  // Power up MDAC and set MDAC value to 7
        AIC3204_rset( 18, 0x87 );  // Power up NADC and set NADC value to 7
        AIC3204_rset( 19, 0x82 );  // Power up MADC and set MADC value to 2

        /* DAC ROUTING and Power Up */
        AIC3204_rset( 0,  0x01 );  // Select page 1
        //AIC3204_rset( 9, 0x30 );
        //AIC3204_rset( 10, 0x03 );      //#COMMON MODE CONTROL REGISTER Output of HP is powered by LDOIN
        //AIC3204_rset( 11, 0x10 );      //Over Current detection is enabled for HPL & HPR
        AIC3204_rset( 12, 0x08 );  // LDAC AFIR routed to HPL
        AIC3204_rset( 13, 0x10 );  // RDAC AFIR routed to HPR
        AIC3204_rset( 0,  0x00 );  // Select page 0
        AIC3204_rset( 64, 0x82 );  // Left vol=right vol
        AIC3204_rset( 65, 0x00 );  // Left DAC gain to 0dB VOL; Right tracks Left
        AIC3204_rset( 63, 0x90 );  // Power up left,right data paths and set channel
        AIC3204_rset( 0,  0x01 );  // Select page 1
        AIC3204_rset( 16, 0x3c );  // Unmute HPL , 0dB gain
        AIC3204_rset( 17, 0x3c );  // Unmute HPR , 0dB gain
        AIC3204_rset( 9 , 0x30 );  // Power up HPL,HPR
        EZDSP5535_waitusec(100 );  // Wait

希望得到帮助,谢谢!

Derek Xie:

Hi

这两种方法在配置上不太一样,其次就是Mono Differential DAC to Mono Differential Headphone Output配置完后就不能做一些混音,而Mono DAC and Analog Bypass Input to Mono Differential Headphone Output配置完后还可以做混音。

具体见下图:

还有就是看了你的配置发现你的时钟配置有点问题,下图是你们的配置的设置吗?

yi huang:

我有一问题:

外部单片机控制3254的SPI,4根连线:CS、CLK、MOSI、MISO。3254的其它管脚连线仍在EVM-K上各连线上,SW2上的USB SPI关,3254的MCLK仍由EVM板提供。

通过以下步骤写寄存器值:

CS拉低   SPI_Write(地址)   SPI_Write(数据)   CS拉高

现在问题是:发现数据写不进去,因为通过如下步骤读寄存器值:

CS拉低   SPI_Write(地址)   SPI_Read(数据)   CS拉高

读出来的是乱码。

 

请帮助判断上述过程是否有错误?

谢谢!

yi huang:

回复 yi huang:

另外,3254的SPI是CPOL=0、CPHA=1吗?也即,在CLK的下降沿捕获数据?

或设置为CPOL=0、CPHA=0,在CLK的上升沿捕获数据?

哪种对?或都可以?

Jacky Wang(QD):

回复 yi huang:

Hi Yi Huang,

外部单片机控制3254的SPI,4根连线:CS、CLK、MOSI、MISO。3254的其它管脚连线仍在EVM-K上各连线上,SW2上的USB SPI关,3254的MCLK仍由EVM板提供。

通过以下步骤写寄存器值:

CS拉低   SPI_Write(地址)   SPI_Write(数据)   CS拉高

现在问题是:发现数据写不进去,因为通过如下步骤读寄存器值:

CS拉低   SPI_Write(地址)   SPI_Read(数据)   CS拉高

读出来的是乱码。

1. 除了SPI 4根线,MCU与3254 EVM板之间是否共地?

2. 是否设置SW1选为SPI通信方式?

另外,3254的SPI是CPOL=0、CPHA=1吗?也即,在CLK的下降沿捕获数据?

或设置为CPOL=0、CPHA=0,在CLK的上升沿捕获数据?

哪种对?或都可以?

1. AIC3254默认主机(MCU)的SPI设置为CPOL=0、CPHA=1, SCLK下降沿捕获数据。CPOL=0,时钟空闲idle时候的电平是低电平,CPHA=1,下降沿采样数据。

Thanks.

yi huang:

回复 Jacky Wang(QD):

按上一贴步骤,仔细检查,SPI 读出结果仍然为乱码。

能否将外部MCU控制3254 SPI 的代码发给我看一下。

谢谢!

Jacky Wang(QD):

回复 yi huang:

Hi Yi Huang,

你用我们EVM板,使用SPI和GUI通信成功没?不好意思,我这边没有外部MCU控制3254的代码。另外能否将你的SPI通信波形捕获下来,对比我们datasheet要求的时序看看有什么不同?

Thanks.

yi huang:

回复 yi huang:

还有一问题:

外部单片机控制3254的MCLK,1根连线连到EVM-k的MCLK管脚上(当然共地),3254的其它管脚连线仍在EVM-K上各连线上,SW2上的USB MCLK关。

通过CS配置各寄存器值,这时如果SW2上的USB MCLK开,也即MCLK由TAS1020B提供,声音播放正常。这时把 SW2上的USB MCLK关,其它连线不变,这时没有任何声音。

请帮助判断上述过程是否有错误?

谢谢!

Jacky Wang(QD):

回复 yi huang:

Hi Yi Huang,

SW2上的USB MCLK关的时候,你MCU发出的MCLK是否正常?

yi huang:

回复 Jacky Wang(QD):

正常,MCLK=8M。与TAS1020B提供MCLK=12.288M,稍微有点不同,当然PLL等系数也做相应调整,保持WCLK=32k,BCLK=2M不变。谢谢!

yi huang:

回复 yi huang:

是不是这时WCLK、BCLK也需要由外部MCU提供?不能仍由TAS1020B提供。

整个过程SPI信号一直由TAS1020B提供。

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » aic3204
分享到: 更多 (0)