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

stm32与tvl320aic32的i2s通信问题

你好

     我们正用tvl320aic32于我们的设备内完成通话的功能,用stm32f103的单片机控制,现在已经可以用i2c正确的写入与读取aic32的寄存器值,但是在使用i2s通讯上出现了问题,单片机i2s接口发送的数据aic32接收不到,我想知道是否改先进行哪些配置?  如何才能听到lineout播出的声音呢?

Derek Xie:

你好:

         你的单片机发出的数据是标准的I2S数据吗? 请参考以下配置。Input:DAC    – left data to LDAC and right data to RDAC    – volume control = 0dB    – Connected to outputs via mixer mode

Line Outputs (differential signals)    – Left and Right Line outputs    – Mono Line outputs (summed Left and Right channels)    – LDAC to Left Line Output and Mono Line Output    – RDAC to Right Line output and Mono Line Output    – Mixer gain = 0dB    – Line Output amplifier gain = 0dB}

Commands={w 30 07 8Aw 30 25 C0w 30 29 02w 30 2B 00w 30 52 80w 30 5C 80w 30 4B 80w 30 4E 80w 30 56 09w 30 5D 09w 30 4F 09}

还有就是Codec你提供的MCLK是多少?

xun william:

回复 Derek Xie:

我用示波器测量了下MCK频率为12Mhz,MIC始终没有采集到数据进单片机,是不是只要提供了MCK就可以使用TLV320芯片采集声音和播放声音了呢?要是不行的话我还应该做哪些事情?

Derek Xie:

回复 xun william:

你好:

            提供MCLK 给Codec只是其中一个条件,你先配置Codec让它先能采样吧。然后配置Codec为主模式(I2S时钟从AIC33输出)。

            如果你的MCLK是12M,那么需要用到内部的PLL来配置时钟到音频的采样率。

            第一步就是Codec能产生I2S所需要的时钟。

xun william:

回复 Derek Xie:

“你先配置Codec让它先能采样吧。然后配置Codec为主模式(I2S时钟从AIC33输出)。”

这些是利用配置TLV320的内部寄存器实现的么?如果是的话,该配置哪些寄存器呢?

Derek Xie:

回复 Derek Xie:

你好:

         配置方法与顺序:

         1.软件复位;(Page0, register 1)

         2. 时钟配置+采样率设置;(Page0, register 2-7)

        3. I2S format配置(page 0 register 8-10)

         4. Analog input routing(page 0 register 17-24)

         

xun william:

回复 Derek Xie:

0, // 2   Codec Sample Rate Select <- [ADC=FS][DAC=FS] 0x91, // 3 PLL A <- [PLL=ON][P=1][Q=2] 0x20, // 4 PLL B <- [J=8] 0xf0, // 5 PLL C <- [D=1920] 0x00, // 6 PLL D <- [D=1920] 0x0a, // 7 Codec Datapath Setup <- [FS=48 kHz][LeftDAC=LEFT][RightDAC=RIGHT]

0xc0, // 8 Audio Serial Data A <- [BCLK=Master][WCLK=Master][3DEffects=OFF][DigitalMIC=OFF] 0, // 9 Audio Serial Data B <- [Mode=I2S][Length=16-bit][TransferMode=Continous] 0, // 10 Audio Serial Data C <- [DataOffset=0] 0x01, // 11 Audio Codec Overflow Flag <- [pll R=1] 0, // 12 Audio Codec Digital Filter <- [OFF]

帮我看看这是我写入的值,有什么不对或者不够的地方么,还有第101,102两个寄存器的值需要设定么?  我一旦把单片机设置成slave模式他就不在提供MCK了,这时aic32能工作么?

xun william:

回复 Derek Xie:

请问你们有没有电话帮助或qq什么的方式咨询呢?

Derek Xie:

回复 xun william:

你好:

          你的MCLK跟I2S有联系吗?一共很MCLK,BCLK, LRLK。你没有弄错吧?AIC工作一定要MCLK。

           你上面的配置只是配置了I2S的数据结构和时钟,还有模拟的输出和输入路径选择和ADC,DAC的电源。

Derek Xie:

回复 Derek Xie:

MCLK = 12 MHz and Fsref = 48.0 kHzSelect P = 1, R = 1, K = 8.192, which results in J = 8, D = 1920

xun william:

回复 Derek Xie:

你好  :

        是这样的,stm32的收和发的MCLK是不同的引脚驱动的,而且在单片机在Slaver模式下面是不产生MCLK的,所以我问一下,1、是不是不管AIC32处于Master或是slaver都必须给他的MLCK脚输入时钟?  2、使用MIC接收数据时,AIC只能使用master模式吗?   谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » stm32与tvl320aic32的i2s通信问题
分享到: 更多 (0)