This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EVMK2G:McASP 时钟初始化延迟

Guru**** 2558250 points
Other Parts Discussed in Thread: AUDK2G

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/611248/evmk2g-mcasp-clock-initialization-delay

器件型号:EVMK2G

您好!

我目前正在使用 McASP 来驱动需要数据和帧同步时钟的 TDM 微电话的菊花链。  但是、我正在使用来自 MCASP 的接收时钟和帧同步、为了使麦克风正确初始化、我需要从接收时钟延迟至少10ms 或更多的帧同步开始。  目前、MCAASP 同时启用两个时钟、我想知道最好的方法是延迟这两个时钟。

 我正在研究 PDK 1.0.5软件包中提供的修改的 Audioloop 示例、该软件包位于:

pdk_k2g_1_0_5\packages/ti\addon/audk2g 

请提供任何提示。 谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知软件团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    弗朗西斯科

    在执行 McASP 初始化时、是否尝试在接收状态机从复位状态释放到使用 MCASP_GBCTL 中的 RFRST 释放接收帧同步发生器复位之前插入10ms 延迟。  

    if (CSL_FEXT (mcaspRegs->GBLCTL、MCASP_GBLCTL_RSMRST)!=CSL_MCASP_GBLCTL_RSMRST_ACTIVE){
    
    //开始接收串行时钟
    CSL_FINST (mcaspRegs->RCTL、MCASP_RCTL_RSMRST、ACTIVE);
    
    //在(
    CSL_FEXT (mcaspRegs->GBLCTL、MCASP_GBLCTL_RSMRST)!=CSL_MCASP_GBLCTL_RSMRST_ACTIVE)期间停止直到 GBLCTL 回读以确保它被逻辑锁存
    ;}
    
    //添加10ms 延迟 
    
    if (CSL_FEXT (mcaspRegs->GBLCTL、MCASP_GBLCTL_RFRST)!=CSL_MCASP_GBLCTL_RFRST_ACTIVE){
    //开始接收串行时钟
    CSL_FINST (mcaspRegs->RGBLCTL、MCBSP_RGBLCTL_RFRST、ACTIVE);
    
    //STALL 直到 GBLCTL 回读以确保其被逻辑锁存
    while (CSL_FEXT (mcaspRegs->GBLCTL、MCASP_GBLCTL_RFRST)!=CSL_MCASP_GBLCTL_RFRST_ACTIVE);
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rahul、

    谢谢您的回复、这正是我要尝试的操作。  但是,很抱歉,如果这很重要,我无法找到初始化的这一部分的确切定义位置。 什么驱动程序文件或它到底引用在哪里? 我似乎无法在提供的示例中找到它。   您能给我指正确的方向吗?  

    编辑: 我认为我在  McASP_drv.c 文件中的"McASP_localActivateSmFsForRcv"函数中找到了它。  感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、McASP_localActivateSmFsForBoth 应该是帧同步发生器从复位中释放出来的位置。 添加此延迟的其他函数是 McASP_localActivateSmFsForRcv

    mcaspBitSetGblCtl (instHandle、 
    (uint32_t)(MCASP_GBLCTLX_XSMRST_MASK |
    McASP_GBLCTLR_RSMRST_MASK);
    mcaspBitSetGblCtl (instHandle、mcaspBitSetGblCtl (instHandle、
    (uint32_t)(MCASP_GBLCTLX_XSMRST_MASK |
    McASP_GBLCTLR_RSMRST_MASK);
    //在此处添加延迟
    
    mcaspBitSetGblCtl (instHandle、
    (uint32_t)(MCASP_GBLCTLX_XFRST_MASK |
    McASP_GBLCTLR_RFRST_MASK);
    (uint32_t)(MCASP_GBLCTLX_XFRST_MASK |
    McASP_GBLCTLR_RFRST_MASK);