S3C2440-IIS放音

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/01/14/6140692.aspx

S3C2440A的Inter-IC Sound(IIS)总线接口作为一个编解码接口连接外部8/16位立体声音频解码IC用于迷你碟机和可携式应用。IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式取代了中断。它可以在同一时间接受和发送数据。S3C2440一共有5个引脚用于IIS:IISDO,IISDI,IISSCLK,IISLRCK和CDCLK。前两个信号用于数字音频信号的输入输出,另外3个引脚都与音频信号的频率有关,可见要用好IIS,就要把信号频率设置正确。IISSCLK为串行时钟,每一个时钟信号传送一位音频信号,因此IISSCLK的频率=声道数*采样频率*采样位数,如采样频率为44.1kHz,采样的位数为16位,声道数2个(左,右两个声道),则IISSCLK的频率=32fs=1411.2kHz。IISLRCK为帧时钟,用于切换左右声道,如IISLRCK为高电平表示正在传输的是左声道数据,为低表示传输的是右声道数据。因此IISLRCK的频率应该正好等于采样频率。由于IIS只负责数字音频信号的传输,而要真正实现音频信号的放录还需要额外的处理芯片(在这里我们使用UDA1341),CDCLK为该芯片提供系统同步时钟,即编解码时钟,主要用于音频的A/D,D/A采样时的采样时钟,一般CDCLK为256fs或384fs。UDA1341使用L3接口,通过L3接口可以实现UDA1341和S3C2440控制信息的传递。L3指3根线,L3DATA(数据线,用于传输数据),L3MODE(模式线,用于选择模式),L3CLOCK(时钟线,用于传输时钟)。先传输地址模式数据,再传输数据模式数据。L3MODE为低时是地址模式,L3MODE为高时是数据传输模式。L3DATA和L3CLOCK相互作用,完成8位数据的传输,传输的顺序是先低位数据,再高位数据。地址模式用于选择设备和定义目标寄存器,在这种模式下,8位数据的含义是:高6位是设备地址(UDA1341的地址为000101),低两位是后面数据模式的类型(00:DATA0,01:DATA1,10:STATUS)。

下面这个程序完成从WAV音频文件中提取出数组。

完成音频文件的播放。IISFIFO为16位宽,深度为32。将音频数组中的数据装入IISFIFO,装满后IIS读取IISFIFO中的数据,即放音,然后再将音频数组中的数据读入IISFIFO,周而复始,完成放音。

你可能感兴趣的:(Blog,J#,UP,IIS,FP)