您现在的位置: 主页 > MCU > 单片机技术应用 > mini2440硬件篇之IIS -
本文所属标签:
为本文创立个标签吧:

mini2440硬件篇之IIS -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

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

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

本文引用地址: http://www.21ic.com/app/mcu/201808/784740.htm

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:缓冲区大小

**出口参数:无

**返回值:无

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



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > mini2440硬件篇之IIS -
 

网站地图

围观()