[STM32F1]

为什么STM 手册描述 DMA:存储器到存储器模式不能与循环模式同时使用

[复制链接]
2391|23
手机看帖
扫描二维码
随时随地手机跟帖
会飞的大葱|  楼主 | 2021-6-21 13:27 | 显示全部楼层 |阅读模式
为什么STM 手册描述 DMA:存储器到存储器模式不能与循环模式同时使用
实际用ST片子测试,是可以使用

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 13:30 | 显示全部楼层
实际测试ST F103 硬件是支持这样使用的,不明白手册中为什么会有专门这样的描述
4862260d023a1e5fe6.png

使用特权

评论回复
sonicll| | 2021-6-21 13:34 | 显示全部楼层
配寄存器肯定是能配进去的,我的理解是,M2M和循环模式一起开,那DMA就会100%满负荷运行,不会再响应其他的DMA请求了,所以不建议这样用

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 13:44 | 显示全部楼层
sonicll 发表于 2021-6-21 13:34
配寄存器肯定是能配进去的,我的理解是,M2M和循环模式一起开,那DMA就会100%满负荷运行,不会再响应其他的 ...

将其他DMA请求的优先级配置比这个DMA请求的优先级高的情况下,就会响应其他DMA请求呀。
所以感觉不是你说的这个原因

使用特权

评论回复
sonicll| | 2021-6-21 13:49 | 显示全部楼层
会飞的大葱 发表于 2021-6-21 13:44
将其他DMA请求的优先级配置比这个DMA请求的优先级高的情况下,就会响应其他DMA请求呀。
所以感觉不是你说 ...

DMA的优先级,不像中断优先级那样有抢断,M2M+循环的话,只要使能这个通道,那就会不停的传输,完全没有任何空闲,其他DMA请求应该也不能打断

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 13:58 | 显示全部楼层
sonicll 发表于 2021-6-21 13:49
DMA的优先级,不像中断优先级那样有抢断,M2M+循环的话,只要使能这个通道,那就会不停的传输,完全没有 ...

那按照你的意思的话,
只要配置 M2M+循环,只要使能这个通道,即使该通道的优先级配置是最低,那其他DMA通道的请求就不会处理了是吗
实际测试:
即使其他通道优先级配置和 M2M+循环的这个优先级 一样,其他DMA通道的请求也会被响应,也会搬运数据。

使用特权

评论回复
sonicll| | 2021-6-21 14:07 | 显示全部楼层
会飞的大葱 发表于 2021-6-21 13:58
那按照你的意思的话,
只要配置 M2M+循环,只要使能这个通道,即使该通道的优先级配置是最低,那其他DMA ...

还真是,我自己也测了下,确实是你说的那样,是我想当然了。看看有没有ST官方人员来解释了

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 14:38 | 显示全部楼层
sonicll 发表于 2021-6-21 14:07
还真是,我自己也测了下,确实是你说的那样,是我想当然了。看看有没有ST官方人员来解释了 ...

搞不明白,明明好用,为啥手册还专门有这么一句话
会不会是 M2M+循环 这样操作,软件无法控制,所以ST不支持这样使用

使用特权

评论回复
zchong| | 2021-6-21 16:01 | 显示全部楼层
有点好奇,什么情况下会用到M2M+循环模式呢?

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 16:59 | 显示全部楼层
zchong 发表于 2021-6-21 16:01
有点好奇,什么情况下会用到M2M+循环模式呢?

具体我也不是很清楚,但是以下两种 情况我觉得可以用:
1、翻转GPIO持续输出波形。使用DMA 将数据搬运到GPIOx->BSRR, 使用M2M+循环可以实现,并且不占用CPU资源。
2、DAC持续输出波形。使用 DMA 搬运数据, 使用M2M+循环也可以实现。

使用特权

评论回复
香水城| | 2021-6-21 17:28 | 显示全部楼层
本帖最后由 香水城 于 2021-6-21 17:31 编辑

其實 在DMA傳輸中禁用的模式挺多的,並直接給出約定性描述,大多可以自行找到答案。有些地方或許介紹得不夠直接,那就按照手冊來吧:
3843060d05babe59de.png

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-21 17:39 | 显示全部楼层
香水城 发表于 2021-6-21 17:28
其實 在DMA傳輸中禁用的模式挺多的,並直接給出約定性描述,大多可以自行找到答案。有些地方或許介紹得不夠 ...

还是有疑问,手册中是描述了,这样禁用,但是软件这样配置后,实际是可以用的。
想知道,是从哪方面考虑的,才将这种的模式禁用

使用特权

