硬汉嵌入式论坛

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

[ADC] STM32H743/H723 三ADC交替触发采样,理论速度可达14MSPS+

  [复制链接]

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
发表于 2024-7-11 23:32:52 | 显示全部楼层 |阅读模式
本帖最后由 sanit 于 2024-7-11 23:46 编辑


硬件平台:STM32H743VIT6/STM32H723VET6开发板
软件平台:KEIL5.40 采用最新HAL库,库版本V1.11.3

在安富莱的ADC例程配置基础上,衍生出3个ADC的配置,此处为了方便阅读,将分3个独立的.h  .c文件进行配置ADC1/ADC2/ADC3
H743/H723的ADC1/ADC2是一样的用法,但是H743的ADC3和H723的ADC3有些差异,H723的ADC3被ST阉割了,并且勘误手册写了H723的ADC3存在一些BUG。此处工作模式不涉及BUG,可以正常使用。

ADC1:触发:TIM1_CH1 PA8 采样:PA6   快速通道
ADC2:触发:TIM2_CH2 PA1 采样:PA6   快速通道
ADC3:触发:TIM3_CH4 PB1 采样:PC2_C 直接通道

运行逻辑图看图片吧,具体大家自行看代码吧,可以根据自己需求更改触发时刻以及触发源选择。

我也在同大家一起学习,有什么问题可以进行沟通,谢谢大家。

dma.png

adc.rar

16.54 KB, 下载次数: 193

评分

参与人数 3金币 +130 收起 理由
不吃鱼的猫大人 + 10 很给力!
morning_enr6U + 20 很给力!
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

20

主题

57

回帖

117

积分

初级会员

积分
117
发表于 2024-7-12 08:39:27 来自手机 | 显示全部楼层
能用同一个ADC IO口吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-7-12 09:00:45 | 显示全部楼层
非常感谢楼主分享,每个都单独做了个C和H文件,移植很方便
回复

使用道具 举报

33

主题

188

回帖

287

积分

高级会员

积分
287
发表于 2024-7-12 09:03:57 | 显示全部楼层
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-7-12 09:32:44 | 显示全部楼层
bigfanofiot 发表于 2024-7-12 08:39
能用同一个ADC IO口吗

可以的,我们早期V5开发板的一代示波器就是三路ADC搞到一个引脚上,这个引脚支持ADC123即可
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-7-12 09:37:17 | 显示全部楼层
实际测试发现 H723的ADC3性能稍差,采样时间选择ADC3_SAMPLETIME_2CYCLES_5,数值会偏小   跳动也比ADC1 ADC2的大。H743的性能要好很多。
回复

使用道具 举报

2

主题

49

回帖

55

积分

初级会员

积分
55
发表于 2024-7-12 09:42:49 | 显示全部楼层
14m的速度,是三个adc采集使用同一个io口采集,还是三个adc轮询采集不同io口?
回复

使用道具 举报

2

主题

49

回帖

55

积分

初级会员

积分
55
发表于 2024-7-12 10:20:14 | 显示全部楼层
风过不留痕 发表于 2024-7-12 09:42
14m的速度,是三个adc采集使用同一个io口采集,还是三个adc轮询采集不同io口?

看到了,是adc1和2采集pa6引脚,看波形不是一起在采集吗,怎么是交替触发的?请楼主赐教一下
回复

使用道具 举报

20

主题

57

回帖

117

积分

初级会员

积分
117
发表于 2024-7-12 11:05:52 来自手机 | 显示全部楼层
sanit 发表于 2024-7-12 09:37
实际测试发现 H723的ADC3性能稍差,采样时间选择ADC3_SAMPLETIME_2CYCLES_5,数值会偏小   跳动也比ADC1 AD ...

H750咋样?
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-7-12 13:49:43 | 显示全部楼层
bigfanofiot 发表于 2024-7-12 08:39
能用同一个ADC IO口吗

可以,但是用不了快速通道了
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-7-12 13:49:59 | 显示全部楼层

这个没测试呢  750应该跟743是一样的
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-7-12 13:50:42 | 显示全部楼层
风过不留痕 发表于 2024-7-12 10:20
看到了,是adc1和2采集pa6引脚,看波形不是一起在采集吗,怎么是交替触发的?请楼主赐教一下

触发时刻不是完全同步的的  具体触发时刻可以根据自己需求去改就可以了
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-8-23 10:02:24 | 显示全部楼层
正在研究H743的ADC,感谢楼主的分享!
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-8-23 14:59:31 | 显示全部楼层
为何下载不了呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-23 15:08:24 | 显示全部楼层

可以下载,看看是不是你的浏览器拦截了
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-8-27 19:03:33 | 显示全部楼层
H743可以三重ADC吗?CUBE中为何只有双重选项?
111.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-28 09:07:10 | 显示全部楼层
li3guang 发表于 2024-8-27 19:03
H743可以三重ADC吗?CUBE中为何只有双重选项?

可以,楼主位代码是独立配置,并通过同一个定时器的三个通道触发实现的。
回复

