硬汉嵌入式论坛

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

[ADC] 通过过采样技术,STM32H7的ADC可以做到26位分辨率

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2018-6-2 01:53:54 | 显示全部楼层 |阅读模式
这个是STM32H7硬件支持的。


1.png
2.png

评分

参与人数 1金币 +10 收起 理由
不吃鱼的猫大人 + 10 很给力!

查看全部评分

回复

使用道具 举报

57

主题

909

回帖

1080

积分

至尊会员

积分
1080
发表于 2018-6-2 11:21:42 | 显示全部楼层
全用市面上普通开关电源供电,信号也是开关电源,多少mv能不跳? analog 的芯片1024采样软件处理后基本能达到datasheet上的理论值。。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-6-2 11:51:00 | 显示全部楼层
roguebear 发表于 2018-6-2 11:21
全用市面上普通开关电源供电,信号也是开关电源,多少mv能不跳? analog 的芯片1024采样软件处理后基本能达 ...

这个过采样如果能做到20位分辨率,使用价值就非常大了。
回复

使用道具 举报

36

主题

2051

回帖

2159

积分

至尊会员

积分
2159
发表于 2018-6-2 11:51:57 | 显示全部楼层
使用过采样还能使用多通道吗
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-6-2 15:01:46 | 显示全部楼层
byccc 发表于 2018-6-2 11:51
使用过采样还能使用多通道吗

看说明是支持的,不影响多通道,我后面测试下。
回复

使用道具 举报

7

主题

48

回帖

69

积分

初级会员

积分
69
发表于 2018-10-1 17:56:41 | 显示全部楼层
官方例程的过采样20位的例程测量了一下,还是蛮精确的。 就是不知道如何使用过采样的DMA传输模式,看了参考手册没看出怎么弄,不知道硬汉有没有试过?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-10-2 01:09:42 | 显示全部楼层
KAIXIN 发表于 2018-10-1 17:56
官方例程的过采样20位的例程测量了一下,还是蛮精确的。 就是不知道如何使用过采样的DMA传输模式,看了参考 ...

直接配置DMA为32位宽是否可行,可以先测试下。
回复

使用道具 举报

7

主题

48

回帖

69

积分

初级会员

积分
69
发表于 2018-10-2 09:05:19 | 显示全部楼层
eric2013 发表于 2018-10-2 01:09
直接配置DMA为32位宽是否可行,可以先测试下。

是的,我发现数据从来没有超过65535,后来想可能被截取了,改了32位,就好了
回复

使用道具 举报

7

主题

48

回帖

69

积分

初级会员

积分
69
发表于 2018-10-2 09:05:36 | 显示全部楼层
是的,我发现数据从来没有超过65535,后来想可能被截取了,改了32位,就好了
回复

使用道具 举报

2

主题

84

回帖

90

积分

初级会员

积分
90
发表于 2018-10-14 11:42:25 来自手机 | 显示全部楼层
没看懂,还是顶一下。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2018-10-15 12:49:03 | 显示全部楼层
   分辨率可以提高但是INL和DNL提高高不了吧~
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2018-10-16 00:38:52 | 显示全部楼层
sabaka 发表于 2018-10-15 12:49
分辨率可以提高但是INL和DNL提高高不了吧~

STM32H7的数据手册竟然没给这两个参数。只有DAC给了。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2018-10-16 09:17:54 | 显示全部楼层
eric2013 发表于 2018-10-16 00:38
STM32H7的数据手册竟然没给这两个参数。只有DAC给了。

     有的吧,只是ST喜欢按他们的习惯标注 ET  ED  EL什么的。
回复

使用道具 举报

14

主题

238

回帖

280

积分

高级会员

积分
280
发表于 2019-12-21 13:09:45 | 显示全部楼层
KAIXIN 发表于 2018-10-1 17:56
官方例程的过采样20位的例程测量了一下,还是蛮精确的。 就是不知道如何使用过采样的DMA传输模式,看了参考 ...

例程可以共享一下?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2019-12-21 17:40:33 | 显示全部楼层
miaoqiongb 发表于 2019-12-21 13:09
例程可以共享一下?

