基于mini2440 IIS 模块总结

本文详细介绍了基于S3C2440的IIS模块和DMA在音频处理中的应用,包括录音和播放过程,涉及IIS控制器、DMA通道配置、编解码芯片UDA1341的初始化及L3协议。通过配置相关寄存器和中断服务函数实现音频数据的传输,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

一.音频模块框图:

从上面的音频模块框图可以知道:

s3c2440 cpu中含有一个IIS控制器,然后板上面也含有一个编解码芯片(UDA1341)。

录音过程:外部模拟信号通过麦克风1和麦克风2传入UDA1341编解码芯片,然后在编解码芯片内模拟信号转换为数字信号(A/D转换),再通过I2SDI输入到IIS控制器,最后由DMA将IIS控制器中的录音数据搬运到内存中。

即:模拟信号----UDA1341中A/D转换----通过I2SDI进入IIS控制器---通过DMA搬运到内存中。

播音过程:首先DMA将内存中的音乐数据搬运到IIS控制器中,然后通过I2SDO数据线传送到编解码芯片(UDA1341)中,在编解码芯片中数字信号转换为模拟信号(D/A转换),最后模拟信号通过耳机传送出去,这样整个的播音过程就完成了。

即:数字信号---通过DMA从内存中搬运到IIS控制器中----通过i2SDO到UDA1341中D/A转换----模拟信号

总结:由上可知,音频模块涉及的方面比较多,有DMA  中断 IIS控制模块 UDA1341编解码芯片 L3协议(CPU通过L3协议对UDA1341编解码芯片进行初始化,因为L3协议没有专门的控制模块,所以对UDA1341编解码芯片的初始化,我们只有通过I/O口模拟的方法来对它进行配置了).

其中:IIS有四根线,包含 serial data input(IISDI), serial data output(IISDO),left/right channel select(IISLRCK),and serial bit clock(IISCLK);the device generating IISLRCK and IISCLK is the master.

二.IIS各个涉及模块的总结:

1.首先我们先来看一下S3C2440的原理图:

由上面的原理图可知,音频模块主要涉及的信号线有CDCLK(system clock),I2SCLK(serial bit clock),I2SLRCK(left/right channel select),I2SDI(serial data input),I2SDO(serial data output).L3MODE(因为IIS控制器通过l3协议初始化编解码芯片时,要传编解码地址信息和数据信息,然而传编解码地址信息和数据信息的时序又不同,所以通过这根线来区分)。L3CLOCK(L3协议传送数据的时钟线)  L3DATA(L3协议传送的数据线).

所以首先我们应该配置这些引脚,将CDCLK I2SCLK I2SLRCK I2SDI I2SDO 五根线的I/O口配置为相应的功能模式,L3MODE  L3data  L3clock 的I/O应该配置为输出功能.

2.DMA模块的总结:

DMA(直接内存寻址,不需要CPU的干预)是一个搬运工,在s3c2440中我们可以看到,s3c2440中,在系统总线和外部总线之间可以支持4个通道控制。每个通道可以处理以下4种情况:

《1》源地址和目的地址都在系统总线上。

《2》源地址在系统总线上,目的地址在外部总线上。

《3》源地址在外部总线上,目的地址在系统总线上。

《4》源地址和目的地址都在外部总线上。

  

由上图可知:DMA的四个通道支持的源如上。在音频模块中,我们需要的是播音和录音,为了同时播音和录音,我们最好不要让播音和录音同时使用同一个通道,所以我们可以选择通道1作为录音源,通道0可以作为播音源,通道2既可以播音也可以用来录音。在本文中,我们选择通道1作为录音源,通道2作为播放源的通道。

DMA有整服务和单服务的两种不同的模式:

相同点:都是搬运完后才产生中断。

不同点:整服务模式是搬运完才清除ACK,单服务模式是每完成一次原子操作就就清除ACK.

我们选择单服务模式。

查询模式:一旦查到DREQ是低电平则马上响应ACK,并进行下一次的搬运动作。

握手模式:搬运完后通知DREQ信号。

下面是查询和握手模式的时序图:

由图和相关的理论可知,握手模式是比较可靠的。所以我们一般选择握手模式。

通过上述,我们可以知道,我们使用DMA时,选择的是单服务握手模式而且选择的是(a unit transfer).

关于DATA SIZE = half word = 两个字节= 16bit 是在制作的时候 作演示版级别的CD样带16-bit/44.1 kHz   

对于搬运的次数=总字节数/每次传输的字节  在本文中 我们选择的是 每次传输的是16bit,而且转码的工具是以char类型 来存放的。所以次数=总数组大小/2。

还需要注意 源地址、目的地址,是固定是增长、在外部总线上还是内部总线上。

在音频这个模块中,内存地址是增长的  IIS 的FIFO是一个固定的地址,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值