SAM4S - DMA 是时间决定论者吗?

SAM4S - Is DMA determinist in time ?

我正在使用 SAM4SD16C 的 DMA(在数据表中描述为 PDC)和 USART 0 外设。 我设置了一个定时器,每毫秒产生一个中断。每 5 毫秒应通过 DMA 执行一次数据传输。 当 TXEMPTY 标志被设置时,另一个中断应该发生。

为了查看传输何时开始和结束,我切换了一个输出并在示波器上观察它。然后我意识到接收结束时间有 20 µs 的变化(我的主时钟是 120MHz)……这在我的项目中是不可接受的。同时,传输的开始是100ns的精度,所以这一点没有问题。

我想知道是否有办法更好地控制 DMA 时间传输。

正如上面评论中所讨论的,接收结束时刻的不精确是由于波特率值造成的。这种不精确与波特率周期有关,可能还有额外的总线空闲时间。