OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3934|回复: 11

stm32三重adc规则同时模式dma是怎么工作的?

[复制链接]

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
发表于 2020-6-1 16:34:34 | 显示全部楼层 |阅读模式
1金钱
手册里说会产生3个dma请求将ADC_CDR寄存器中的数据传到SRAM,但是adc采样后的数据不是放在ADC_DR寄存器中吗,那这个dma请求到底是从哪传的呢?然后就是三重adc假设分辨率都是12位,ADC_CDR寄存器32位也存不下三个采样值啊,这个dma到底是怎么工作的啊,还请大佬讲解一下?

最佳答案

查看完整内容[请看2#楼]

ADC采集是同时的,但是搬运不是同时的。三重ADC的意思是三个ADC同时采集,采集完成后放在各自的ADC_DR寄存器中,在DMA搬运的时候,是通过ADC_CDR寄存器去读取三个转换完成的结果,先读取ADC1,再读取ADC2,最后读取ADC3。在三个ADC下次完成转换之前,DMA会将这三个数据搬运完成,保证三重ADC的同时采集。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-6-1 16:34:35 | 显示全部楼层
ADC采集是同时的,但是搬运不是同时的。三重ADC的意思是三个ADC同时采集,采集完成后放在各自的ADC_DR寄存器中,在DMA搬运的时候,是通过ADC_CDR寄存器去读取三个转换完成的结果,先读取ADC1,再读取ADC2,最后读取ADC3。在三个ADC下次完成转换之前,DMA会将这三个数据搬运完成,保证三重ADC的同时采集。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-2 01:34:13 | 显示全部楼层
多看几遍参考手册
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-2 09:16:33 | 显示全部楼层
本帖最后由 这这这不合适吧 于 2020-6-2 09:19 编辑

原子哥好,file:///C:/Users/Administrator/Desktop/%E4%B8%89%E9%87%8D.png手册里是这样描述的,但是感觉没讲清楚 三重.png
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-2 09:20:46 | 显示全部楼层
正点原子 发表于 2020-6-2 01:34
多看几遍参考手册

手册里是这样描述的,但是感觉没讲清楚
三重.png
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-6-2 10:49:07 | 显示全部楼层
本帖最后由 lv浅陌 于 2020-6-2 10:50 编辑

依次传输ADC1、ADC2、ADC3中的数据的数据
DMA1.jpg
DMA2.jpg
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-2 15:37:24 | 显示全部楼层
lv浅陌 发表于 2020-6-2 10:49
依次传输ADC1、ADC2、ADC3中的数据的数据

3个adc不是同时触发采样的吗,假设直接放在了ADC_CDR寄存器中,可是这个32位寄存器怎么同时放下3个adc采样的数据呢?
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-6-2 20:48:03 | 显示全部楼层
这这这不合适吧 发表于 2020-6-2 15:37
3个adc不是同时触发采样的吗,假设直接放在了ADC_CDR寄存器中,可是这个32位寄存器怎么同时放下3个adc采 ...

是产生三个连续的DMA请求,依次搬运三个采集结果
DMA1.jpg
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-3 08:46:06 | 显示全部楼层
lv浅陌 发表于 2020-6-2 20:48
是产生三个连续的DMA请求,依次搬运三个采集结果

对对,我就是没有理解搬运时从哪搬运,是从DR寄存器搬运到CDR寄存器,然后再传到内存中吗
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-6-3 13:11:30 | 显示全部楼层
搬运是从ADC_CDR寄存器直接搬运。
DMA5.jpg
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-3 15:23:38 | 显示全部楼层
lv浅陌 发表于 2020-6-3 13:11
搬运是从ADC_CDR寄存器直接搬运。

不好意思一直问您耽误您时间了,但是我还是没明白从ADC_CDR寄存器运的话,因为adc采样是同时的,所以不应该是采完后同时放在ADC_CDR寄存器中吗,可是32位的寄存器怎么放下三个采样的数据呢,
回复

使用道具 举报

4

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2020-5-27
在线时间
12 小时
 楼主| 发表于 2020-6-4 14:15:03 | 显示全部楼层
lv浅陌 发表于 2020-6-3 16:56
ADC采集是同时的,但是搬运不是同时的。三重ADC的意思是三个ADC同时采集,采集完成后放在各自的ADC_DR寄存 ...

明白了,感谢您的回复,另外再多问一个,是不是在写程序时只开ADC1的dma传输就好,外设地址应该写成ADC1_DR寄存器还是ADC_CDR寄存器呢?dma的数据流好像也没有ADC_CDR寄存器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 10:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表