完全使用官方C:\ti\C6748_StarterWare_1_20_04_01 里的demo程序初始化McASP时
void main(){
…
/* Configure the McASP for I2S */
McASPI2SConfigure();
/* Activate the audio transmission and reception */ I2SDataTxRxActivate(); //执行到此处停止!
}
跟踪进入
/* Activate the serializers */
void McASPRxSerActivate(unsigned int baseAddr)
{
HWREG(baseAddr + MCASP_RSTAT) = 0xFFFF;
/* Release transmit serializers from reset*/
HWREG(baseAddr + MCASP_GBLCTL) |= MCASP_GBLCTL_RSRCLR; while((HWREG(baseAddr + MCASP_GBLCTL) & MCASP_GBLCTL_RSRCLR) != MCASP_GBLCTL_RSRCLR) ;
}
在while这死循环了?查看寄存器 在执行 HWREG(baseAddr + MCASP_GBLCTL) |= MCASP_GBLCTL_RSRCLR; 后 GBLCTL 没变化,但XGBLCTL和RGBLCTL置位了。
之后我把main()里其他的全部注释掉,只初始化McASP也是如此。
Tony Tang:
这没什么道理吧:XGBLCTL和RGBLCTL置位了,而GBLCTL 没变化,他们反映的是同一个bit的状态啊。这些程序都是被人参考过千百回的了,你是在自己的板子上,还是EVM板上跑的?程序前面有没有PSC使能mcasp的步骤?
在memory view里看mcasp的寄存器都有值吗?还是全0?
user5324036:
问题解决了吗