硬汉嵌入式论坛

 找回密码
 立即注册
查看: 997|回复: 13
收起左侧

[ADC] 关于ADC的DMA采样方式的两个问题

[复制链接]

11

主题

43

回帖

76

积分

初级会员

积分
76
发表于 2022-9-1 22:04:57 | 显示全部楼层 |阅读模式
1、ADC的DMA采样方式中,ADC的采样率怎么设置?是通过下图这个地方设置吗?如果是的话是只能有固定的几个数值吗。怎么样自定义呢?
image.png image.png
2、如果在别的函数当中,需要读取ADC DMA采样的值并赋给其他变量,具体应该怎么操作是正确的呢?像下图这样的方式是否正确?(第二个图是给的例程中的一个函数:获取ADC的数据并打印)
image.png image.png

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-2 10:52:32 | 显示全部楼层
1、可以使用定时器触发方式玩
2、如果要保证所有数据都连续采样,需要使用DMA双缓冲的ADC例子。如果没有的话,你这种方式可以。
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-2 15:23:25 | 显示全部楼层
eric2013 发表于 2022-9-2 10:52
1、可以使用定时器触发方式玩
2、如果要保证所有数据都连续采样,需要使用DMA双缓冲的ADC例子。如果没有的 ...

你好,是说的“STM32H7 的 DMA 应用之双缓冲控制任意 IO 和脉冲数控制”这个例程吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-3 09:21:35 | 显示全部楼层
wangjh23 发表于 2022-9-2 15:23
你好,是说的“STM32H7 的 DMA 应用之双缓冲控制任意 IO 和脉冲数控制”这个例程吗

image.png
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-5 11:11:49 | 显示全部楼层

好的,非常感谢!
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-5 15:50:16 | 显示全部楼层

你好,如果要使用多个ADC,比如四个或六个,DMA双缓冲的这种实现方式是不是就不行了,那如果在四个通道或六个通道下还需要连续采样的话,还有什么其他办法吗?
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-5 16:54:13 | 显示全部楼层

还有就是,通过定时器设置ADC的采样率可以参考源码里的哪个例子呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-7 01:35:04 | 显示全部楼层
wangjh23 发表于 2022-9-5 15:50
你好,如果要使用多个ADC,比如四个或六个,DMA双缓冲的这种实现方式是不是就不行了,那如果在四个通道或 ...

能,一样的,只是DMA里面的数据是多个通道的依次排列。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-7 01:35:40 | 显示全部楼层
wangjh23 发表于 2022-9-5 16:54
还有就是,通过定时器设置ADC的采样率可以参考源码里的哪个例子呢?

我前面回复你的那个截图就行。
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-8 10:18:15 | 显示全部楼层
eric2013 发表于 2022-9-7 01:35
我前面回复你的那个截图就行。

好的,谢谢
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-8 11:34:03 | 显示全部楼层
eric2013 发表于 2022-9-7 01:35
能,一样的,只是DMA里面的数据是多个通道的依次排列。

DMA里面的数据是多个通道的依次排列是指,ADCxValues[0]就是第一个通道的数据ADCxValues[1]是第二个通道的数据吗?那读取后半个缓冲的时候是不是ADCxValues[64]就是第一个通道的数据,然后依次类推?还是说读取两次平均值,第一次平均值是第一个通道的值,第二次平均值是第二个通道的值?(图片我单独发了一个评论)
回复

使用道具 举报

11

主题

43

回帖

76

积分

初级会员

积分
76
 楼主| 发表于 2022-9-8 11:34:20 | 显示全部楼层
image.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-9 11:16:52 | 显示全部楼层
wangjh23 发表于 2022-9-8 11:34
DMA里面的数据是多个通道的依次排列是指,ADCxValues[0]就是第一个通道的数据ADCxValues[1]是第二个通道 ...

依次DMA搬运的,也就是你前面说得。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2022-9-9 11:21:18 | 显示全部楼层

存储的都是原始数值,如果你是多通道,那么就是多通道的数值依次排列。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 21:51 , Processed in 0.199931 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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