I2S音频总线学习(三)S3C2440的I2S控制器

来源:互联网 发布:卖数据 编辑:程序博客网 时间:2024/04/28 01:57

I2S音频总线学习(三)S3C2440的I2S控制器

一、I2S控制器结构框图                 

        S3C2440A的Inter-IC Sound (IIS)总线接口作为一个编解码接口连接外部8/16位立体声音频解码IC用于迷你碟机和可携式应用。IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式取代了中断。它可以在同一时间接收和发送数据。

图1 结构框图

  1. 总线接口,寄存器组和状态机(BRFC):总线接口逻辑和FIFO 访问由状态机控制。
  2. 5 位双预定标器(IPSR):一个预定标器用于IIS 总线接口的主时钟发生器,另外一个用作外部编解码时钟发生器。
  3. 64 位FIFO(TxFIFO 和RxFIFO):在发送数据传输时,数据写到TxFIFO;在接收数据传输时,从RxFIFO 读取数据。
  4. 主IISCLK 发生器(SCLKG):在主设备模式,串行位时钟是从主时钟生成。
  5. 通道发生器和状态机(CHNC):IISCLK 和iislrck 是由通道状态机生成并控制。
  6. 15 位移位寄存器(SFTR):在发送模式下并行数据移位成串行数据输出,在接收模式下串行数据输入移位成并行数据。

二、发送接收模式

1.通常传输

         IIS 控制寄存器对于发送接收FIFO 有一个FIFO 准备标志位。当FIFO 准备发送数据时,如果FIFO 非空,FIFO 准备标志位置1。如果FIFO 为空,FIFO 准备标志位置0。当接收FIFO非满,对于接收FIFO 的FIFO 准备标志位置1。其指出FIFO 准备好接收数据。如果接收FIFO 为满,FIFO 准备标志置0。这些标志用于决定CPU 读写FIFO 的时间。用这种方法当CUP 在访问发送接收FIFO 时,串行数据能被发送和接收。

2.DMA 传输

        在此模式下,发送或接收FIFO 对DMA 控制器是可访问的。在发送或接收模式下的DMA服务请求是由FIFO 准备标志自动执行。

3.发送和接收模式

        在此模式下IIS 总线接口可以同时接收和发送数据。

三、音频串行接口格式

1.IIS 总线格式

          IIS 总线有四线包括串行数据输入(IISDI),串行数据输出(IISDO),左右通道选择(IISLRCK)和串行位时钟(IISCLK)。生成IISLRCK 和IISCLK 的设备是主设备。串行数据以2 的补码发送,MSB(Most Significant Bit 最高位)先发。因为发送器和接收器可能有不同的字长,MSB(最高位)先发。发送器不必知道接收器可以处理多少位,接收器也不必知道会收到多少位。当系统字长大于发生器的字长,字为了数据发送而被截断(最低位被置0)。如果接收器接收大于其字长的位,在LSB(最低位)后的位被忽略。另外,如果接收器收到的位数小于其字长,缺少的位被置0。因此MSB 有一个固定的位置,而LSB 的位置取决于字长。只要IISLRCK 发送改变,发送器在一个时钟周期内发送下一个字的MSB。由发送器发送的串行数据可以和时钟信号的下降沿和上升沿同步。但是,串行数据必须在串行时钟信号的上升沿锁存到接收器。因此当同步上升沿的数据发送时有一些限制。左右通道选择线指出了正在发送的通道。IISLRCK 可以在串行时钟的下降沿或上升沿被改变,当时其不需要对称。在从设备,信号在串行时钟的下降沿或上升沿被锁存。在MSB 被发送,IISLRCK 线改变一个时钟周期。此允许发送器导出用于建立发送的串行数据同步时序。此外,其使能接收存储前一个字且为下一个字的接收清除输入。

2.MSB JUSTIFIED 格式

          MSB JUSTIFIED 总线格式在结构上和IIS 总线格式。唯一和IIS 总线格式的区别,MSB JUSTIFIED 格式实现了只要IISLRCK 改变,发送器总是发送下一个字的MSB。

图2 IIS格式和MSB JUSTIFIED数据格式

