转载请注明出处:http://blog.youkuaiyun.com/charistain_huang
文章中有什么不正确的地方恳请请各位网友指点
********************************************************
*****作者:黄仁军 *******
*****联系email:957626485@qq.com *******
********************************************************
1.IIS:Inter-IC Sound,是由飞利浦公司开发,该接口支持IIS总线数据格式和MSB-justified数据格式,该接口对FIFO的数据访问采用了DMA模式取代了中断,并且可以在同一时间接收和发送数据
2.IIS:有四根数据线,IISDO,IISDI,IISSCLK,IISLRCK;注意IIS只负责音频信号的传输,如果需要实现录音的话,还需要其他的处理芯片。
IISDO,IISDI用于数据的输入和输出;
IISSCLK:为串行时钟 其频率= 声道数×采用频率×采用位数,假如采用双声道(左右声道),每次采用16位,采样频率40kHz,则IISSCLK =2×16×40 ;
IISLRCK:用于指示左声道或右声道,比如高电平表示正在传输的是左声道数据,实际上IISLRCK频率就等于采用频率;
另外如果是采用了录音芯片的话,比如本例中的UDA1341的话还需要CDCLK为该芯片提供系统同步时钟(编解码时钟)主要用于音频A/D,D/A采用时钟。一般为256fs、384fs或512fs
3.PCLK经过两个预分频器处理后分别得到IISSCLK、IISLRCK和CDCLK(预分频器A得到IISSCLK、IISLRCK,预分频器B得到CDCLK)。如下图:
A和B的分频值是相等的,CDCLK=PCLK/(N+1); 比如:采样fs=44.1kHZ ,CDCLK=384fs,PCLK =50KHZ,从而可以得到N的值
3.UDA134还需要L3(line 3 三根线)总线的支持,由于2440中没有这个总线,我们可以使用IO的方式进行模拟,L3总线包括:L3DATA,L3MODE,L3CLOCK,意思都可以顾名思义了,就不多解释。具体的都可以参考UDA134的数据手册。
UDA134有两种传输模式,地址模式和数据模式,地址模式当然就是地址数据,但是只有高6位表示地址,低2位表示的是传输的模式,是状态模式、数据0模式还是数据1模式,其中状态模式主要用于配置UDA1341的各类初始状态,数据模式主要用于改善音频输入、输出的效果。
L3 MODE为低时是地址模式,L3 MODE为高时是数据传输模式地址模式是用于选择设备和定义目标寄存器,在这种模式下,8位数据的含义是:高6位是设备地址(UDA1341的地址为000101),低两位是后面数据模式下寄存器的类型(00:DATA0,01:DATA1,10:STATUS)。只要没有再改变地址模式下的数据,则数据模式下的数据始终是传输到上一个地址模式所定义的寄存器内。
在传输数据模式下,STATUS是用于设置复位,系统时钟频率、数据输入模式、DC滤波等内容。DATA0分为直接寻址模式和扩展寻址模式,直接寻址模式是直接进行模式的控制,包括音量、静音等等,而扩展寻址模式是在直接寻址模式下先设置3位扩展地址,再在直接寻址模式下设置5位扩展数据。在DATA1下,可以读取到被检测峰值
4.部分代码:
参考文献:http://blog.youkuaiyun.com/zhaocj/archive/2010/05/08/5570424.aspx