没有合适的资源?快使用搜索试试~ 我知道了~
armlinux学习笔记--IIS音频驱动程序分析(2)资料.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 155 浏览量
2021-11-09
03:11:13
上传
评论
收藏 60KB PDF 举报
温馨提示
试读
43页
armlinux学习笔记--IIS音频驱动程序分析(2)资料.pdf
资源推荐
资源详情
资源评论
//*******************************************************
//* 2007.7.9
//*******************************************************
IISCON = (IISCON_TX_DMA /* Transmit DMA service request */
|IISCON_RX_IDLE /* Receive Channel idle */
|IISCON_PRESCALE); /* IIS Prescaler Enable */ 设置 IIS 控制寄
存器,参考 S3C2410 芯片 datasheet 中关于 IIS 总线接口的章节, 具
体设置参数如下:
IISCON_TX_DMA = 1<<5 发送 DMA 服务请求使能选择, 设为 1 表
示使能发送 DMA 服务请求
IISCON_RX_IDLE = 1<<2 接收通道空闲命令, 设为 1 表示接收通道
空闲
IISCON_PRESCALE = 1<<1 IIS 预分频器使能选择,设为 1 表示使
能 IIS 预分频器
IISMOD = (IISMOD_SEL_MA /* Master mode */
| IISMOD_SEL_TX /* Transmit */
| IISMOD_CH_RIGHT /* Low for left channel */
| IISMOD_FMT_MSB /* MSB-justified format */
| IISMOD_BIT_16 /* Serial data bit/channel is 16 bit */
| IISMOD_FREQ_384 /* Master clock freq = 384 fs */
| IISMOD_SFREQ_32); /* 32 fs */
设置 IIS 模式寄存器,参考 S3C2410 芯片 datasheet 中关于 IIS 总
线接口的章节,具体设置参数如下:
IISMOD_SEL_MA = 0<<8 主从模式选择, 设为 0 表示选择主设备模
式,则 IISLRCK 和 IISCLK 引脚为输出模式
IISMOD_SEL_TX = 2<<6 发送接收模式选择,设为 2 表示选择发送
模式
IISMOD_CH_RIGHT = 0<<5 左右通道激活等级, 设为 0 表示左通道
为低,右通道为高
IISMOD_FMT_MSB = 1<<4 串行接口格式,设为 1 表示以最高位有
效位 MSB 为参考格式(即左对齐数据帧格式)
IISMOD_BIT_16 = 1<<3 每个通道串行数据位数, 设为 1 表示每个通
道 16 位数据
IISMOD_FREQ_384 = 1<<2 主设备时钟频率选择, 设为 1 表示 384fs
(fs 为采样频率)
IISMOD_SFREQ_32 = 1<<0 串行位时钟频率选择,设为 1 表示 32fs
IISFIFOC = (IISFCON_TX_DMA /* Transmit FIFO access mode:
DMA */
| IISFCON_TX_EN); /* Transmit FIFO enable */
设置 IIS FIFO 控制寄存器, 参考 S3C2410 芯片 datasheet 中关于
IIS 总线接口的章节,具体设置参数如下:
IISFCON_TX_DMA = 1<<15 发送 FIFO 存取模式选择, 设为 1 表示
为 DMA 模式
IISFCON_TX_EN = 1<<13 发送 FIFO 使能选择,设为 1 表示使能发
送 FIFO
IISCON |= IISCON_EN; /* IIS enable(start) */
再次设置 IIS 控制寄存器,参考 S3C2410 芯片 datasheet 中关于
IIS 总线接口的章节,具体设置参数如下:
IISCON_EN = 1<<0 IIS 接口使能选择,设为 1 表示使能 IIS 接口
------------------------------------------------------------------------
计算预分频值函数:
static int iispsr_value(int s_bit_clock, int sample_rate)
tmpval384 = s3c2410_get_bus_clk(GET_PCLK) / s_bit_clock;
S3C2410 主频 202M,它的 APH 总线频率是 202/4=50M,在经过
IIS 的 PSR(分频比例因子)得到的一个频率用于 IIS 时钟输出也可
以说是同步。
首先通过调用 s3c2410_get_bus_clk 函数来获得总线时钟, 然后除
以传入的频率参数,这里相当于:
APH/384 = N*fs
这里表示总线时钟进行 384 分频后的值。
其 中 s3c2410_get_bus_clk 及 相 关 函 数 在
/kernel/arch/arm/mach-s3c2410/cpu.c 文 件 和
/kernel/include/asm-arm/arch-s3c2410/cpu_s3c2410.h 文件中,这里不
再展开说明。
for (i = 0; i < 32; i++) {
tmpval = tmpval384/(i+1);
if (PCM_ABS((sample_rate - tmpval)) < tmpval384min) {
tmpval384min = PCM_ABS((sample_rate - tmpval));
prescaler = i;
}
}
配置预分频控制器 A 的值的范围是 0~31,所以这里 i 也从 0~
31。后面的算法就不太清楚了, 最后算出系统输出时钟为 384fs 和音
频采样频率 fs 为 44.1KHz 的情况下,所需要的预分频值,并返回。
------------------------------------------------------------------------
接 下 来 init_s3c2410_iis_bus_rx 函 数 与 前 面 的
init_s3c2410_iis_bus_tx 函数形式上也差不多:
static void init_s3c2410_iis_bus_rx(void)
IISCON = 0;
IISMOD = 0;
IISFIFOC = 0;
首先初始化 IIS 控制寄存器, IIS 模式寄存器和 IIS FIFO 控制寄
存器都为 0。
/* 44 KHz , 384fs */
IISPSR = (IISPSR_A(iispsr_value(S_CLOCK_FREQ, 44100))
| IISPSR_B(iispsr_value(S_CLOCK_FREQ, 44100)));
设置 IIS 预分频寄存器, 参考 S3C2410 芯片 datasheet 中关于 IIS
总线接口的章节,具体设置参数如下:
IISPSR_A(iispsr_value(S_CLOCK_FREQ, 44100)) =
IISPSR_A(iispsr_value(384, 44100)) = (一个 0~31 之间的值 )<<5 预
分频控制器 A,用于内部时钟块
IISPSR_B(iispsr_value(S_CLOCK_FREQ, 44100))) = (一个 0~31 之
间的值 )<<0 预分频控制器 B,用于外部时钟块
IISCON = (IISCON_RX_DMA /* Transmit DMA service
request */
|IISCON_TX_IDLE /* Receive Channel idle */
|IISCON_PRESCALE); /* IIS Prescaler Enable */
设置 IIS 控制寄存器,参考 S3C2410 芯片 datasheet 中关于 IIS 总
线接口的章节,具体设置参数如下:
IISCON_RX_DMA = 1<<4 接收 DMA 服务请求使能选择, 设为 1 表
示使能接收 DMA 服务请求
IISCON_TX_IDLE = 1<<3 发送通道空闲命令, 设为 1 表示发送通道
空闲
IISCON_PRESCALE = 1<<1 IIS 预分频器使能选择,设为 1 表示使
能 IIS 预分频器
IISMOD = (IISMOD_SEL_MA /* Master mode */
| IISMOD_SEL_RX /* Transmit */
剩余42页未读,继续阅读
资源评论
cyh76339129
- 粉丝: 1
- 资源: 14万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功