I2C是通讯协议,就是MCU对外用来通讯的。和USART,SPI,CAN这种一样,而dma是MCU内部的一个功能部件,叫直接存储器访问,用于外设和存储器或者存储器与存储器之间的数据传输。DMA的目的是在无需CPU控制的情况下快速移动数据。

举个例子,我刚做的一个应用。CPU先控制ADC进行采样,然后将采样数据发送给上位机。那我CPU和上位机之间就是通过串口进行连接,DMA没有办法连接到外面。然后我由于采样频率特别高,然后我采集到的数据还得计算,这样的话,整个流程就是:采集数据—处理数据—传输数据,这样循环。前面说了,我这个频率特别高,那这样一个流程下来是需要时间的,频率就受限制了。那这时候我就使用DMA,在处理数据之后,数据保存在flash中,这时候传输数据就可以用DMA来控制,DMA从flash中取出数据,放到USART的发送缓存中,这样就不用CPU进行控制了,CPU就处理完数据后返回采集数据就行,就能有效提高频率。

一般DMA可以配合I2C,SPI,USART等等进行操作,也可以脱离这些,单纯从一块flash搬运到另一块flash,DMA的主要目的是减少CPU的参与,使CPU有更多时间去做别的事。DMA就一控制器,没有办法与外部进行连接。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查