使用道具 举报

677

主题

3460

回帖

5516

积分

论坛元老

积分
5516
发表于 2024-9-4 09:23:05 | 显示全部楼层
我想 改成一路 PB0 口采集 可以不 ?
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-9-4 11:10:07 | 显示全部楼层
hpdell 发表于 2024-9-4 09:23
我想 改成一路 PB0 口采集 可以不 ?

可以的
回复

使用道具 举报

677

主题

3460

回帖

5516

积分

论坛元老

积分
5516
发表于 2024-9-4 16:15:02 | 显示全部楼层

好的 ,我捣鼓看看
回复

使用道具 举报

677

主题

3460

回帖

5516

积分

论坛元老

积分
5516
发表于 2024-9-4 20:11:56 | 显示全部楼层
本帖最后由 hpdell 于 2024-9-4 20:13 编辑



你好, 我按照 你提供的示例 改了一丢丢, 把  ad 改成了 PB0

使用 dma , 貌似采集到的数据 是乱跳的 , 单端 输入

adc-dma.png

正常来说应该ADC_vol 的值应该在 0v 左右才对的 ,  实际测试 有时显示的是 2v 左右, 有时是在 0v 左右

我配置的是软件触发的
软件配置如下(软件有点长,为了方面阅读我截图形式):

typedef struct {

        ADC_HandleTypeDef ADC_Handle;
        DMA_HandleTypeDef DMA_Handle;

//        uint32_t ADC_ConvertedValue;
        uint16_t ADC_ConvertedBuff[10];
        uint16_t ADC_ConvertedEnd;
       
}   adc_info_t;
  

adc-dma-cfg-1.png
adc-dma-cfg-2.png
adc-dma-cfg-3.png
adc-dma-cfg-4.png
adc-dma-cfg-5.png
adc-dma-cfg-6.png
adc-dma-cfg-7.png
adc-dma-cfg-8.png
adc-dma-cfg-9.png
adc-dma-cfg-10.png
adc-dma-cfg-11.png
adc-dma-cfg-12.png


麻烦你帮我看看是哪里配置不对呀 ??

























回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-9-8 09:16:56 | 显示全部楼层
eric2013 发表于 2024-8-28 09:07
可以,楼主位代码是独立配置,并通过同一个定时器的三个通道触发实现的。

你好,关于楼主的一楼内容,几个初级问题请教一下:

1.楼主的说明中不用同一个TIM 不同的CC触发ADC,对吗/
2.ADC3采样用的PC2_C直接通道 ,这个PC2_C连接的物理疯子和ADC1/2用的PA6在物理上是同一个端子吗?
3.ADC3能否和ADC1/2一样,使用PA6(即三个ADC使用同一个物理通道)?楼主回答一位网友"可以,但是用不了快速通道了",用不了快速通道是否意味速度达不到14m了?


222.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-9-8 15:46:37 | 显示全部楼层
li3guang 发表于 2024-9-8 09:16
你好,关于楼主的一楼内容,几个初级问题请教一下:

1.楼主的说明中不用同一个TIM 不同的CC触发ADC, ...

1、同一个TIM的不同CC触发。
2和3、实现三通道快速交替就是要用ADC123同一个引脚复用。
回复

使用道具 举报

39

主题

1503

回帖

1625

积分

至尊会员

积分
1625
 楼主| 发表于 2024-9-8 22:06:09 | 显示全部楼层
本帖最后由 sanit 于 2024-9-8 22:07 编辑
li3guang 发表于 2024-9-8 09:16
你好,关于楼主的一楼内容,几个初级问题请教一下:

1.楼主的说明中不用同一个TIM 不同的CC触发ADC, ...

1.同一个定时器或者不同一个定时器 都可以 具体哪些定时器可以 需要看手册,不是乱配置的。
2 3.需要看规格书 看哪个IO属于快速通道 直接通道啥的
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-9-9 08:03:08 | 显示全部楼层
eric2013 发表于 2024-9-8 15:46
1、同一个TIM的不同CC触发。
2和3、实现三通道快速交替就是要用ADC123同一个引脚复用。

ADC1:触发:TIM1_CC1    采样:PA6   
ADC2:触发:TIM2_CC2    采样:PA6   
ADC3:触发:TIM3_CC3    采样:PA6   

上述配置方案是否可以?
如果可以,最终采样速度可达14M吗?
如果不可以,能否赐教原因及方向?
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-9-9 08:03:37 | 显示全部楼层
sanit 发表于 2024-9-8 22:06
1.同一个定时器或者不同一个定时器 都可以 具体哪些定时器可以 需要看手册,不是乱配置的。
2 3.需要看 ...

ADC1:触发:TIM1_CC1    采样:PA6   
ADC2:触发:TIM2_CC2    采样:PA6   
ADC3:触发:TIM3_CC3    采样:PA6   

