mcbsp配置为uart,接收采用DSP/bios硬中断,发送放在任务线程,数据可以正确接收和发送。
问题1:未使能接收中断线程,只在 DSP uart 任务线程发送数据时,经常出现中断现象,中断后,数据不能继续发送。经调试,是如下代码出现问题:
old = HWI_disable();
timeout = 0;
// Wait for XRDY signal before writing data to DXR
response = 0;
while ((timeout++ < maxTimeout) && !(response & CSL_MCBSP_XRDY))
{
CSL_mcbspGetHwStatus(hMcbsp, CSL_MCBSP_QUERY_DEV_STATUS, &response);
}
if(timeout >= maxTimeout)
{
exit(1);//超时,跳到这里了,问题所在
}
HWI_restore(old);
HWI_enable();
但是,注释掉HWI_disable(); HWI_restore(old); HWI_enable(),后,程序不会出现查询状态为超时退出的情况。为何?
问题2:使能DSP接收中断后,pc发给DSP的数据速度过快时,会出现不能相应中断。此后,不能进入接收中断函数。
为何出现这种情况?求解^^