四、IIS采集频率和主设备时钟

           I2S主设备时钟频率可以通过采样频率来选择,这是因为I2S主设备时钟频率是由I2S分频器产生的(主设备时钟频率=PCLK/预分频器值),因此必须选择合适的预分频值和CODECLK的采样频率类型(256fs或384fs),才能获得合适的I2SLRCK频率(I2SLRCK频率=主设备时钟频率/CODECLK)。
           串行位采用频率类型(16/32/48fs)可以通过配置信道的串行位数和CODECLK采样频率类型来完成(串行位时钟频率类型=CODECLK的采用类型/串行数据位数)。

五、IIS 总线接口特殊寄存器

       I2S相关的寄存器包括I2S控制寄存器I2SCONI2S模式寄存器I2SMODI2S分频寄存器I2SPSRI2SFCON寄存器和FIFO寄存器。


1)I2SCON控制寄存器


I2SCON控制寄存器物理地址为0x55000000,可读/写,复位后值为0x100。寄存器各个比特位意义如下:

[8] 左右声道标记,0=左声道,1=右声道;
[7] 发送FIFO就绪标记,取0时表示没有就绪,取1时表示FIFO就绪;
[6] 接收FIFO就绪标记,取0时表示没有就绪,取1时表示FIFO就绪;
[5] 发送DMA请求使能,取0时请求禁止,取1时请求使能;
[4] 接收DMA请求使能,取0时请求禁止,取1时请求使能;
[3] 发送通道空闲命令,在空闲状态(暂停传输)时,I2SLRCK是不激活的,0表示I2SLRCK产生,1表示不产生;
[2] 接收通道空闲命令,在空闲状态(暂停传输)时,I2SLRCK是不激活的,0表示I2SLRCK产生,1表示不产生;
[1] I2S预分频器使能,取0时预分频器禁止,取1时预分频器使能;
[0] I2S接口使能,取0I2S禁止,取1I2S使能。

2I2SMOD模式寄存器

I2SMOD模式寄存器物理地址为0x55000004,可读/写,复位后值为0x000。寄存器各个比特位意义如下:

[8] 主从模式选择,取0时为主模式,取1时为从模式;
[7:6] 发送/接收模式选择,00=无,01=接收模式,10=发送模式,11=发送/接收模式;
[5] 左右通道优先级,取0时右通道高左通道低,取1时右通道低左通道高;
[4] 串行接口格式,取0I2S兼容格式,取1MSB可调格式;
[3] 每通道串行数据位,取08位,取116位;
[2] 主时钟频率选择,取0时主时钟是256fs(采样频率),取1时为384fs
[1:0] 串行位时钟频率选择,00=位时钟是16fs01=位时钟是32fs10=位时钟是48fs11=未定义。

3I2S分频寄存器I2SPSR

I2S分频寄存器物理地址为0x55000008,可读/写,复位后值为0x000。寄存器各个比特位意义如下:

[9:5] A预分频值,预分频器A的除因子,I2S总线接口主时钟=MCLK/A预分频因子;
[4:0] B预分频值,预分频器B的除因子,外部CODEC时钟=MCKL/B预分频因子。

4I2SFCON寄存器

I2SFCON寄存器物理地址为0x5500000C,可读/写,复位后值为0x000。寄存器各个比特位意义如下:

[15] 发送FIFO访问模式选择,取0时工作于普通模式,取1时工作在DMA模式;
[14] 接收FIFO访问模式选择,取0时工作于普通模式,取1时工作在DMA模式;
[13] 控制发送FIFO使能,取1时使能,取0时禁止;
[12] 控制接收FIFO使能,取1时使能,取0时禁止;
[11:6] 发送端FIFO数据计数,计数值032
[5:0] 接收端FIFO数据计数,计数值032

5FIFO寄存器I2SFIF

FIFO寄存器物理地址为0x55000010,可读/写,复位后值为0x000。寄存器各个比特位意义如下:I2S总线接口在发送/接收模式有两个64字节的FIFO,每个FIFO由宽16、深32的表组成,并且每个FIFO单元可以分别操作高字节或低字节。通过FIFO入口访问发送和接收FIFO,入口地址为0x55000010


原创粉丝点击