我们遇到 DMA BTC 中断的问题。 我们有两个运行在不同 MIBSPI 上的外设、每个外设都使用 DMA 与外设之间传输数据。 两个外设传输中的一个从外部源异步触发、另一个由我们的软件触发、都使用 DMA BTC 中断来处理传输后的数据。 问题是、由于异步特性、我们在极少数情况下会同时触发两个 BTC 中断、 由于它来自相同的中断源、中断不会被请求、因此我们最终会丢失两个中断中的一个(它似乎总是具有较低 DMA 优先级的中断)。
是否有任何方法来处理这个问题 并防止 丢失中断? 我们已经尝试读取各种 DMA 寄存器来查看是否可以检查是否发生了多个中断、但至今未成功。 我们将在未来添加具有异步 DMA 的附加外设、因此我们更喜欢采用同样适用于两个以上冲突中断的通用解决方案。