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使用UPP接收数据出现DPFI中断错误



我用OMAPL138的upp模块读取FPGA端发送过来的数据,UPP只用作接收,单通道75M运行。程序运行时,首先FPGA端给DSP中断,之后,DSP首先初始化UPP的三个参数值,即UPID0、UPID1、UPID2,之后UPP开始接收数据,接收完之后等待下一次FPGA端发送的中断。(两次中断间时间间隔为200微妙,UPP传输数据量为7200word,word为16bit,所以两次中断的时间间隔足够UPP接收完7200个16bit的数据),每次UPP都写入到同一个SDRAM地址范围内,但是运行过程中发现DPEI中断出现了,用计数器累加时,发现大部分都是DPEI中断,而EOWI中断数量却很少。如果在写UPID0、UPID1、UPID2寄存器前先用while(((CSL_UppReg->UPIS2) & 0x02) != 0x02)判断的话,这样不会出现DPEI中断了,但是得到的EOWI中断的数目要远远少于正常数目,也就是丢包了。时间,计算着完全够用。不知道咋回事。有知道的帮忙解答一下吧,谢谢啦

  • TO:shaotu zhu

    你尝试将通道频率降低试试。

    同时请问:你FPGA发送给DSP是不是硬件中断?该中断和EOWI中断的中断服务程序是如何注册到工程中去的?

    我的Email是lh_zou@163.com,可以发邮件技术交流

  • 降到了25MHZ,还是有错误,但是数量明显少了,原因应该是SDRAM速度读写跟不上,才会导致丢包现象的发生。

    FPGA发送给DSP的是硬件中断,但是EOWI中断是软中断,将UPP模块中对应的中断设置位打开就可以产生相应中断了,当UPP完成一帧数据接收,EOWI中断一次。

  • 我也注册了NMI中断(硬中断),和EOWI中断(软中断),但中断一直没有触发,不知道是不是中断服务程序没有成功注册的缘故,我现在用轮询接收upp数据,明显来不及接收,还得使用中断。能否将你的例程(含中断)发给我参考一下。谢谢了!

  •  kkkkkk=(Upp_handle->DPEI=1)     |

           ((Upp_handle->UORI=1)<<1)|

           ((Upp_handle->ERRI=1)<<2)|

           ((Upp_handle->EOWI=1)<<3)|

           ((Upp_handle->EOLI=0)<<4);

       CSL_UppReg->UPIEC &=0x0000;//先清除

         CSL_UppReg->UPIES=kkkkkk;

    你把对应的中断打开不行吗?我就是这样打开的中断,接收完一次会产生一次相应中断。

    还有一个就是进入了中断后,你要及时的清除对应的中断位,手册上有那部分程序的。你试试吧。