• TI tlv320aic3104 codec调试之DAI


    参考资料

    https://www.cnblogs.com/bobfly1984/p/14277682.html

    codec DAI介绍

    lv320aic3104 codec DAI支持 left-justified 、right-justified、I2S、DSP、TDM操作模式。这些模式都是MSB-FIRST。

    WCLK定义一个帧的开始,通过编程实现脉冲信号或矩形波信号。其频率对应ADC/DAC采样率。
    BCLK用于在数据线DIN/DOUT上输入和输出数据。

    TDM模式是在DSP A/B模式基础上通过修改offset寄存器实现。当offset等于0时,从信号时序角度看TDM模式就是DSP A/B模式,换句话说DSP A/B模式其实是TDM模式的特例。

    offset就是在每帧里数据开始有效对应的bit clock。
    

    在TDM模式里支持和标准电话PCM接口通信,标准电话PCM接口采用DSP A模式。codec的DSP模式其实就是 DSP B模式。在DSP B模式下修改offset实现DSP A模式。

    codec DAI时序

    1:Right-Justified Mode

    2:Left-Justified Mode

    3:I2S Mode

    4:DSP Mode
    每个数据在bit clock的下降沿有效。

    5:TDM数据传输模式

    TDM模式

    基于DSP A/B模式,通过修改可编程的offset实现TDM数据传输。offset就是在每个帧内数据开始有效对应的bit clock。

    对于输出数据而言,除了输出有效数据到DOUT 期间,在剩余bit clocks期间DOUT可以编程为高阻抗状态,这允许多个codecs
    通过编程不同的offset在共享的DOUT line上输出数据,每个codec数据只是在不同的slot时隙上。
    对于输入数据而言,codec只关注offset指定的数据,忽略其它bit clock期间的数据。

    从代码角度看DSP B模式如何转化成DSP A模式或TDM模式

    codec的datasheet如下所示,这个DSP 模式从信号时序看就是DSP B模式。


    上面参数中width参数就是slot占用的bits数,tdm_delay参数代表第几个slot,delay参数就是上面说的offset。
    width和tdm_delay参数是通过回调函数set_tdm_slot()设置的,当tdm_delay参数等于0时,默认就是DSP B模式。基于DSP B模式延迟一个bit clock就是DSP A模式。
    tdm_delay参数决定了数据在哪个slot上有效。

    时钟是否翻转

    从代码确认codec在DSP A/B模式下仅仅支持 SND_SOC_DAIFMT_IB_NF。这个宏的详细描述如下所示:

    可见codec在DSP A/B模式下,仅仅支持数据在BCLK的下降沿有效。

    mdm9x07平台 pcm接口时序

    通过示波器测量,PCM接口master和slave模式在波形上是一样的。同时 frame format是DSP A模式,信号极性是SND_SOC_DAIFMT_IB_NF。

    1:master mode

    2:slave mode

    mdm9x7平台 TDM接口时序


    TMD 接口格式支持不同的frame sync 模式:one slot、short、long。

    codec DAI实现方案

    基于TI tlv320aic3104 codec调试之clock这篇博客的分析,确认cpu需要通过pcm接口和codec dai进行通信。通过上面分析cpu pcm接口工作在DSP A模式,因此配置codec dai工作在DSP A模式即可,同时信号极性是SND_SOC_DAIFMT_IB_NF。

    为简单实现,通过machine驱动定义的be_hw_params_fixup()回调函数实现保持后端CPU DAI和codec DAI的hw params 固定不变,即设置采样率16k,采样精度16bit,声道数1。
    由于DAI配置为PCM接口,采样率只能设置为16K和8K,如果要动态切换cpu和codec的hw params,必须在audio或voice use case开始前设置。

  • 相关阅读:
    2014-04-23 总结
    14-5-13
    PHP
    14-5-8
    ajax
    14-5-6
    14-5-5
    PHP初解
    14-4-30
    14-4-29
  • 原文地址:https://www.cnblogs.com/bobfly1984/p/14346084.html
Copyright © 2020-2023  润新知