电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作基于I2S的USB 声卡系统设计

基于I2S的USB 声卡系统设计

09-08 11:59:44 | http://www.5idzw.com | 电子制作 | 人气:180
标签:电子小制作,http://www.5idzw.com 基于I2S的USB 声卡系统设计,http://www.5idzw.com

    为了使USB声卡的回放和录音可以同时进行,即实现全双工,数据传输使用两个BDMA通道,通道0用于回放,通道1用于录音,因为S3C2410的BDMA中没有内置DMA存储区域,所以需要在SDRAM中分配DMA缓冲区。音频数据回放时,先由USB总线取得音频数据,写入DMA缓冲区,由BDMA控制器通道0窃取总线控制权,通过I2S控制器写入I2S总线并传输给音频芯片。录音采用BDMA控制器的通道1,其数据流过程和回放相反。

    由于处理的音频数据量比较大,并且PC端接收/发送数据的速度和I2S处理数据的速度不能完全匹配,这就导致了放音失真或者录音丢帧的现象。为了解决这个问题,最简单易行的方法是使用比较大的环形缓存。但实际上大的缓存区需要更长的填充时间,在使用时会出现延时。为了解决延时的问题,使用环形、多段缓存机制。在这种机制下,将缓存区分割成若干个相同大小的块,并使用算法实现环形缓冲。下面以8kHz/16位/单通道音频流的播放为例说明缓冲区的操作。

    USB音频类规定的USB同步传输周期为1ms,即对于8kHz/16位/单通道PCM编码的音频流,每隔1ms,USB设备就会收到一次主机传来的数据,数据包大小为16字节,为了尽量保持I2S和USB传输同步,可以取16字节作为一个缓存区段的大小。当USB声卡接收到数据后,MCU先判断缓冲区中是否有空闲区域,如果没有足够缓冲区就跳过一个样本,然后再逐一把FIFO中的数据复制到SDRAM的缓冲区。

    因为I2S的DMA控制器处理数据是按段进行,每段长度为16字节,在DMA取数据前,先判断缓冲区中的数据量,如果没有足够数据(16字节),则加入静音数据,然后再执行DMA传输。

结语
    本文所阐述的基于I2S总线的USB声卡,已经在基于S3C2410处理器的开发板上成功实现,不过只是实现了USB声卡的最基本功能。可以尝试把MP4、U盘等和USB声卡集成在一体,会更有应用价值。

参考文献
1. Samsung Inc. S3C44B0X Risc Microprocessor Datasheet. http://www.samsung.com.  2003
2.Philips Semiconductors. UDA1341TS datasheet.http://www. semiconductor. philips.com. 2002
3. Hyde, John, USB Design by Example. Intel. www.usb-by-example.com.2002.5

上一页  [1] [2] 

,基于I2S的USB 声卡系统设计
关于《基于I2S的USB 声卡系统设计》的更多文章