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.
大家好,目前我遇到了一个棘手的问题,希望大家帮助。利用omapl138与tlv320aic29接口连接且omapl138做主设备。mcasp的配置大概如下:配置为I2S的TDM模式,采样率为12k,完全按照手册配置流程进行的配置,edma利用外围配置端口访问mcasp,采用的是AB同步方式搬移数据,CCNT的长度初值为1280。
mcasp0regs->GBLCTL = 0x00000000;
mcasp0regs->RMASK= 0xFFFF;
mcasp0regs->RFMT=0x00018078;
(1-bit延时;高位在前;单元大小为16位;外围配置端口;不旋转)
mcasp0regs->AFSRCTL=0x00000102;
(I2S模式;单个位;内部产生帧同步;上升沿)
mcasp0regs->ACLKRCTL=0x00000029;
(下降沿移出数据;内部接收时钟源;10分频)
mcasp0regs->AHCLKRCTL=0x00008004;
(内部接收高频时钟源;不反相;5分频)
mcasp0regs->RTDM=0x00000001;
(一个slot有效)
mcasp0regs->RCLKCHK = 0x00FF0008;
mcasp0regs->REVTCTL=0x00000000;
(EDMA接收数据请求使能)
mcasp0regs->XMASK= 0xFFFF;
mcasp0regs->XFMT=0x0001807C;
(1-bit延时;高位在前;单元大小为16位;外围配置端口;右旋位数为16位)
mcasp0regs->AFSXCTL=0x00000102;
(I2S模式;单个位;内部产生帧同步;上升沿)
mcasp0regs->ACLKXCTL=0x00000029;
(上升沿移出数据;发送接收同步;内部发射时钟源;10分频)
mcasp0regs->AHCLKXCTL=0x00008004;
(内部发送高频时钟;不反相;5分频)
mcasp0regs->XTDM=0x00000003;
(I2S模式)
mcasp0regs->XCLKCHK = 0x00FF0008;
mcasp0regs->XEVTCTL=0x00000000;
(EDMA发送数据请求使能)
mcasp0regs->PFUNC = 0x00000000;
mcasp0regs->PDIR = 0x1C004000;
mcasp0regs->DITCTL = 0x00000000;
mcasp0regs->DLBCTL = 0x00000000;
mcasp0regs->AMUTE = 0x00000000;
其中串行器14配置为发射,串行器15配置为接收。
程序刚开始可以正常运行,发射和接收均能正常工作,但是静置一段时间(大概两天时间),发现mcasp的发射异常,XSTAT显示underrun错误,同时XDATA位被置位,但是edma已经不再搬移数据。同时EDMA计数器CCNT的值既不是0也不是1280,而是停留在了一个中间值500。mcasp的接收不受影响可以正常工作。求助大神帮忙分析一下可能是什么原因造成的这种现象。