打印

DMA的几个细节问题,寻求权威解答

[复制链接]
3871|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chunxx|  楼主 | 2008-11-30 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要做个新板,有些问题不敢确定,在资料中翻来翻去,虽然每句话都认识,感觉就是找不到答案。请版主给予权威指引:
1. 用外部信号触发TIM捕捉,TIM触发DMA,延时时间最大是多少?类似DMA例程
的 Exmple3以GPIO为数据源的DMA方式,触发信号来自外部的CPLD,这样也就是两个触发沿之间的最小时间间隔是多少?
     另外,如果连续的两个触发沿之间时间过短,肯定会出错,在STM32这端
如何及时判断出错并停止?
2. TIM1时钟来自APB2,TIM2~TIM4时钟来自APB1,选择TIM1捕捉外部脉冲来触发,是否比TIM2~IM3速度快?因为外部是CPLD,一个时钟周期也是值得珍惜的。
3. 按理DMA不会影响CPU执行其他指令,但按体系结构看,DMA和CPU都读写RAM,要和CPU抢总线,这样是否降低其他指令的执行速度?降低的幅度有多大?
沙发
香水城| | 2008-11-30 15:53 | 只看该作者

关于DMA的几个细节问题

1)“用外部信号触发TIM捕捉,TIM触发DMA,延时时间最大是多少?”
这个问题没有准确答案,因为它要经过总线仲裁,考虑其它高优先权总线设备(CPU和其它DMA通道)的因素,延时时间需要根据当时的总线占用情况而定。
“两个触发沿之间的最小时间间隔是多少?”
输入捕获的两个触发沿之间的最小时间间隔是依据TIMx_CCMR寄存器的输入捕获滤波器(ICxF位)的配置。
“如果连续的两个触发沿之间时间过短,肯定会出错,在STM32这端如何及时判断出错并停止?”
在定时器状态寄存器TIMx_SR中有重复捕获标志(CCxOF)。

2)“TIM1时钟来自APB2,TIM2~TIM4时钟来自APB1,选择TIM1捕捉外部脉冲来触发,是否比TIM2~IM3速度快?”
不会。

3)“按理DMA不会影响CPU执行其他指令,但按体系结构看,DMA和CPU都读写RAM,要和CPU抢总线,这样是否降低其他指令的执行速度?降低的幅度有多大?”
当DMA占用总线的时候,如果CPU没有访问数据总线的操作,如取指令、内部计算等,则CPU的指令执行速度不受影响;如果正好有CPU读写RAM或外设的操作,需要使用数据总线,则指令执行速度会受影响。

使用特权

评论回复
板凳
chunxx|  楼主 | 2008-11-30 16:11 | 只看该作者

re

感谢香班主的解释,不过希望能够更清晰一些。
我希望预知的是最大延时,也就是以DMA的中断权限设到最高为前提的,它不会被其他中断打断;而CCMR的输入捕获滤波器肯定也是1个时钟即最高。因为是和CPLD同时设计,所以希望把每个时钟都尽可能掐准。
DMA和CPU同时读写内存时,DMA能阻止CPU的话,极限情况下是否就存在这样一种可能性:DMA批量传输时,CPU完全停止!包括GPIO读写。这样的话就得重新考虑一些隐藏的问题。  

使用特权

评论回复
地板
香水城| | 2008-11-30 17:53 | 只看该作者

你的问题涉及到芯片内部的具体实现,我现在没有确切答案

如果排除所有的中断、DMA优先级和CPU的影响,两次DMA传输之间的最短时间为10~12CPU周期,如果使用定时器的输入捕获,需要再增加2个周期的再同步时间。

如果考虑有中断的情况,需要再加上12个CPU周期的中断响应时间。

另外DMA不会阻止CPU的运行,否则就不需要仲裁机制,简单地抢夺总线即可。


这是目前即我所能可以给出的最详细的数据,如果你需要更加细致的数据,请直接与ST或代理商的技术人员联系。

使用特权

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

本版积分规则

427

主题

458

帖子

4

粉丝