请问STM32F407的DMA一个数据流可以同时为两个外设打开么

2019-07-20 08:09发布

比如我要用到DMA1的数据流3中的SPI2 RX又要用到UART3_TX,我可以初始化的时候把这两个都设置到数据流三的通道0和通道4吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xuande
1楼-- · 2019-07-20 10:54

1、先看下DMA的物理结构,
8个channel共用一个stream,或者说每个stream包含8个channel。



2、同时开启多个stream是可行的,我成功实践过,看结构也可行。(内部自会协调工作)
    但,针对一个stream应当不能同时开启多个channel,因为这里有8选一开关。
   从配置寄存器也可以看出这一点。
  所以,可能要等前面的channel完成后,再重新配置,选择其他channel。



3、如果是我,就想办法把它们错开到不同的stream。


4、如果遇到不能错开的情况,就考虑其他可能性。比如放弃USART3、改用其他串口,放弃SPI2、改用其他SPI。硬件也要相应改动。


suebillt
2楼-- · 2019-07-20 11:32
 精彩回答 2  元偷偷看……
xuande
3楼-- · 2019-07-20 15:34
 精彩回答 2  元偷偷看……
suebillt
4楼-- · 2019-07-20 21:27
回复【4楼】xuande:
---------------------------------
好的,谢谢,为啥说阿莫是烂货?
suebillt
5楼-- · 2019-07-21 01:08
 精彩回答 2  元偷偷看……
爱不孤单
6楼-- · 2019-07-21 03:02
suebillt 发表于 2015-12-21 17:48
回复【4楼】xuande:
---------------------------------
你好,我在用串口空闲中断配合DMA双缓冲的时候出现 ...

我觉着即使消息被分割了亦可以组成一起的;而且在数据量大的时候,双缓冲还算是个不错的方法。

一周热门 更多>