打印
[STM32H7]

STM32H7 ADC最大速率

[复制链接]
678|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
硬件限制
封装
在手册 AN5354 中说明了不同封装、不同分辨率的最大速率是不一致的;



BGA封装的ADC的速度要快于LQFP封装的速度的;

分辨位数越高、转换时间越长,所以ADC的最大采样速率也就最低;

ADC通道模式





STM32H7的ADC有三种类型Slow、Fast、Direct;

这取决于引脚和ADC采样电容之间存在的电阻的阻值,阻值越小,给电容充电的时间越短,采样速率更快;



ADC123的通道[0:5] 是 fast channels , [6:19] slow channels;



以H750为例,数据手册中说明了不同通道类型的ADC的最大采样速率是不同的;
设备的类型




V版硬件芯片对ADC主频的强制二分频
测试
使用 V版本 的 STM32H750VBT6 的 ADC1_IN3 测试

使用定时器触发DMA采样

根据手册得到ADC的最大采样速率为 1.9M

CubeMx配置
ADC
时钟配置



ADC具体配置







使用TIM4触发DMA采样

ADC 时钟源

TIM



代码
采样1000次后拉高测试引脚的电平,设置标志位,在主循环中将adc采样二点数据打印出来后再次开启采样

// 数据定义
#define ADC_BUF_SIZE  1000
uint16_t ADC_BUF[2 * ADC_BUF_SIZE + 20];
uint8_t flag = 0;

// 中断回调
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
        HAL_GPIO_WritePin(TP_GPIO_Port, TP_Pin, GPIO_PIN_SET);
        HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_1);
        HAL_ADC_Stop_DMA(&hadc1);
        flag = 1;
}



// 开启pwm输出和ADC采样
        HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
        HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_BUF, ADC_BUF_SIZE);
       
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
               
                if(flag)
                {
                        flag = 0;
                        for (int i = 0; i < ADC_BUF_SIZE; i++)
                        {
                                printf("%d\r\n",ADC_BUF);
                        }
                       
                        memset(ADC_BUF, 0, sizeof(ADC_BUF));
                        __HAL_TIM_SetCounter(&htim4, 0);            
                        HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
                        HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_BUF, ADC_BUF_SIZE);
                        HAL_GPIO_WritePin(TP_GPIO_Port, TP_Pin, GPIO_PIN_RESET);
                       
                       
                }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }




结果



Tim的PWM输出是1.9M

ADC采样1000个点使用的时间为526.332uS,采样频率为1.9M;



能后正确采样
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_41555003/article/details/147052899

使用特权

评论回复
沙发
欢乐家园| | 2025-4-30 23:57 | 只看该作者
对于需要高采样速率的应用,BGA封装的ADC通常是更好的选择,尤其是在高速数据采集和处理的场景下。

使用特权

评论回复
板凳
sdlls| | 2025-5-6 09:09 | 只看该作者
ADC时钟频率直接影响转换速率。

使用特权

评论回复
地板
biechedan| | 2025-5-13 18:29 | 只看该作者
将采样时间从64.5个时钟周期缩短至8.5个时钟周期,可显著提升速率。

使用特权

评论回复
5
kkzz| | 2025-5-13 19:55 | 只看该作者
其最大采样速率取决于具体的型号和配置。

使用特权

评论回复
6
uptown| | 2025-5-13 21:17 | 只看该作者
不同封装的型号可能限制最高速率。

使用特权

评论回复
7
albertaabbot| | 2025-5-13 21:46 | 只看该作者
最高约 1 MSPS​​              

使用特权

评论回复
8
zerorobert| | 2025-5-15 09:44 | 只看该作者
使用DMA进行数据传输,可减轻CPU负担,加快系统响应速度,间接提升ADC工作效率。

使用特权

评论回复
9
backlugin| | 2025-5-15 11:15 | 只看该作者
采样时间越短,ADC 完成一次采样所需的时间就越短,从而有可能提高采样速率。

使用特权

评论回复
10
jkl21| | 2025-5-15 11:34 | 只看该作者
不同的采样时间设置会影响采样速率。通常,采样时间越短,采样速率越高。

使用特权

评论回复
11
linfelix| | 2025-5-15 12:17 | 只看该作者
单通道高速通道可达4Msps              

使用特权

评论回复
12
chenci2013| | 2025-5-15 20:46 | 只看该作者
部分 STM32H7 型号的 ADC 最大采样速率能够达到 6.4Msps

使用特权

评论回复
13
lidi911| | 2025-5-15 21:09 | 只看该作者
采样速率和分辨率有关系

使用特权

评论回复
14
jonas222| | 2025-5-16 11:36 | 只看该作者
分辨率越高,逐次逼近寄存器(SAR)工作时间越长,转换时间增加。

使用特权

评论回复
15
jkl21| | 2025-5-16 12:14 | 只看该作者
在采用合适的时钟配置和采样时间设置时,可接近最大速率。

使用特权

评论回复
16
51xlf| | 2025-5-16 13:15 | 只看该作者
需使用高速模式(HS mode)并优化时钟配置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

140

帖子

0

粉丝