转自http://blog.csdn.net/bingqingsuimeng/article/details/8185628

现在主流的音频总线接口有IIS和AC97(Audio Codec)。

一。IIS是由sony和PILIPS公司共同推出的一套标准。

IIS有3--5根物理连线

IIsDI:串行数据输入

IISDO:串行数据输出

IISSCLK:为串行数据提供位时钟。IISSCLK=声道数*采样频率*采用位数。如:fs=44.1Khz   声道数位2.采样位数为16.则可以知道 IISCLK的具体数值。

IISLRCK:帧时钟,用于左右声道的切换,IISLRCK为高电平时表示正在传输的是左声道数据,为低时传输的是右声道数据,因此IISLRCK应正好与采样频率相等。(WS)

MCLK(也叫CDCLK编码解码时钟):由于IIS只是负责了数字音频信号的传输,要实现录音和放音还需要其他的芯片支持(如UDA1341),而CDCLK就能为芯片提供同步时钟信号。主要用于A/D.D/A时的采用时钟,一般为256fs或384fs

上面是IiS的总线控制器结构图

IPSR是连个5位的预分频器,其中IPSR_A用于产生II总线的主时钟,IPSR_B作用于外部音频芯片的时钟产生器。

FIFO:发送和接收缓冲区。

SCLKG:主IISCLK产生器

CHNC:通道产生器和状态机负责产生并控制IISCLK和IISLRCK.

SFTR:16位移位寄存器,主要负责对数据串并转换。

从上面可以看出设置fs的值相当重要。在2440中哟PCLK和MLLin可以提供IIS的时钟信号,我们这里选择了PCLK,经过分频之后可以得到IISCLK,IISLRCK,CDClK。(预分频A得到了IISCLK和IISLRCK,预分频B得到了CDCLK)一般A,B分频因子N是相等的。。而CDCLK=PCLK/(N+1).这里涉及到2440时钟的一些问题,还是先来回忆一下2440中的时钟结构:

1。在2440中有三种时钟。

