run 在 CAN的DMA 是否会在 SPI DMA运行时有概率出现无法进入DMA中断现象,无法进入CAN DMA接收完成中断 中说:
曹文勋 在 CAN的DMA 是否会在 SPI DMA运行时有概率出现无法进入DMA中断现象,无法进入CAN DMA接收完成中断 中说:
我看你也是做了临界区的判断,这个是新的patch嘛,
请教一下下面的操作是做什么用处?
while ((base->CTRL & DMA_CTRL_ACTIVE_MASK) != 0)
{
timeout--;
if (timeout <= 0)
{
break;
}
}
看描述的现象确实像临界区设置被重入出的问题。
这个修改主要是DMA REQEN 可以硬件清除,所以读 / 更改 / 写操作可能会导致错误地再次启用DMA通道。
如果是CAN的接收的话,可能会再次启动接收。
SDK 1_3_1 HOTFIX 版本中有做修复。
如果不是这里的问题,可以再看看是不是其他地方临界区被重入了。
收到,感谢