STM32F429 DMA使用疑问
最近在使用STM32F429的DMA时候,发现一个问题,当多个外设都使用到同样的DMA_STREAM的时候,就会发生冲突(后面配置的DMA可用,前面配置的不能用),我用的USART6_TX用的是DMA2_Stream6通道5,TIM1_CC3使用的也是DMA2_Stream6,通道使用6,这两者理论上不应该产生冲突。很少疑惑啊,求助各位!!!
就像是407里先看DMA的物理结构, 8个channel共用一个stream,或者说每个stream包含8个channel。 同时开启多个stream是可行的,看结构也可行,内部会协调工作。但是针对一个stream应当不能同时开启多个channel,因为这里有8选一开关。 从配置寄存器也可以看出这一点。 所以,可能要等前面的channel完成后,再重新配置,选择其他channel。 STM32的外设很多,我们在做项目的时候肯定时候能用DMA尽量用,如果这样会产生冲突那这些DMA的功能就无法全力施展开 优先级了解一下。。。 MrJiu 发表于 2018-8-10 10:04
优先级了解一下。。。
就是DMA的传输优先级设置这里么,我多设置成HIGH了,我改一下试试,谢谢 ajianyes 发表于 2018-8-10 12:12
就是DMA的传输优先级设置这里么,我多设置成HIGH了,我改一下试试,谢谢
根据不同得要求,设置不同得优先级。。。设置同一个优先级,肯定会出现问题,当然了,不同的而优先级也只是保证了,优先级高的,具体什么情况,需要看资料!!! MrJiu 发表于 2018-8-10 14:02
根据不同得要求,设置不同得优先级。。。设置同一个优先级,肯定会出现问题,当然了,不同的而优先级也只 ...
嗯,就是DMA2_Steam6在USART6与TIM1_CH1输入捕获函数里面初始化了2次,从目前看来视乎DMA的每一个STREAM都只能对应一个外设,不能被其他的外设同时占用。 支持 feixiang20 发表于 2018-8-11 00:54
就像是407里先看DMA的物理结构, 8个channel共用一个stream,或者说每个stream包含8个channel。 同时开启多 ...
我自己查证了,确实每个STREAM只能打开一个通道,因为软件初始化就是针对DAM_STREAM的,
这样的话,这个F4系列的很多DMA只能错开使用了 zengziwen 发表于 2018-8-11 15:09
支持
是的
页:
[1]
2