一.音频模块框图:
从上面的音频模块框图可以知道:
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是一个固定的地址,