当前位置: 首页 > news >正文

GD32 MCU ADC采样率如何计算?

大家在使用ADC采样的时候是否计算过ADC的采样率,这个问题非常关键!

以下为GD32F303系列MCU中有关ADC的参数,其中ADC时钟最大值为40MHz,12位分辨率下最大采样率为2.86MSPS.如果ADC时钟超频的话,可能会造成ADC采样异常,因而对于ADC时钟以及采样率的计算很重要。

首先给大家介绍下ADC时钟如何配置,如下为RCU时钟树中有关ADC时钟的说明,通过ADCPSC控制位可以选择ADC时钟来自于AHB还是APB2分频,若ADCPSC配置为0,ADC时钟为APB2时钟2/4/6/8/12/16分频,若ADCPSC配置为1,ADC时钟为AHB时钟5/6/10/20分频。

ADC时钟配置可通过以下rcu_adc_clock_config函数实现。

C
/*!
    \brief      configure the ADC prescaler factor
    \param[in]  adc_psc: ADC prescaler factor
                only one parameter can be selected which is shown as below:
      \arg        RCU_CKADC_CKAPB2_DIV2: ADC prescaler select CK_APB2 / 2
      \arg        RCU_CKADC_CKAPB2_DIV4: ADC prescaler select CK_APB2 / 4
      \arg        RCU_CKADC_CKAPB2_DIV6: ADC prescaler select CK_APB2 / 6
      \arg        RCU_CKADC_CKAPB2_DIV8: ADC prescaler select CK_APB2 / 8
      \arg        RCU_CKADC_CKAPB2_DIV12: ADC prescaler select CK_APB2 / 12
      \arg        RCU_CKADC_CKAPB2_DIV16: ADC prescaler select CK_APB2 / 16
      \arg        RCU_CKADC_CKAHB_DIV5: ADC prescaler select CK_AHB / 5
      \arg        RCU_CKADC_CKAHB_DIV6: ADC prescaler select CK_AHB / 6
      \arg        RCU_CKADC_CKAHB_DIV10: ADC prescaler select CK_AHB / 10
      \arg        RCU_CKADC_CKAHB_DIV20: ADC prescaler select CK_AHB / 20
    \param[out] none
    \retval     none
*/
void rcu_adc_clock_config(uint32_t adc_psc)

ADC时钟计算好后,根据不同的分辨率就可以计算采样率了,如下图所示,不同的分辨率对应的采样转换时间是不同的,比如12位分辨率,采样转换就需要14个ADCCLK。

综上举例:如果系统时钟AHBCLK为120M,APB2时钟为60M,如果ADC时钟配置为rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6),那么ADCCLK的时钟为60M/6=10M,若ADC配置为12位分辨率,则ADC采样转换时间为14/10M=1400ns,采样率为10M/14=714KSPS.

画两个重点:1、ADC采样时钟一定不要超过手册标注的最大值;2、若采样定时触发ADC采样的话,定时触发的周期要大于多通道ADC采样时间之和。

更多GD32 MCU相关咨询:https://www.gd32bbs.com/

http://www.lryc.cn/news/394509.html

相关文章:

  • .mkp勒索病毒:深度解析与防范
  • 5.opencv深浅拷贝
  • C++11中新特性介绍-之(二)
  • STM32实现看门狗(HAL库)
  • 【漏洞复现】网络摄像头——弱口令
  • 视觉图像面积计算
  • Vue笔记10-其它Composition API
  • AI集成工具平台一站式体验,零门槛使用国内外主流大模型
  • 北京交通大学学报
  • 【LinuxC语言】手撕Http之处理POST请求
  • 以软件定义推动智算中心建设
  • Apache Seata分布式事务原理解析探秘
  • MySQL-18-mysql source 执行 sql 文件时中文乱码
  • flutter环境安装(Mac+vscode)
  • 【题解】—— LeetCode一周小结27
  • C++后端开发--网络编程基础
  • 如何将资源前端通过 Docker 部署到远程服务器
  • @react-google-maps/api实现谷歌地图嵌入React项目中,并且做到点击地图任意一处,获得它的经纬度
  • 【MySQL】2.库的操作
  • 深入Laravel服务容器:构建灵活应用的秘诀
  • 3.js - 模板渲染 - 金属切面效果
  • 【测试】系统压力测试报告模板(Word原件)
  • 图片预加载和懒加载
  • Java中的数据可视化与图表库选择
  • STM32-TIM定时器
  • Python OpenCV与霍夫变换:检测符合特定斜率范围的直线
  • ubuntu22.04+pytorch2.3安装PyG图神经网络库
  • 新型开发语言的试用感受-仓颉语言发布之际
  • 基于字典学习的地震数据降噪(MATLAB R2021B)
  • 【Web】