打印

请教F1和F2/4的DMA传输问题

[复制链接]
1528|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seanwood|  楼主 | 2012-4-25 16:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 seanwood 于 2012-4-25 17:21 编辑

初步了解了一下DMA,请问以下认识对吗?

--------------------------------
F1的DMA有8个channel,有优先级。每个channel有3~5个触发源。每个触发源是或门关系。
channel的优先级是不是指:比如USART和ADC的DMA请求同时来,那就按channel的优先级来触发传输?
这些channel就象中断一样,是能同时用,只是有触发后的优先级问题,或许会被延后,但不会被丢失?

同个channel的几个触发源是或门关系,是不是指这些触发源不能同时使用这个channel?因为看到配置DMA时,每个channel只有一套DMA_PeripheralBaseAddr、MemoryBaseAddr之类的寄存器。

--------------------------------
F2/4的DMA有8个stream,每个stream有FIFO。每个stream有8个req_ch,还有通道选择器。

req_ch就是原先F1的触发源吧?只不过把或门换成了通道选择器,但还是不能同时用吧?因为DMA_PeripheralBaseAddr、MemoryBaseAddr之类的寄存器好像还是只有一套。

stream就是F1的channel?
stream通道FIFO想不到有什么用。我觉得req_ch只能通过通道选择器选择1个源,除非这个req_ch触发了一次stream传输后,在该次stream传输结束前,又触发了另一次传输。那么有FIFO可以不会丢弃后面那次触发。
是这样的吗?但是这种情况应该已经超出了设计的预想范围,属于有bug了吧?
--------------------------------

比如使用USART的TX DMA,想要发送10个字节。
启用了DMA ENABLE后开始传输,那个F1的触发源(F2/4的req_ch),是每个传输单位(比如每字节)触发一次,总共10次?还是启动时只触发了一次?





有高手可以解答一下吗?非常感谢
沙发
seanwood|  楼主 | 2012-4-26 10:56 | 只看该作者
香版主在吗?能指点一些吗

使用特权

评论回复
板凳
香水城| | 2012-4-26 11:22 | 只看该作者
LZ不必问这么多问题,其实你在问问题的时候已经有答案了。你只要自己反问一句,如果这些问题的答案是否定的,结果会怎样;这就是常见的推理的方法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