FCLK is used by ARM920T.(If SLOW mode FCLK = input clock/divider ratio,If Normal mode (P, M & S value

FCLK =      MPLL clock (Mpll))
  HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD
 controller, the DMA and USB host block.
PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,
ADC, UART, GPIO, RTC and SPI

这里需要设置MPLLCON和IISPSR的值。假设fs=44.1Khz,CDCLK=384fs=16.9344Mhz,则N=3,MDIV=150,PDIV=5,SDIV=0,IISPSR=3<<5 | 3;

关于UDA1341:
  UDA1341支持IIS总线数据格式,采用位元流转换技术进行信号处理,具有可编程增益放大器(PGA)和数字自动增益控制器(AGC)。 UDA1341对外提供两组音频信号输入接口,每组包括左右2个声道。由于IIS总线只处理音频数据,因此UDA1341还内置用于传输控制信号的L3总 线接口。L3接口相当于混音器控制接口,可以控制输入/输出音频信号的低音及音量大小等。
  两组音频输入在UDA1341内部的处理存在很大的差别:第一组音频信号输入后巾帼一个0dB/6dB开关后采样送入数字混音器;第二组音频信号输入后先 经过可编程增益放大器(PGA),然后再进行采样,采样后的数据在经过自动增益控制器(AGC)送入数字混音器。硬件电路选用第二组输入音频信号,这样可 以通过软件的方法实现对系统输入音量大小的调节,显然,这可以用L3总线接口控制AGC来实现。

关于l3:
  uda1341可以用L3总线接口调整pga,agc,vc等,来实现mixer。要通过L3来设置pga等,则需要先写相应的地址,然后在写相应的数 据。开发板用GPIO口来与L3接口相连:
S3C2410_GPB2 L3MODE
S3C2410_GPB3 L3CLOC1341_REG_STATUS
S3C2410_GPB4 L3CLOCK
  L3地址时序:
  首先将L3MODE,L3CLOCK置1,等待一段时间,然后重复以下步骤8次(对应与8位地址):将L3CLOCK拉低,置L3DATA为高或低(对应 与数据位是1还是0),等待一段时间后,拉高L3CLOCK。当8次结束后,将L3MODE,L3CLOCK恢复到1。
图:
  L3数据时序(写):
  L3MODE,L3CLOCK初始值都为1.重复以下步骤8次:
将L3CLOCK拉低,置L3DATA为高或低 (对应与数据位是1还是0),等待一段时间后,拉高L3CLOCK。当8次结束后,将L3MODE,L3CLOCK恢复到1。
图:
  L3数据时序(读):
  还不太懂。
L3的操作在uda1341_l3_address(),uda1341_l3_data()中实 现

2440与UDA1341相连除了使用IIS接口外,还需要使用L3总线来实现对声音的控制控制,同时2440还可以通过L3总线来设置UDA1341的寄存器,但是在2440中并没有L3总线接口,我们可以使用3个IO来模拟L3总线。在mini2440上我们可以看到

uda1341原理及驱动相关推荐

  1. 通过mtd读写flash_NOR Flash读写原理及驱动

    本文主要是关于NOR Flash的相关介绍,并着重对NOR Flash读写原理及驱动进行了详尽的阐述. NOR Flash NOR Flash是现在市场上两种主要的非易失闪存技术之一.Intel于19 ...

  2. 步进电机28BYJ-48的驱动(arduino,STM32平台),最全的驱动详细原理,驱动电路分析,驱动代码解释

    步进电机28BYJ-48的驱动(arduino平台,STM32),最全的驱动详细原理,驱动电路分析,驱动代码解释 目录 步进电机28BYJ-48的驱动(arduino平台,STM32),最全的驱动详细 ...

  3. linux 内核驱动的poll,嵌入式Linux驱动开发(五)——poll机制原理以及驱动实现...

    前情回顾: 再开始今天的内容之前,先简单review一下,我们都用了什么方案来获取按键值,他们的特点都是什么.只有不断地理清了思路,我们才能够更好的理解,为何会出现如此多的解决方案,当遇到问题的时候, ...

  4. 继电器rc吸收电路取值_一文读懂继电器的工作原理以及驱动电路

    继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种"自动开关".故在电路中起 ...

  5. 继电器rc吸收电路取值_继电器的工作原理以及驱动电路解析

    继电器是具有隔离功能的自动开关元件,广泛应用于遥控.遥测.通讯.自动控制.机电一体化及电力电了设备中,是最重要的控制元件之一.继电器实际上是用较小的电流去控制较大电流的一种"自动开关&quo ...

  6. 【蓝桥杯单片机】超声波模块(测距原理,驱动方式)

    实验开发板为CT107D蓝桥官方板,编译环境为MDK5 超声波探头测距原理: 发射头发射超声波,遇到障碍物后返回,接收探头接受到返回信号. 两个动作产生的时间差可以是我们根据声音在空气中传播的速度来( ...

  7. VLP-16第一课: Velodyne的工作原理和驱动安装

    1. VLP-16简介 一排16个IR激光器与IR检测器配对, 以测量到物体的距离. 该设备牢固地安装在紧凑的耐候外壳内. 激光/检测器对阵列在其固定外壳内快速旋转以扫描周围的环境,每秒发射大约18, ...

  8. 步进电机原理与驱动方式

    (一)步进电机简介         步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  9. 直流电机的原理及驱动

    文章目录 直流电机的原理 直流电机的种类 有刷电机 无刷电机 空心杯 直流减速电机 减速器 减速电机驱动器 直流电机的原理 在了解直流电机工作原理之前,先复习一下高中几个物理知识 第一.左手定则 通电 ...

最新文章

  1. rocketmq发送第一条消息(三)
  2. CodeForces - 760E Nikita and stack
  3. Mysql主从复制详解和实战
  4. 怎么查看服务器系统内存,怎么查看服务器系统内存
  5. 详解S60 WebKit 21772编译教程
  6. Mysql——查看数据库,表占用磁盘大小
  7. oracle分布式数据库中间件,分布式数据库中间件设想
  8. [转载] 七龙珠第一部——第072话 恶魔的厕所
  9. php微信二次分享出错,解决微信二次分享bug
  10. shell sort 最后一列排序_算法实现系列(1)—— 排序算法
  11. 需求变更,产品经理的良心也会痛!
  12. ★☆★新书已经到手《Java程序员,上班那点事儿》正式销售纪念帖★☆★
  13. auto头文件 qt_C++ auto 关键字的使用
  14. 腾讯要放弃 TIM 了?
  15. 顺丰快递单号查询API接口调试demo【快递100API接口】
  16. 电脑屏幕旋转工具 躺着看才舒服。
  17. python本科毕设_关于本科毕设选题请教问题
  18. 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
  19. 追踪邮件发送者的地理位置
  20. golang匿名函数

热门文章

  1. python不同的版本有什么区别_多版本python的区别方法
  2. 甘特图是什么?有什么作用?
  3. 银行间本币市场上下行接口
  4. HTML5 video/audio监听事件属性及方法
  5. 电脑方式,电脑学习方法
  6. BOGNER博格纳正式宣布杨洋为品牌代言人
  7. 【C++学习】 设计案例1:设计立方体类
  8. Spring5框架—— AspectJ
  9. 软件推荐-国内参数优化软件:1stOpt - First Optimizationg
  10. 我的leetcode之旅--万事开头难