S3C44B0 中文数据手册
17.1 概述
很多的数字音频系统进入了音频消费市场,包括音频压缩唱片,数字音频磁带,数字声 音处理器,和数字声音 TV。S3C44B0X 的 IIS(内部声音集成电路)总线接口可以用来实现 对外部 8/16 位立体声音频数字信号编解码器电路的接口功能,从而实现迷你型放音机和其 它便携式的应用。它支持 IIS 总线数据格式和 MSB-justified 数据格式。IIS 总线接口为 FIFO 操作提供 DMA 传输模式,代替中断模式,它可以同时传送或接收数据。
特性:
——兼容 IIS,MSB-justified 格式数据
——每通道 8/16 位数据
——每通道 16,32,48fs(采样频率)串行位时钟
——256,384fs 主设备采样时钟频率
——可编程的分频器提供给主设备时钟和编解码时钟
——供给发送和接收用的 32 字节(2×16)的 FIFO
——普通传输模式和 DMA 传输模式
17.2 传输模式
包括普通传输模式,和 DMA 传输模式。
普通传输模式
IIS 控制寄存器中有一个 FIFO 准备好标志位用于 FIFO 发送和接收。当 FIFO 准备好发 送数据,如果发送 FIFO 中不为空,FIFO 准备好标志将被设置为 1。
如果发送 FIFO 为空,FIFO 准备好标志将被置 0,当接收 FIFO 装满,接收 FIFO 准备 好标志位被设置为 0,这些标志可以决定 CPU 读写 FIFO 的时机。串行数据就通过这种方式 被发送或者接收的。
DMA 传输模式
在这个模式中,IIS 的发送和接收 FIFO 操作都由 DMA 控制器来完成,在发送和接收模
17.3 音频串行接口格式
IIS 总线格式
IIS 总线具有 4 根信号线,包括串行数据输入(IISDI),串行数据输出(IISDO),左/右 声道选择(IISLRCK),和串行数据时钟(IISCLK);产生 IISLRCK 和 IISCLK 的是主设备。
串行数据总是以偶数个数据(为奇数时填充)且高位在先(MSB)发送。高位在先是 因为发送器和接收器可能具有不同的字长。发送器没有必要了解接收器能够处理多少位数 据,接收器也不需要了解多少位的数据正在被发送。
被发送器发出的串行数据可以依据时钟信号的下降沿或者上升沿来同步。但是,串行数 据必须在上升沿处锁入接收器。左右声道选择线决定被传输的通道。IISLRCK 可以在下降 沿或者上升沿处改变,它并不要求是均匀的。在从设备端,这个信号在上升沿处被锁定。 IISLRCK 信号线改变到 MSB 发送之间有一个时钟的周期的时间。
MSB-Justified 格式
MSB-Justified 格式与 IIS 格式有相同的信号线,唯一的不同是,IISLRCK 信号线改变后,
MSB 立即发送,期间没有一个时钟的周期的时间。
17.4 采集频率和主设备时钟
IIS 主设备时钟频率可以通过采样频率来选择,如下表 28-1 所示。因为 IIS 主设备时 钟频率是由 IIS 预分频器产生的(主设备时钟频率=MCLK / 预分频器值),因此必须选择 合适的预分频器的值和 CODECLK 的采样频率类型(256 或者 384fs),才能获得合适的 IISLRCK 频率(IISLRCK 频率=主设备时钟频率/CODECLK)。
串行位采样频率类型(16/32/48fs)可以通过配置每通道的串行位数和 CODECLK 采样 频率类型来完成(串行位时钟频率类型=CODECLK 的采样频率类型 / 串行数据位数),如 表 28-2 所示:
表 28-1 CODEC 时钟(CODECLK=256fs 或者 384fs)
表 28-2 可用的串行位时钟频率(IISCLK=16 或者 32 或者 48fs)
17.5 IIS 串行接口专用寄存器
控制寄存器
IISCON |
位 |
描述 |
初始化状态 |
左右通道索引(只 读) |
[8] |
0=左通道 1=右通道 |
1 |
发送 FIFO 准备好 标志(只读) |
[7] |
0=没有准备好(空) 1=准备好(非空) |
0 |
接收 FIFO 准备好 标志(只读) |
[6] |
0=没有准备好(未满) 1=准备好(满) |
0 |
发送 DMA 服务请 求使能 |
[5] |
0=请求未使能 1=请求使能 |
0 |
接收 DMA 服务请 求使能 |
[4] |
0=请求未使能 1=请求使能 |
0 |
发送通道空闲命令 |
[3] |
在空闲状态下 IISLRCK 是未激活的(暂停 Rx)。这个位仅在作为 IIS 主机时有效 0=IISLRCK 产生; 1=IISLRCK 不产生。 |
0 |
发送通道空闲命令 |
[2] |
在空闲状态下 IISLRCK 是未激活的(暂停 Rx)。这个位仅在作为 IIS 主机时有效 0=IISLRCK 产生; 1=IISLRCK 不产生。 |
0 |
IIS 预分频使能 |
[1] |
0=预分频禁止 1=预分频使能 |
0 |
IIS 接口使能 (启动) |
[0] |
0=IIS 禁止(停止) 1=IIS 使能(启动) |
0 |
模式寄存器
IISMOD |
位 |
描述 |
初始状态 |
主/从模式选择 |
[8] |
0=主模式(IISLRCK 和 IISCLK 是输出模式) 1=从模式(IISLRCK 和 IISCLK 是输入模式) |
0 |
发送/接收模式选择 |
[7:6] |
00=无传输;01=接收模式 10=发送模式;11=发送和接收模式 |
00 |
激活左右声道选择 电平 |
[5] |
0=左声道低电平(右声道高电平) 1=左声道高电平(右声道低电平) |
0 |
串行接口格式 |
[4] |
0=IIS 兼容格式; 1=MSB-Justified 格式 |
0 |
串行数据位每通道 |
[3] |
0=8 位 1=16 位 |
0 |
主 时 钟 (CODECLK)频率 选择 |
[2] |
0=256fs 1= 384fs |
0 |
串行时钟频率选择 |
[1:0] |
00=16fs 01=32fs |
00 |
|
|
10=48fs 11=N/A |
|
IIS 预分频寄存器
IISPSR |
位 |
描述 |
初始化状态 |
预分频器值 A |
[7:4] |
预分频器 A 的除数 clock_prescaler_A = MCLK/<除数> |
0x0 |
预分频器值 B |
[3:0] |
预分频器 B 的除数 clock_prescaler_B = MCLK/<除数> |
0x0 |
取值表如下:
IISPSR[3:0]/[7:4] |
除数值 |
IISPSR[3:0]/[7:4] |
除数值 |
0000b |
2 |
1000b |
1 |
0001b |
4 |
1001b |
- |
0010b |
6 |
1010b |
3 |
0011b |
8 |
1011b |
- |
0100b |
10 |
1100b |
5 |
0101b |
12 |
1101b |
- |
0110b |
14 |
1110b |
7 |
0111b |
16 |
1111b |
- |
IIS 的 FIFO 控制寄存器(IISFCON)
为了启动 IIS 操作,需要按照下列的步骤进行:
1) 通过 IISFCON 寄存器使能 FIFO 操作;
2) 通过 IISCON 寄存器使能 DMA 请求;
3) 通过 IISCON 寄存器启动 IIS 接口。 结束 IIS 操作,需要按照下述的步骤进行:
1) 禁止 FIFO,如果你想要发送保存在 FIFO 中的数据,你必须不要禁止 FIFO 并略过这一 步;
2) 通过 IISCON 寄存器来禁止 DMA 请求;
3) 通过 IISCON 寄存器来停止 IIS 接口。
IISFCON |
位 |
描述 |
初始化状态 |
发送 FIFO 操作模式 |
[11] |
0=普通操作模式 |
0 |
选择 |
|
1=DMA 操作模式 |
|
接收 FIFO 操作模式 选择 |
[10] |
0=普通操作模式 1=DMA 操作模式 |
0 |
发送 FIFO 使能 |
[9] |
0=FIFO 禁止 1=FIFO 使能 |
0 |
接收 FIFO 使能 |
[8] |
0=FIFO 禁止 1=FIFO 使能 |
0 |
发送 FIFO 数据计数 (只读) |
[7:4] |
数据计数值= 0-8 |
000 |
接收 FIFO 数据计数 (只读) |
[7:4] |
数据计数值= 0-8 |
000 |
IIS 的 FIFO 寄存器
IIS 总线接口包含两个 16 字节的 FIFO 分别用于发送和接收模式。每个 FIFO 具有 16 级宽度 和 8 级深度模式,允许 FIFO 以半字节为单元操作数据,忽略数据的尺寸。发送和接收 FIFO 操作是通过 FIFO 入口来进行的,入口地址是 0x01D19010。
IISFIF |
位 |
描述 |
初始化状态 |
FENTRY |
[15:0] |
IIS 发送/接收的数据 |
0 |