UDA1341声卡传输基本原理

uda1341连接soc的引脚分为两类:数据引脚、控制引脚。

  数据引脚用于音频码流的传输,

  控制引脚用于该声卡芯片控制,比如说音量控制等

如下图为uda1341的声卡

 

其中连接soc的引脚用红框框了出来

上面那个是数据传输引脚

下面的是控制引脚

引脚说明:

  CDCLK  :  uda1341的工作时钟

  I2SSCLK :  码流一位所用的时钟

  I2SLRCK :  码流的左右声道时钟

  I2SSDI  :  输入码流

  I2SSDO   :  输出码流

 

  L3MODE  :  模式选择,用于选择L3DATA传输的是地址还是数据

  L3CLOCK :  控制时钟

  L3DATA   :  控制数据引脚,先发送地址,再读写数据

    L3传输模式跟I2C的差不多

 

对于码流传输,这里是通过I2S协议进行传输的。

一般的soc里面也有I2S模块,关系如下:

soc内的I2S模块作为内存跟声卡芯片的中间站,

当需要发出声音信号的时候,数据从内存通过系统总线进入soc的I2S模块,I2S模块再把数据发送到UDA1341,然后通过扬声器或者耳机输出。

当需要接受声音信号的时候,数据从外界通过声音采集设备,进入UDA1341,然后I2S模块,最后通过系统总线传输到内存。

 

当然,内存与I2S模块的交互方式是DMA

在s3c2440里面,I2S与GPIO是公用引脚的,因此在使用I2S模块之前应该把GPIO设为I2S模式

 

I2S是专门的音频协议,我们可以直接通过设置soc内部的I2S控制寄存器,达到设置声卡码流传输的目的,其中包括设置声卡工作时钟,位时钟,声音信号位宽等。

声音信号的传输是左右声道的信号交替传输的

 

对于控制传输,这里暂且称为L3传输

L3传输在mini2440开发板上是通过GPIO进行数据传输的,因此使用前应该设置GPIO引脚为输入/输出

L3传输类似于I2C传输,先发送地址信号,再发送数据信号,多出来的那条信号作为时钟信号

L3MODE用于选择是发送数据还是地址,L3DATA会在L3CLOCK上升沿的时候接收数据

由于是通过GPIO传输数据的,所以L3的三个引脚需要我们自己设置,一位一位地写GPIO

 

更多信息可以参考soc跟声卡的datasheet

posted @ 2012-12-07 21:46  TaigaComplex  阅读(2878)  评论(0编辑  收藏  举报