STM32H7的ADC过采样功能立竿见影,效果的确不错
https://forum.anfulai.cn/forum.p ... 1362&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
发表于 2024-12-16 17:23:33 | 显示全部楼层
我想问一下就是我目前是H7  ADC3 - 16bit,然后开启过采样结果编译报错是为什么?
报错:../Core/Src/adc.c(66): error:  #20: identifier "ADC3_OVERSAMPLING_RATIO_256" is undefined

还有就是我开启最大过采样,然后数据移位然后保存数组还是uint16_t ,并且DMA配置halfword有影响吗?如果不移位的话就使用四字节对齐

hadc3.Instance = ADC3;
  hadc3.Init.Resolution = ADC_RESOLUTION_16B;
  hadc3.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc3.Init.EOCSelection = ADC_EOC_SEQ_CONV;
  hadc3.Init.LowPowerAutoWait = DISABLE;
  hadc3.Init.ContinuousConvMode = ENABLE;
  hadc3.Init.NbrOfConversion = 1;
  hadc3.Init.DiscontinuousConvMode = DISABLE;
  hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc3.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_ONESHOT;
  hadc3.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  hadc3.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
  hadc3.Init.OversamplingMode = ENABLE;
  hadc3.Init.Oversampling.Ratio = ADC3_OVERSAMPLING_RATIO_1024;
  hadc3.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_10;
  hadc3.Init.Oversampling.TriggeredMode = ADC_TRIGGEREDMODE_SINGLE_TRIGGER;
  hadc3.Init.Oversampling.OversamplingStopReset = ADC_REGOVERSAMPLING_CONTINUED_MODE;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-12-17 08:29:38 | 显示全部楼层
不吃鱼的猫大人 发表于 2024-12-16 17:23
我想问一下就是我目前是H7  ADC3 - 16bit,然后开启过采样结果编译报错是为什么?
报错:../Core/Src/adc. ...

1、这个应该是你的参数和你的HAL库版本不匹配
2、不用处理。过采样是自动做硬件平均了
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
发表于 2024-12-17 18:40:11 | 显示全部楼层
eric2013 发表于 2024-12-17 08:29
1、这个应该是你的参数和你的HAL库版本不匹配
2、不用处理。过采样是自动做硬件平均了

您好,硬汉哥,我想请问一下:
1.为什么我开启2倍和4倍过采样,并且右移1位和两位,为啥我的采样点数是减少了一半?
2.他这个过采样是取的两点或者四个点取的平均值吗?
3。我本来以为他是采集2次或者四次然后取平均值,这样的话时间就是原来的2倍或者4倍。



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-12-18 08:35:49 | 显示全部楼层
不吃鱼的猫大人 发表于 2024-12-17 18:40
您好,硬汉哥,我想请问一下:
1.为什么我开启2倍和4倍过采样,并且右移1位和两位,为啥我的采样点数是 ...

这硬件过采样是直接硬件采集这么多倍的数据做平均存到对应的ADC DR寄存器。
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
发表于 2024-12-18 09:48:18 | 显示全部楼层
eric2013 发表于 2024-12-18 08:35
这硬件过采样是直接硬件采集这么多倍的数据做平均存到对应的ADC DR寄存器。

那我有一个疑问,就是我的采样点本来应该是500个(刚好囊括我要采集的波形),2倍过采样之后我采集的波形就只占前250个点,然后4倍过采样就占前125个点是为啥?我右移了对应的位,但是这个是对于结果取有效值的,为啥我的波形会相应的左移呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-12-19 07:55:55 | 显示全部楼层
不吃鱼的猫大人 发表于 2024-12-18 09:48
那我有一个疑问,就是我的采样点本来应该是500个(刚好囊括我要采集的波形),2倍过采样之后我采集的波形 ...

如果你设置的采集500个点,采样率1K,2倍过采样实际是2K采样率,采集了500个点。4倍过采样就是4K采样率采集了500个点,这样是不是好理解了
回复

使用道具 举报

20

主题

102

回帖

162

积分

初级会员

积分
162
QQ
发表于 2024-12-19 09:25:13 | 显示全部楼层
eric2013 发表于 2024-12-19 07:55
如果你设置的采集500个点,采样率1K,2倍过采样实际是2K采样率,采集了500个点。4倍过采样就是4K采样率采 ...

谢谢硬汉哥。理解了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 06:07 , Processed in 0.219074 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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