首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TQ2440的学习——IIS接口的使用

TQ2440的学习——IIS接口的使用

概述
  IIS(集成音频接口)于上个世纪80年代首先被Philips公司用于消费产品的音频设备。被广泛运用于CD、数字音频磁带、数字音频处理器和数字TV音频。S3C2440A的IIS总线接口用于实现一个CODEC接口来扩展8/16位立体声CODEC芯片到便携式应用。IIS总线接口支持IIS总线数据格式和MSB对齐数据格式。接口提供DMA传输模式用于FIFO访问代替一个中断。它能同步的传输和接收数据如同选择单独传输或者接收数据一样好。
  从上面的叙述看来,IIS是一种音频接口。其实S3C2440也支持AC97接口,不过板子上只扩展了IIS的应用,关于AC97的就不多说了。但是有一点可以确定的是IIS和AC97也有相似的地方,这两种接口都必须要外扩CODEC才行。因为接口的数据传出和接收的只是数字采样信号而已,要通过CODEC进行DA转换或者AD转换才行。


      图1.板子上IIS外扩电路原理图
  IIS的组成一般来说包括4个管脚:串行数据输入(IISDI)、串行数据输出(IISDO)、左/右通道选择(IISLRCK)、串行位时钟(IISCLK);产生IISLRCK和IISCLK的是主控器。在S3C2440上和IIS相关的接口还有一个用于提供CODEC时钟的管脚。就时序信号工作来说,当IISSCLK提供不间断的时钟信号的时候IISLRCK会以“数据位 + 1”的宽度方式产生周期信号。低电平时期表示左声道,高电平时期表示右声道。然后IISDI或者IISDO就按照一定的格式不断的发送/接收数据。


      图2.IIS总线的时序
  至于这种数据的格式,根据S3C2440的芯片资料的说明可以知道这样以MSB为首位可以让传输器和接收器不用知道对方的字长。数据还是按照各自的字长进行截取,如果不能匹配就会造成截断或者添0(意思是如果系统字长为32位而传输器的字长为16位那么传输的时候32位的系统数据就会被折成16位的)反正就是数据位从高到低的传输。至于MSB对齐格式,和上面的时序区别在于MSB总是被首先的传输在左右声道切换的时候。


      图3.MSB对齐格式(数据左对齐格式)
  时序的速率和音频数据的采样速率相关,因为IIS传输的是数字采样信号。所以数据的传输必须要达到采样速率。这里以一个wav文件作为例子(采样频率44.1KHz、声道数2、数据位数16)。该文件的声音要得到还原,那么数据必须以44.1KHz的速率传输。但是数据是串行传输的,为了在指定时间传输到数据,所以传输速率必须要乘以16才能一个数据以44.1KHz的速率传输,然后由于声道数位2,所以有两个通道要同时传输数据。但是传输通道只有一个,所以为了保证同时,还要在此基础上乘以2。根据上面的时序可以知道是SCLK在控制整个时序,所以得出IISSCLK=采样频率×采样位数×通道数。这里为了简便起见,采样频率记为fs。于是IISSCLK为32fs。知道一个管脚的时序,其他时序也就好确定了。
  在S3C2440下,IIS的配置都是通过寄存器来完成的。下面总结一些S3C2440使用IIS接口需要做的一些配置工作。
  IIS相关的寄存器:
  IISCON寄存器
                    
  功能名称
  位
  说明
  LR_CH_INDEX
  [8]
  左/右声道索引
  0——左
  1——右
  TRANS_FIFO_RFLAG
  [7]
  传输FIFO准备标识
  0——空
  1——非空
  RECV_FIFO_RFLAG
  [6]
  接收FIFO准备标识
  0——满
  1——非满
  TRANS_DMA_EN
  [5]
  传输DMA服务请求
  0——关闭
  1——使能
  RECV_DMA_EN
  [4]
  接收DMA服务请求
  0——关闭
  1——使能
  TRANS_CH_IDLE_CMD
  [3]
  在Idle状态IISLRCK是非活动的(暂停Tx)
  0——Not idle
  1——Idle
  RECV_CH_IDLE_CMD
  [2]
  在Idle状态IISLRCK是非活动的(暂停Rx)
  0——Not idle
  1——Idle
  IIS_PRESCALER
  [1]
  IIS预分频
  0——关闭
  1——开启
  IIS_EN
  [0]
  IIS接口使能
  0——关闭
  1——开启
  IISMOD寄存器
                  
  功能名称
  位
  说明
  MA_CLK_SELECT
  [9]
  主时钟选择
  0——PCLK
  1——MPLLin
  MA_SL_MODE
  [8]
  主/从模式选择
  0——主模式(IISLRCK和IISCLK是输出模式)
  1——从模式(IISLRCK和IISCLK是输入模式)
  TX_RX_MODE
  [7:6]
  传输/接收模式选择
  00——无传输
  01——接收模式
  10——传输模式
  11——传输和接收模式
  LR_CH_EN
  [5]
  左右声道使能
  0——右声道
  1——左声道
  SER_FORMAT
   [4]
  串行接口格式
  0——IIS兼容格式
  1——MSB对齐格式(最高位左对齐)
  SER_DATA_BIT
  [3]
  串行数据位数
  0——8位
  1——16位
  MA_CLK_FS
  [2]
  主时钟频率选择
  0——256fs
  1——384fs
  (fs:采样频率)
  SCLK
  [1:0]
  串行时钟频率选择
  00——16fs
  01——32fs
  10——48fs
  11——保留
  IISPSR寄存器
      
  功能名称
  位
  说明
  PRE_A
  [9:5]
  预分频器A的值
  PRE_B
  [4:0]
  预分频器B的值
  注意:选择IIS的时钟源(PCLK或者MPLLin)后,经过两个预分频器处理后会分别得到IISSCLK、IISLRCK和CDCLK(预分频器A得到IISSCLK、IISLRCK;预分频器B得到CDCLK)。一般来说,这两个预分频器的值N相等。这里通过CDCLK来计算预分频器B的N值来推知预分频器A的N值,计算公式为CDCLK=时钟源/(N+1)。
继承事业,薪火相传
返回列表