zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    简单记事本 V0.5
    一次对webplayer的嗅探
    引用的DLL不能调试的问题
    软件:让人越懒越好
    如何设置mysql远程访问
    ASP.NET基础培训 Cookie的正确利用
    Mysql中新建和调用存储过程
    CentOS下mysql的中文编码问题
    mysmall.ini、mymedium.ini、mylarge.ini、myhuge.ini文件的作用
    创建自定义线程池
  • 原文地址:https://www.cnblogs.com/TaigaCon/p/2807922.html
Copyright © 2011-2022 走看看