DMA就是一个搬运工,可以将数据从一个位置搬运到另一个位置。
以UART为例,如果要接收数据,会触发UART中断,然后CPU介入,在中断中通过CPU将UART输入寄存器的值读出来,存放到内存中;
而DMA方式,产生UART中断后,DMA直接参与,把UART输入寄存器的值搬运到内存中,CPU只需要在去检查内存的值就好了,这样提高了CPU的效率。
好处是不需要mcu花时间处理,自己控制数据块传输直到完成,这段时间mcu处理单元可以做其他事情。
想想看,当传输速度快的时候,dma就很有用了。