上述配置方案是否可以?
如果可以,最终采样速度可达14M吗?
如果不可以,能否赐教原因及方向?
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2024-9-9 10:05:41 | 显示全部楼层
li3guang 发表于 2024-9-9 08:03
ADC1:触发:TIM1_CC1    采样:PA6   
ADC2:触发:TIM2_CC2    采样:PA6   
ADC3:触发:TIM3_CC3    ...

sanit 发表于 2024-9-8 22:06
1.同一个定时器或者不同一个定时器 都可以 具体哪些定时器可以 需要看手册,不是乱配置的。
2 3.需要看 ...

ADC1:触发:TIM1_CC1    采样:PA6   
ADC2:触发:TIM1_CC2    采样:PA6   
ADC3:触发:TIM1_CC3    采样:PA6   

上一贴发错了,要表达的意思是用TIM1的CC1 CC2 CC3 控制 ADC1 ADC2 ADC3 共同对PA6交替采样,
如果可以,最终采样速度可达14M吗?
如果不可以,能否赐教原因及方向?
回复

使用道具 举报

5

主题

37

回帖

52

积分

初级会员

积分
52
发表于 2024-11-21 11:24:13 | 显示全部楼层
单路的采样速率3.6MSPS,三路不是最多10.8MSPS 吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-11-22 09:19:36 | 显示全部楼层
红烧鱼头 发表于 2024-11-21 11:24
单路的采样速率3.6MSPS,三路不是最多10.8MSPS 吗?

如果是H743/H750的16bit分辨率的话是这个速度。


回复

使用道具 举报

0

主题

26

回帖

26

积分

新手上路

积分
26
发表于 2024-12-3 09:04:49 | 显示全部楼层
eric2013 发表于 2024-11-22 09:19
如果是H743/H750的16bit分辨率的话是这个速度。

eric2013,问一下,看你截图,H7/LQFP100\12bit最大只能到3.13M(Direct,只有PC2,PC3)了?但是我测试发现好像H7/LQFP100\12bit的fast通道也可以到5M/s的(输入工频信号采集,然后打印出来)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-3 10:24:07 | 显示全部楼层
ck123 发表于 2024-12-3 09:04
eric2013,问一下,看你截图,H7/LQFP100\12bit最大只能到3.13M(Direct,只有PC2,PC3)了?但是我测试发现 ...

实际上这个属于超频,如果测试没有异常,也行。
回复

使用道具 举报

7

主题

33

回帖

54

积分

初级会员

积分
54
发表于 2024-12-4 10:56:59 | 显示全部楼层
sanit 发表于 2024-7-12 09:37
实际测试发现 H723的ADC3性能稍差,采样时间选择ADC3_SAMPLETIME_2CYCLES_5,数值会偏小   跳动也比ADC1 AD ...

请教个问题, adc采样实际值总是低一点点,ADC3_SAMPLETIME_2CYCLES_5 跟这个采样周期关系大不大?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-12-5 08:46:07 | 显示全部楼层
capw 发表于 2024-12-4 10:56
请教个问题, adc采样实际值总是低一点点,ADC3_SAMPLETIME_2CYCLES_5 跟这个采样周期关系大不大?

看看是不是你的定时器触发不是太准,微调下。如果你说的是最高ADC速度,那应该是不同封装的限制。
回复

使用道具 举报

7

主题

33

回帖

54

积分

初级会员

积分
54
发表于 2024-12-5 09:13:52 | 显示全部楼层
eric2013 发表于 2024-12-5 08:46
看看是不是你的定时器触发不是太准,微调下。如果你说的是最高ADC速度,那应该是不同封装的限制。

不同封装的限制, 这个在哪里可以查到?
回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2024-12-13 11:32:29 | 显示全部楼层
新的HAL库,ADC采样值会乱跳的,不知道什么原因?
回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2024-12-13 16:38:06 | 显示全部楼层
thjym 发表于 2024-12-13 11:32
新的HAL库,ADC采样值会乱跳的,不知道什么原因?

使用老的HAL库就行,就是硬汉哥例程中的HAL库
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-1-17 11:32:46 | 显示全部楼层
好铁
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-2-27 21:06:54 | 显示全部楼层
你好,我想请问你关于32H7利用定时器触发进行三重采样的相关问题,请问是对同一个信号进行三重交替采样我的理解是需要有三个有相位差的时序,这个定时器是怎么做到的呢,定时器输出的pwm是如何出现这种相位差的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-2-28 05:15:43 | 显示全部楼层
alecstnw 发表于 2025-2-27 21:06
你好,我想请问你关于32H7利用定时器触发进行三重采样的相关问题,请问是对同一个信号进行三重交替采样我的 ...

通过同一个定时器的不同CH通道触发,设置不同的占空比,也就实现了不同的触发位置。
回复

使用道具 举报

0

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2025-2-28 13:47:03 | 显示全部楼层
eric2013 发表于 2025-2-28 05:15
通过同一个定时器的不同CH通道触发,设置不同的占空比,也就实现了不同的触发位置。

谢谢,我怎么没有想到,万分感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 09:01 , Processed in 0.685684 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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