评论回复
评论
会飞的大葱 2021-6-22 09:37 回复TA
@chunk : 做过以下几种实验: 情况1:Source 是sram memory ,Destination 也是sram memory 。 情况2:Source 是sram memory ,Destination 也是APB2 上外设的地址.eg: GPIOX->BSRR 。 情况3:Source 是APB2 上的外设的地址(eg:GPIOx->CHR) ,Destination 是sram memory。 情况4:Source 是AHB 上的外设的地址(eg: CRC->DR) ,Destination 是sram memory。 以上情况,M2M+循环都可以正常搬运数据 
chunk 2021-6-22 08:06 回复TA
香水城贴的图中提到了Source是AHB peripheral port,Destination是AHB memory port,这两项在你的测试过程中是怎么配置的? 
chunk| | 2021-6-22 10:02 | 显示全部楼层
我查了一下STM32F103的参考手册(RM0008),SRAM在总线矩阵中具有独立的总线,并不是附在AHB总线之下的,这可能是问题的原因所在。
ST在运用AHB时,只用它去接外设了,并没有同时用它接SRAM,所以没有DMA限制。

AHB-SRAM.jpg

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-22 10:11 | 显示全部楼层
chunk 发表于 2021-6-22 10:02
我查了一下STM32F103的参考手册(RM0008),SRAM在总线矩阵中具有独立的总线,并不是附在AHB总线之下的,这 ...

那这样的话,是不是可以 认为是手册描述的有问题,或者是有什么特殊的考虑,官方才这样写

STM32 F4 RAM也是在总线矩阵中具有独立的总线,不是附在AHB总线之下的吧

使用特权

评论回复
chunk| | 2021-6-22 10:21 | 显示全部楼层
会飞的大葱 发表于 2021-6-22 10:11
那这样的话,是不是可以 认为是手册描述的有问题,或者是有什么特殊的考虑,官方才这样写

STM32 F4 RAM ...

ST公司在设计DMA这部分线路时就有这样的限制,所以他就这样写了手册,他并没有逐个核对到底哪个产品线“中着儿”哪个产品线没有。F4的SRAM也是有独立总线的。

使用特权

评论回复
会飞的大葱|  楼主 | 2021-6-22 10:48 | 显示全部楼层
chunk 发表于 2021-6-22 10:21
ST公司在设计DMA这部分线路时就有这样的限制,所以他就这样写了手册,他并没有逐个核对到底哪个产品线“ ...

还是不太明白
1、ST 在设计DMA这部分线路有这样的限制。是指什么限制?
2、ST的 其他产品 SRAM在总线矩阵中应该都是具有独立的总线。
      "并没有逐个核对到底哪个产品线“中着儿”哪个产品线没有"   这个感觉不是很有说服力
3、按照你的意思的话,ST本来的设计是 SRAM附在AHB总线下吗?
     即使SRAM是附在AHB总线下,针对问题:存储器到存储器模式不能与循环模式同时使用 又有什么影响呢

使用特权

评论回复
chunk| | 2021-6-22 11:31 | 显示全部楼层
会飞的大葱 发表于 2021-6-22 10:48
还是不太明白
1、ST 在设计DMA这部分线路有这样的限制。是指什么限制?
2、ST的 其他产品 SRAM在总线矩阵 ...

编写芯片手册的人并不是实际设计芯片电路的人,他只是把手册的各个章节分派给相关的芯片设计人员,让他们去写,然后由他汇总。设计DMA的那个人肯定要写出DMA模块的局限性:“当外设和SRAM都接在AHB总线上时,如果使用M2M模式从外设向SRAM传送数据,就不能使用循环传输。” 他不会满公司的找人去问:“你的SRAM到底接在哪儿了?你要没接在AHB上我就把这条局限性删了。” 最后汇总手册的这个人,他更不会去核对这些细节了。

使用特权

评论回复
评论
chunk 2021-6-22 11:34 回复TA
总之现在的情况就是这样:DMA模块有那样一个局限性,但实际芯片恰好没那么做,所以芯片没有那个局限。至于芯片为啥没那么做?并不重要。 
会飞的大葱|  楼主 | 2021-6-22 13:26 | 显示全部楼层
chunk 发表于 2021-6-22 11:31
编写芯片手册的人并不是实际设计芯片电路的人,他只是把手册的各个章节分派给相关的芯片设计人员,让他们 ...

我明白你的意思

但是你所说的DMA的局限性
“当外设和SRAM都接在AHB总线上时,如果使用M2M模式从外设向SRAM传送数据,就不能使用循环传输。”

你为什么认为 当外设和SRAM都接在AHB总线上时,M2M模式从外设向SRAM传送数据,就不能使用循环传输,

即使SRAM接在AHB总线上,也不存在你说的局限性吧

使用特权

评论回复
评论
会飞的大葱 2021-6-22 14:50 回复TA
@chunk : 嗯。 我 我 这种问题,猜不出来答案 除了ST的该模块设计人员,估计ST的FAE都不一定知道 
chunk 2021-6-22 13:47 回复TA
硬件的设计也受很多因素制约,有时限于成本只能简化线路,使得线路的能力受限;有时是出了BUG但修改比较麻烦,干脆把BUG说成是局限,这都很难说。如果找不到那个真正设计出这个电路的工程师,这种问题通常是无解的。 
chunk 2021-6-22 13:40 回复TA
我根据香水城的贴图和我从STM32F103手册上的截图推测DMA有这样的局限性。是否真是这样要找ST公司具体负责设计芯片的工程师核实,基本上找这个工程师探讨是不可能的,而找其它人又是没用的,所以只能做罢。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

65

帖子

1

粉丝