多个DMA可以同时使用,UART发送的DMA的每次传输(1字节)是依靠UART的SR.TXE和CR3.DMAT位“相与”来触发的。当相与的结果为1时,该DMA通道会去申请数据总线,如果此时总线空闲(没有CPU访问存储,没有其它DMA正在传输,没有其它高优先级的DMA也在申请总线),那么总线仲裁将通过该申请,然后该DMA通道将从内存传输1字节到UART.DR,然后释放总线;如果总线正忙(被CPU或其它DMA占用),那么DMA会等待总线空闲。
实际上每次DMA传输所消耗的时间非常短,所占用总线的时间也非常短,所带来的开销基本可以忽略。
至于你描述的uart的情况,应该是其它的原因。
|