CSR867x — 使用Sink Configruation Tool配置I2S输出

原文链接:转自码农兰博万(转载文章,若有不妥,通知后我会立即删除)

I2S总线规范 
在飞利浦公司的I2S标准中,既规定了硬件接口规范,也规定了数字音频数据的格式。 
I2S有3个主要信号 
1.串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有 1个脉冲。SCLK的频率=2×采样频率×采样位数。 
2. 帧时钟LRCK,(也称WS),用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。 
3. 串行数据SDATA,就是用二进制补码表示的音频数据。

串行数据(SD) 
  I2S格式的信号无论有多少位有效数据,数据的最高位总是出现在LRCK变化(也就是一帧开始)后的第2个SCLK脉冲处。这就使得接收端与发送端的有效位数可以不同。如果接收端能处理的有效位数少于发送端,可以放弃数据帧中多余的低位数据;如果接收端能处理的有效位数多于发送端,可以自行补足剩余的位。这种同步机制使得数字音频设备的互连更加方便,而且不会造成数据错位。 
  随着技术的发展,在统一的 I2S接口下,出现了多种不同的数据格式。根据SDATA数据相对于LRCK和SCLK的位置不同,分为左对齐(较少使用)、I2S格式(即飞利浦规定的格式)和右对齐(也叫日本格式、普通格式)。 
  为了保证数字音频信号的正确传输,发送端和接收端应该采用相同的数据格式和长度。当然,对I2S格式来说数据长度可以不同。 
     
字段(声道)选择(WS) 
 命令选择线表明了正在被传输的声道。 
 WS=1,表示正在传输的是左声道的数据。 
 WS=0,表示正在传输的是右声道的数据。 
 WS可以在串行时钟的上升沿或者下降沿发生改变,并且WS信号不需要一定是对称的。在从属装置端,WS在时钟信号的上升沿发生改变。WS总是在最高位传输前的一个时钟周期发生改变,这样可以使从属装置得到与被传输的串行数据同步的时间,并且使接收端存储当前的命令以及为下次的命令清除空间。 
电气规范: 
输出电压: 
  VL <0.4V 
  VH>2.4V 
输入电压 
  VIL=0.8V 
  VIH=2.0V 
   
注:目前使用的TTL电平标准,随着其他IC(LSI)的流行,其他电平也会支持。 
了解了以上I2S的基本知识; 
以下为ADK4.1 Configuration Tool上的I2S配置界面 

这里写图片描述

plugin Type : 指定I2S所需要的Plugin;

选项中包含三种类型分别是:USER Defined via PS KEYs USER35 USER36、SSM_2518 CSR I2S DEV Board、Customer develop plugin 
USER Defined via PS KEYs USER35 USER36 : 表示用USER35\USER36里面的数据pulgin。 
SSM_2518 CSR I2S DEV Board:表示用2518 的器件开发; 
Customer develop plugin:表示用用户自定义的开发plugin;

Master or slaver operation : 表示I2S做主或者做从; 
Left or Right justified I2S : 选择对齐方式选项有左对齐与右对齐;当然还有I2S对齐方式;以下为左对齐与右对齐方式; 
左对齐:数据为LRCK的第一个数据; 
右对齐:最后的数据与LRCK对齐;

LRCLK相当于采样率对应于CSR8670 输出引脚PCM_SYNC;

这里写图片描述

Justified data delay by 1 bit : 表示数据延时1bit; 
bit per smaple : 表示I2S输出数据的位数; 
Audio Input Resolution : 对应I2S输入的数据位;CSR8670无此功能;只有CSR8675\8676支持此功能; 
Audio Output Re-Sample Rate【HZ】: 表示输出采样率;要求至少44.1khz,如此处配置44.1khz,蓝牙PCM_SYNC引脚输出波形频率也为44.1Khz,相当于LRCLK; 
VoiceRe-smaple Rate[hz] : 表示语音输出的采样率,如果设置为0则不使能; 
Bit Clock Scaling factor : 指定I2S输出的位时钟频率;相当于因数N;而BCLK = FS*N ; FS表示输出采样率;比如:Audio Output Re-Sample Rate配置为48khz;Bit Clock Scaling factor配置为64;那么BCLK = 48 * 64 = 3072KHZ;此时钟对应于CSR8670的PCM_CLK;

关于I2S的配置代码 
在库文件夹下的CSR_i2s_audio_plugin.c中 
这里写图片描述

关于CSR8670 , I2S角色为主的配置方法: 
作主的时候注意,只有当CSR8670内部有Route相应的Source的时候才会有I2S波形输出,换句话说比如在(AUX,SPDIF)音源下的时候,I2S波形是可以正常输出的,但是如果没在任何音源的时候(如蓝牙播放歌曲然后暂停或者蓝牙通道没播放歌曲),那么此时I2S无数据输出;如果想用I2S的PCM_CLK作为外部的器件的主时钟就要注意了; 
这里写图片描述

角色为从: 
作从角色的时候,PCM_SYNC,PCM_CLK都由外部器件提供;

这里写图片描述

关于I2S的描述参考了以下博客 
I2S-Liuqz2009-ChinaUnix博客

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值