TCC79xx的BCLK和LRCK数值推算

//========================================================================
//TITLE:
//    TCC79xx的BCLK和LRCK数值推算
//AUTHOR:
//    norains
//DATE:
//    Tuesday 16-December-2008
//Environment:
//    TCC79XX
//========================================================================
    如果想为TCC79XX编写相应的音频驱动,我们首先要清楚知道IIS的MCLK,BCLK和LRCK的数值。最简单的方法自然是用示波器测量,但由于很多方面限制,这种方法测量出来的数值不一定是非常正确。更为恰当的方法是,我们根据BSP代码,比照相应的datasheet,推算出较为正确的数值。
   
    首先了解这三个变量代表的意思:
   
    MCLK:称为主时钟,也叫系统时钟(Sys Clock),是采样频率的256倍,384倍或512倍。
   
    BCLK:串行时钟SCLK,也叫位时钟
   
    LRCK:帧时钟,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。LRCK的频率等于采样频率。
   
    不过在TCC79XX中并没有直接明确设置这三个频率的寄存器,所以我们需要从代码中去需找相应的蛛丝马迹,看看默认的驱动的输出频率为多少。
   
    唯一我们能在代码中看到的频率设置是处于tcc_wave.c文件的tea_i2s_setclock函数:
    void tea_i2s_setclock(unsigned int ClockRate)
  {
   tca_ckc_com_setperi(PERI_DAI,KHz,11289,DIRECTPLL0);
  }

    根据datasheet,我们可以知道,在这里的PCK_DAI频率,其实就是IIS的MCLK频率,所以,我们首先可以确定:
    MCLK:11289KHZ
   
    和频率有关的寄存器,我们现在需要用到的是DAMR。查看BD[7:6]字段,数值为0.
   
    关于BD的字段,文档说明如下:
  00  Select Div 4 ( 256fs->64fs )
  01  Select Div 6 ( 384fs->64fs )
  10  Select Div 8 ( 512fs->64fs, 384fs->48fs , 256fs->32fs)
  11  Select Div16 ( 512fs->32fs )
  
  也就是说,现在MCLK是11289KHZ,是采样频率的256倍。换而言之,采样频率就是: 11289/256= 44.09765625KHZ。
  
  而LRCK就相当于采样频率,所以LRCK的数值也就确定了:
  LRCK:44.09765625KHZ
  
  现在BD段的数值为0,等于该数值时,BCLK相当于采样频率的64倍:44.09765625*64=2822.25KHZ。
  
  所以,BCLK的数值为:
  BCLK:2822.25KHZ
  
  只要确定了MCLK,BCLK和LRCK之后,剩下的音频芯片调试就简单多了,在此就不再详述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值