首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
ARM
» TQ2440的学习——IIS接口的使用
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
TQ2440的学习——IIS接口的使用
发短消息
加为好友
yuyang911220
当前离线
UID
1029342
帖子
9914
精华
0
积分
4959
阅读权限
90
在线时间
286 小时
注册时间
2014-5-22
最后登录
2017-7-24
论坛元老
UID
1029342
性别
男
1
#
打印
字体大小:
t
T
yuyang911220
发表于 2015-11-22 16:49
|
只看该作者
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)。
收藏
分享
评分
继承事业,薪火相传
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议