[其他ST产品] STM32F4 DMA设置是什么意思?

[复制链接]
 楼主| probedog 发表于 2023-7-26 10:10 | 显示全部楼层 |阅读模式
使用STM32F4 的dma
DMA_InitStructure.DMA_MemoryBurst;
DMA_InitStructure.DMA_PeripheralBurst ;


首先这两个设置是什么意思?
这两个我看例程都是设置为DMA_MemoryBurst_Single 和 DMA_PeripheralBurst_Single  
那么,DMA_MemoryBurst_INC4 和 DMA_PeripheralBurst_INC4  或者更多的 INC8和INC16  在什么时候使用,在什么情况下使用
香水城 发表于 2023-7-26 10:39 | 显示全部楼层
DMA BURST传输往往要结合FIFO,主要用在源端、目的端数据宽度不一致时可以适当打包、拆包数据。

建议找个实际通信外设体验下,这样理解起来快。

STM32带FIFO的DMA传输应用示例
鱿鱼丝 发表于 2023-7-26 12:15 | 显示全部楼层
在STM32F4系列的微控制器中,DMA(Direct Memory Access)控制器允许数据在外设和存储器之间直接传输,无需CPU干预,从而提高数据传输的效率。DMA_MemoryBurst和DMA_PeripheralBurst是两个与DMA传输中突发传输(Burst Transfer)相关的设置。


DMA_MemoryBurst:


这个设置定义了DMA在一个传输请求期间从存储器执行的传输突发大小。也就是说,DMA可以在一个请求期间连续传输多少个数据。
常用的选项有:
DMA_MemoryBurst_Single:每个请求期间只传输一个数据。
DMA_MemoryBurst_INC4:每个请求期间传输4个连续数据。其他类似的选项还有DMA_MemoryBurst_INC8和DMA_MemoryBurst_INC16,分别表示每个请求期间传输8个和16个连续数据。
DMA_PeripheralBurst:


这个设置定义了DMA在一个传输请求期间从外设执行的传输突发大小。也就是说,DMA可以在一个请求期间连续传输多少个数据从外设读取或写入。
常用的选项与DMA_MemoryBurst类似,包括DMA_PeripheralBurst_Single、DMA_PeripheralBurst_INC4、DMA_PeripheralBurst_INC8和DMA_PeripheralBurst_INC16。
这两个设置与外设和存储器的性能以及传输要求有关。通常情况下,Single选项对于大多数应用足够,因为它们可以减少DMA传输期间可能出现的冲突和复杂性。但是,如果你的外设或存储器支持更大的传输突发大小,并且你的应用程序可以从中受益,你可以尝试使用INC4、INC8或INC16等选项,以提高传输效率。


在选择使用哪种传输突发大小时,需要考虑以下因素:


外设和存储器的数据带宽和处理能力。
数据传输的实际需求和模式,例如你的应用程序可能需要一次性传输多个连续的数据块。
总结起来,如果你的应用程序中有特定的需求或优化目标,并且你的外设和存储器支持较大的传输突发大小,那么你可以尝试使用INC4、INC8或INC16选项,否则使用Single选项通常是一个稳妥的选择。在实际应用中,你可以根据性能评估和测试来确定最适合你的场景的设置。

白马过平川 发表于 2023-8-13 17:41 | 显示全部楼层
DMA_MemoryBurst 和 DMA_PeripheralBurst 是用于配置DMA传输中的内存突发和外设突发的参数
dingy 发表于 2023-8-13 18:21 | 显示全部楼层
外设和存储器的数据带宽和处理能力可以解释下吗
风凉 发表于 2023-8-13 19:22 | 显示全部楼层
一般就默认就行吧,就是DMA的一种配置

捧一束彼岸花 发表于 2023-8-13 21:22 | 显示全部楼层
DMA_MemoryBurst 是用于配置DMA传输期间内存的突发传输长度。可以配置成单次传输、4个字节连续传输、8个字节连续传输、164个字节连续传输

春日负喧 发表于 2023-8-13 23:45 | 显示全部楼层
DMA_PeripheralBurst 是用于配置DMA传输期间外设的突发传输长度

故意相遇 发表于 2023-8-14 03:16 | 显示全部楼层
其实就是为了配置好DMA,然后方便开发者传输数据

将爱藏于深海 发表于 2023-8-14 09:11 | 显示全部楼层
一个是内存一个是外设,所以区分好哦

她已醉 发表于 2023-8-14 11:26 | 显示全部楼层
合理选择 DMA_MemoryBurst DMA_PeripheralBurst 的参数值,可以根据具体的应用需求和硬件特性来平衡传输效率和系统负载。

她已醉 发表于 2023-8-14 11:26 | 显示全部楼层
合理选择 DMA_MemoryBurst DMA_PeripheralBurst 的参数值,可以根据具体的应用需求和硬件特性来平衡传输效率和系统负载。

温室雏菊 发表于 2023-8-14 13:14 | 显示全部楼层
这些参数的选择取决于你的具体应用需求和硬件特性。通过设置合适的突发传输长度,可以提高DMA传输的效率和性能。

失物招領 发表于 2023-8-14 13:54 | 显示全部楼层
突发传输是指在一次DMA传输中连续传输多个数据。通过增加突发传输长度,可以减少DMA传输的开销和延迟,从而提高传输效率。然而,较大的突发传输长度可能会导致更高的内存访问负载和占用更多的总线带宽。

我吃小朋友 发表于 2023-8-14 15:26 | 显示全部楼层
外设突发传输的目的是减少外设和DMA之间的传输延迟,提高数据传输的效率。同样,较大的突发传输长度可能会增加外设的负载和占用更多的总线带宽。

Undshing 发表于 2023-8-14 23:48 | 显示全部楼层
找一个例程体验一下试试呗
Mowergy 发表于 2023-10-21 15:00 | 显示全部楼层
这些参数的选择取决于你的具体应用需求和硬件特性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

486

主题

3268

帖子

4

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