ajianyes 发表于 2018-8-10 09:45:03

STM32F429 DMA使用疑问

最近在使用STM32F429的DMA时候,发现一个问题,当多个外设都使用到同样的DMA_STREAM的时候,就会发生冲突(后面配置的DMA可用,前面配置的不能用),我用的USART6_TX用的是DMA2_Stream6通道5,TIM1_CC3使用的也是DMA2_Stream6,通道使用6,这两者理论上不应该产生冲突。
很少疑惑啊,求助各位!!!

feixiang20 发表于 2018-8-11 00:54:00

就像是407里先看DMA的物理结构, 8个channel共用一个stream,或者说每个stream包含8个channel。 同时开启多个stream是可行的,看结构也可行,内部会协调工作。但是针对一个stream应当不能同时开启多个channel,因为这里有8选一开关。 从配置寄存器也可以看出这一点。 所以,可能要等前面的channel完成后,再重新配置,选择其他channel。

ajianyes 发表于 2018-8-10 09:46:35

STM32的外设很多,我们在做项目的时候肯定时候能用DMA尽量用,如果这样会产生冲突那这些DMA的功能就无法全力施展开

MrJiu 发表于 2018-8-10 10:04:53

优先级了解一下。。。

ajianyes 发表于 2018-8-10 12:12:34

MrJiu 发表于 2018-8-10 10:04
优先级了解一下。。。

就是DMA的传输优先级设置这里么,我多设置成HIGH了,我改一下试试,谢谢

MrJiu 发表于 2018-8-10 14:02:41

ajianyes 发表于 2018-8-10 12:12
就是DMA的传输优先级设置这里么,我多设置成HIGH了,我改一下试试,谢谢

根据不同得要求,设置不同得优先级。。。设置同一个优先级,肯定会出现问题,当然了,不同的而优先级也只是保证了,优先级高的,具体什么情况,需要看资料!!!

ajianyes 发表于 2018-8-10 15:16:38

MrJiu 发表于 2018-8-10 14:02
根据不同得要求,设置不同得优先级。。。设置同一个优先级,肯定会出现问题,当然了,不同的而优先级也只 ...

嗯,就是DMA2_Steam6在USART6与TIM1_CH1输入捕获函数里面初始化了2次,从目前看来视乎DMA的每一个STREAM都只能对应一个外设,不能被其他的外设同时占用。

zengziwen 发表于 2018-8-11 15:09:41

支持

ajianyes 发表于 2018-8-13 08:46:27

feixiang20 发表于 2018-8-11 00:54
就像是407里先看DMA的物理结构, 8个channel共用一个stream,或者说每个stream包含8个channel。 同时开启多 ...

我自己查证了,确实每个STREAM只能打开一个通道,因为软件初始化就是针对DAM_STREAM的,
这样的话,这个F4系列的很多DMA只能错开使用了

ajianyes 发表于 2018-8-13 08:47:03

zengziwen 发表于 2018-8-11 15:09
支持

是的
页: [1] 2
查看完整版本: STM32F429 DMA使用疑问