[N32G45x] 多个模块使用同一DMA时是否会影响数据传输效率

[复制链接]
549|0
 楼主| 画个朴昧 发表于 2022-11-30 14:22 | 显示全部楼层 |阅读模式
  需要大数据搬移场景下,大家都会首选使用DMA进行数据传输,如果多个模块都在使用DMA传输数据,相互之间会存在影响吗?
  DMA通道呈矩阵式分布,当DMA多通道都在进行数据传输时,首先会根据通道优先级传输高优先级通道数据,此时若有其他通道请求,会在高优先级通道连续采集3~5个长度后再把DMA资源分配给下一个通道,响应会秉承轮询原则进行传输。
  当一些应用中出现ADC、USART、SPI等多个模块都需要使用DMA传输数据,且会存在并行请求情况,此时DMA的效率会有所下降,单位时间内,各模块传输的数据量会有所减少。有些应用场景中有对单位时间传输数据有严格要求,此时可以让有冲突的模块使用两个不同的DMA,例ADC使用DMA1,USART使用DMA2,这种配置下两个DMA传输效率不会有影响。
  同时DMA的传输效率也与CPU任务量有关,CPU任务量越大,分给DMA的带宽会越小,理论是主频的一半。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

47

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部