您好!
我目前正在使用 McASP 来驱动需要数据和帧同步时钟的 TDM 微电话的菊花链。 但是、我正在使用来自 MCASP 的接收时钟和帧同步、为了使麦克风正确初始化、我需要从接收时钟延迟至少10ms 或更多的帧同步开始。 目前、MCAASP 同时启用两个时钟、我想知道最好的方法是延迟这两个时钟。
我正在研究 PDK 1.0.5软件包中提供的修改的 Audioloop 示例、该软件包位于:
pdk_k2g_1_0_5\packages/ti\addon/audk2g
请提供任何提示。 谢谢!
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.
您好!
我目前正在使用 McASP 来驱动需要数据和帧同步时钟的 TDM 微电话的菊花链。 但是、我正在使用来自 MCASP 的接收时钟和帧同步、为了使麦克风正确初始化、我需要从接收时钟延迟至少10ms 或更多的帧同步开始。 目前、MCAASP 同时启用两个时钟、我想知道最好的方法是延迟这两个时钟。
我正在研究 PDK 1.0.5软件包中提供的修改的 Audioloop 示例、该软件包位于:
pdk_k2g_1_0_5\packages/ti\addon/audk2g
请提供任何提示。 谢谢!
弗朗西斯科
在执行 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);