根据cpu是否忙碌,比如cpu需要做许多事情,忙不过来,就可以考虑用dma辅助传输数据,但程序设计稍微复杂,要求dma传输成块数据,如果数据量小且零碎,可以考虑用中断传输,但比dma占用cpu要多,轮询方式IO传输要占用更多的cpu时间,在简单程序设计场合可以使用.
能用dma就尽量用dma的方式,cpu访问io的速度是比较慢的。轮询的话占用cpu的资源太多无论从省电还是执行效率来说都不是一个太好的选择。另外现在的dma还支持dma串,这样地址不连续的多组数据也可以通过寄存器配置让dma来依次做数据搬移。