当前位置:首页 > 单片机 > 单片机
[导读]IIS(集成音频接口)于上个世纪80年代首先被Philips公司用于消费产品的音频设备。被广泛运用于CD、数字音频磁带、数字音频处理器和数字TV音频。IIS的组成一般来说包括4个管脚:串行数据输入(IISDI)、串行数据输出(

IIS(集成音频接口)于上个世纪80年代首先被Philips公司用于消费产品的音频设备。被广泛运用于CD、数字音频磁带、数字音频处理器和数字TV音频。

IIS的组成一般来说包括4个管脚:串行数据输入(IISDI)、串行数据输出(IISDO)、左/右通道选择(IISLRCK)、串行位时钟(IISCLK);产生IISLRCK和IISCLK的是主控器。在S3C2440上和IIS相关的接口还有一个用于提供CODEC时钟的管脚。就时序信号工作来说,当IISSCLK提供不间断的时钟信号的时候IISLRCK会以“数据位+1”的宽度方式产生周期信号。低电平时期表示左声道,高电平时期表示右声道。然后IISDI或者IISDO就按照一定的格式不断的发送/接收数据。

至于这种数据的格式,根据S3C2440的芯片资料的说明可以知道这样以MSB为首位可以让传输器和接收器不用知道对方的字长。数据还是按照各自的字长进行截取,如果不能匹配就会造成截断或者添0(意思是如果系统字长为32位而传输器的字长为16位那么传输的时候32位的系统数据就会被折成16位的)反正就是数据位从高到低的传输。至于MSB对齐格式,和上面的时序区别在于MSB总是被首先的传输在左右声道切换的时候。

芯片手册


语音芯片UDA1341TS

/*-----------------------------------------------------------------------------------

*地址模式时序,掌握几个要点

*数据传输的时候保证L3MODE为低

*数据传输开始的信号是保证L3MODE为低L3CLOCK为高

*数据传输结束的信号是保证L3MODE为高L3CLOCK为高

*数据传输过程中一个L3CLOCK的周期传一个数据位

*数据模式时序,掌握几个要点

*数据传输的时候保证L3MODE为低

*数据传输开始的信号是保证L3MODE为高L3CLOCK为高

*数据传输结束的信号是保证L3MODE为高L3CLOCK为高

*数据传输过程中一个L3CLOCK的周期传一个数据位

*------------------------------------------------------------------------------------*/

2.mini2440电路图

3.S3C2440寄存器

s3C2440A的IIS总线接口用于实现一个CODEC接口来扩展8/16位立体声CODEC芯片到便携式应用。IIS总线接口支持IIS总线数据格式和MSB对齐数据格式。接口提供DMA传输模式用于FIFO访问代替一个中断。它能同步的传输和接收数据如同选择单独传输或者接收数据一样好。

时序的速率和音频数据的采样速率相关,因为IIS传输的是数字采样信号。所以数据的传输必须要达到采样速率。这里以一个wav文件作为例子(采样频率44.1KHz、声道数2、数据位数16)。该文件的声音要得到还原,那么数据必须以44.1KHz的速率传输。但是数据是串行传输的,为了在指定时间传输到数据,所以传输速率必须要乘以16才能一个数据以44.1KHz的速率传输,然后由于声道数位2,所以有两个通道要同时传输数据。但是传输通道只有一个,所以为了保证同时,还要在此基础上乘以2。根据上面的时序可以知道是SCLK在控制整个时序,所以得出IISSCLK=采样频率×采样位数×通道数。这里为了简便起见,采样频率记为fs。于是IISSCLK为32fs。知道一个管脚的时序,其他时序也就好确定了。

在S3C2440下,IIS的配置都是通过寄存器来完成的。下面总结一些S3C2440使用IIS接口需要做的一些配置工作。

IIS相关的寄存器:

IISCON寄存器

功能名称

说明

LR_CH_INDEX

[8]

左/右声道索引

0——左

1——右

TRANS_FIFO_RFLAG

[7]

传输FIFO准备标识

0——空

1——非空

RECV_FIFO_RFLAG

[6]

接收FIFO准备标识

0——满

1——非满

TRANS_DMA_EN

[5]

传输DMA服务请求

0——关闭

1——使能

RECV_DMA_EN

[4]

接收DMA服务请求

0——关闭

1——使能

TRANS_CH_IDLE_CMD

[3]

在Idle状态IISLRCK是非活动的(暂停Tx)

0——Notidle

1——Idle

RECV_CH_IDLE_CMD

[2]

在Idle状态IISLRCK是非活动的(暂停Rx)

0——Notidle

1——Idle

IIS_PRESCALER

[1]

IIS预分频

0——关闭

1——开启

IIS_EN

[0]

IIS接口使能

0——关闭

1——开启

IISMOD寄存器

功能名称

说明

MA_CLK_SELECT

[9]

主时钟选择

0——PCLK

1——MPLLin

MA_SL_MODE

[8]

主/从模式选择

0——主模式(IISLRCK和IISCLK是输出模式)

1——从模式(IISLRCK和IISCLK是输入模式)

TX_RX_MODE

[7:6]

传输/接收模式选择

00——无传输

01——接收模式

10——传输模式

11——传输和接收模式

LR_CH_EN

[5]

左右声道使能

0——右声道

1——左声道

SER_FORMAT

[4]

串行接口格式

0——IIS兼容格式

1——MSB对齐格式(最高位左对齐)

SER_DATA_BIT

[3]

串行数据位数

0——8位

1——16位

MA_CLK_FS

[2]

主时钟频率选择

0——256fs

1——384fs

(fs:采样频率)

SCLK

[1:0]

串行时钟频率选择

00——16fs

01——32fs

10——48fs

11——保留

IISPSR寄存器

功能名称

说明

PRE_A

[9:5]

预分频器A的值

PRE_B

[4:0]

预分频器B的值

注意:选择IIS的时钟源(PCLK或者MPLLin)后,经过两个预分频器处理后会分别得到IISSCLK、IISLRCK和CDCLK(预分频器A得到IISSCLK、IISLRCK;预分频器B得到CDCLK)。一般来说,这两个预分频器的值N相等。这里通过CDCLK来计算预分频器B的N值来推知预分频器A的N值,计算公式为CDCLK=时钟源/(N+1)。

IISFCON寄存器

功能名称

说明

TX_FIFO_MODE

[15]

传输FIFO访问模式选择

0——普通

1——DMA

RX_FIFO_MODE

[14]

接收FIFO访问模式选择

0——普通

1——DMA

TX_FIFO_EN

[13]

传输FIFO使能位

0——关闭

1——使能

RX_FIFO_EN

[12]

接收FIFO使能位

0——关闭

1——使能

传输FIFO数据计数

[11:6]

数据计数值0~32

接收FIFO数据计数

[5:0]

数据计数值0~32

IISFIFO寄存器

功能名称

说明

FENTRY

[15:0]

IISFIFO寄存器保存传输或者接收的音频数据值

3.1.DMA

S3C2440支持4通道位于系统总线和外围设备总线之间的DMA控制器。每个DMA控制器通道能执行数据搬运在系统总线设备和/或外围总线设备之间而没有限制。换句话说,每个通道能处理下面4种情形:

1.源和目地都在系统总线里

2.源在系统总线目地在外围总线

3.源在外围总线目地在系统总线

4.源和目地都在外围总线

DMA的优势是它在传输数据的时候不需要CPU的干预。DMA操作能被软件初始化,或者响应来自内部外围总线或者扩展请求管脚。

DMA请求资源

各个DMA控制器的通道能选择其中一个DMA请求资源,如果H/WDMA请求模式被DCON寄存器选择(注意如果S/W请求模式被选择,这个DMA请求资源无任何意义)。表8-1展示了4个DMA资源于各个通道。


DMA操作

空闲时:DMA_ACK=0;INT_REQ=0;

单服务:知道CURR_TC计数变为0;

全服务:完成一次原子操作;

完成后:DMA_ACK=1;INT_REQ=1;

传输大小

单元(unit)和突发(Burst)

iis.h


/*******************************************************************

*Copyright(C),2011-2012,XXX.

*FileName:iis.h

*Author:HuangYinqing

*Version:1.0

*Date::2012-08-12

*Description:iis音频驱动.

*FunctionList:

*History:

******************************************************************/

/*IIS调试等级*/

#defineDBG_IIS_LEVEL1

/*采样频率选择*/

#defineFRQ_SELECT4

/*使用DMA传输数据*/

//#defineIIS_USE_DMA

/*引脚定义*/

#defineL3C(1<<4)//GPB4=L3CLOCK

#defineL3D(1<<3)//GPB3=L3DATA

#defineL3M(1<<2)//GPB2=L3MODE

#defineMIN_VOLUME0x01

#defineMID_VOLUME0x20

#defineMAX_VOLUME0x3e//==音量最大值

/*缓冲区产度*/

#defineSOUND_DATA_LEN243552

/*函数原型*/

/***************************************************************

**函数名称:voidSoundRecord(unsignedchar*pucRecBuf,unsignedlongulSize)

**函数功能:录音

**入口参数:pucPlayBuf:放音缓冲区;ulSize:缓冲区大小

**出口参数:无

**返回:无

***************************************************************/

voidSoundRecord(unsignedchar*pucRecBuf,unsignedlongulSize);

/***************************************************************

**函数名称:voidSoundPlay(unsignedchar*pucPlayBuf,unsignedlongulSize)

**函数功能:放音

**入口参数:pucPlayBuf:放音缓冲区;ulSize:缓冲区大小

**出口参数:无

**返回值:无

*************

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: mini2440 u-boot 移植 dm9000驱动

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。4,...

关键字: eeprom i2c mini2440 u-boot 移植

从NandFlash启动CPU的时候,CPU会自动通过其内部硬件结构复制NandFlash中的前4K代码到cpu的自带SRAM中,注意这是CPU自带的SRAM,区别于本文所讲的SDRAM,本文所指的SDRAM是外接SDR...

关键字: s3c2440 sdram 硬件篇

以下是驱动的源码。#includelinux/config.h//配置头文件#includelinux/kernel.h//用于调用kmalloc和kfree#includelinux/sched.h//调度,进程睡眠,...

关键字: gpio mini2440 驱动led

接上一篇:s3c2440硬件篇之三:NandFlash(1)介绍s3c2440读NAND Flash的步骤:①设置NFCONF 在HCLK=100Mhz的情况下,TACLS=0,TWRPH0=3,TWRPH1=0,则 N...

关键字: s3c2440 硬件篇 读nandflash

1.硬件原理2440有5个16位定时器,其中0、1、2、3有PWM功能,有一根输出引脚,可以产生周期性高低电平变化。定时器4没有输出引脚。2.芯片手册3.mini2440电路图4.S3C2440寄存器定时器时钟源是PCL...

关键字: mini2440 硬件篇 pwm定时器

移植环境1,主机环境:VMare下CentOS 5.5 ,1G内存。2,集成开发环境:Elipse IDE3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc...

关键字: Linux mini2440 内核 开发环境 移植

通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器。UART以全双工方式传输数据,最简单的连线只有2根,TxD用于发送,RxD...

关键字: mini2440 uart 硬件篇

//定义LED设备的名称,这里是leds,这个模块加载后,会自动在/dev目录里创建该名字的设备文件。#define DEVICE_NAME "leds"//mini2440开发板上有4个LED(发光...

关键字: LED驱动 mini2440

S3C2440芯片对外提供的引脚上,只给出了27根地址线,单靠芯片上的27根引脚只能访问128M的外设空间。为了扩大外设的访问范围,S3C2440芯片又提供了8个片选信号nGCS0~nGSC7。当某个片选信号nGSCx有...

关键字: mini2440 内存初始化
关闭
关闭