历史上的今天

今天是:2024年10月08日(星期二)

正在发生

2018年10月08日 | STM32ADC采样时间、采样周期、采样频率计算方法

发布者:数据迷航者 来源: eefocus关键字:STM32  ADC  采样时间  采样周期  采样频率 手机看文章 扫描二维码
随时随地手机看文章

ADC转换就是输入模拟的信号量,单片机转换成数字量。读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期。采样周期一般来说=转换时间+读取时间

 

。而转换时间=采样时间+12.5个时钟周期。采样时间是你通过寄存器告诉STM32采样模拟量的时间,设置越长越精确

一 STM32 ADC采样频率的确定

1. :先看一些资料,确定一下ADC的时钟:

(1),由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。CLK控制器为ADC时钟提供一个专用的可编程预分频器

(2) 一般情况下在程序 中将 PCLK2 时钟设为 与系统时钟 相同

 

RCC_HCLKConfig(RCC_SYSCLK_Div1);

 

RCC_PCLK2Config(RCC_HCLK_Div1);

 

RCC_PCLK1Config(RCC_HCLK_Div2);

(3)在时钟配置寄存器(RCC_CFGR) 中 有 为ADC时钟提供一个专用的可编程预分器

位15:14 ADCPRE:ADC预分频

由软件设置来确定ADC时钟频率

00:PCLK2 2分频后作为ADC时钟

01:PCLK2 4分频后作为ADC时钟

10:PCLK2 6分频后作为ADC时钟

11:PCLK2 8分频后作为ADC时钟

我们可对其进行设置 例如:

 

RCC_ADCCLKConfig(RCC_PCLK2_Div4);

另外 还有 ADC 时钟使能设置

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2 |

RCC_APB2Periph_GPIOC, ENABLE);

(4)16.7 可编程的通道采样时间

ADC 使用若干个ADC_CLK 周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位而更改。每个通道可以以不同的时间采样。

 

总转换时间如下计算:

TCONV(转换时间) = 采样时间+ 12.5 个周期

例如:

当ADCCLK=14MHz 和 1.5周期的采样时间:

TCONV = 1.5 + 12.5 = 14周期= 1μs

SMPx[2:0]:选择通道x的采样时间

这些位用于独立地选择每个通道的采样时间。在采样周期中通道选择位必须保持不变。

000:1.5周期100:41.5周期

001:7.5周期101:55.5周期

010:13.5周期110:71.5周期

011:28.5周期111:239.5周期

注:

– ADC1的模拟输入通道16和通道17在芯片内部分别连到了温度传感器和VREFINT。

– ADC2的模拟输入通道16和通道17在芯片内部连到了VSS。

2. 具体分析如下:

(1)我们的输入信号是50Hz (周期为20ms),初步定为1周期200个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个 采样点间隔为 20ms /200 = 100 us

ADC可编程的通道采样时间 我们选最小的 1.5 周期,则 ADC采样周期一周期大小为

100us /1.5=66us 。 ADC 时钟频率为 1/66us =15 KHz。

ADC可编程的通道采样时间 我们选71.5 周期,则 ADC采样周期一周期大小为

(100us /71.5) 。 ADC 时钟频率为 7.15MHz。

(2)接下来我们要确定系统时钟:我们 用的是 8M Hz 的外部晶振做时钟源(HSE),估计得 经过 PLL倍频 PLL 倍频系数分别为2的整数倍,最大72 MHz。为了 提高数据 计算效率,我们把系统时钟定为72MHz,(PLL 9倍频)。则PCLK2=72MHz,PCLK1=36MHz;

我们通过设置时钟配置寄存器(RCC_CFGR) 中 有 为ADC时钟提供一个专用的可编程预分器,将PCLK2 8 分频后作为ADC 的时钟,则可知ADC 时钟频率为 9MHz

从手册可知: ADC 转换时间:

STM32F103xx增强型产品:ADC时钟为56MHz时为1μs(ADC时钟为72MHz为1.17μs)

(3)由以上分析可知:不太对应,我们重新对以上中 内容调整,提出如下两套方案:

方案一:我们的输入信号是50Hz (周期为20ms),初步定为1周期2500个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个 采样点间隔为 20ms /2500 = 8 us

ADC可编程的通道采样时间 我们选71.5周期,则 ADC采样周期一周期大小为

8us /71.5 。 ADC时钟频率约为 9 MHz。

将PCLK2 8 分频后作为ADC 的时钟,则可知ADC 时钟频率为 9MHz

方案二:我们的输入信号是50Hz (周期为20ms),初步定为1周期1000个采样点,(注:一周期最少采20个点,即采样率最少为1k) ,每2个 采样点间隔为 20ms /1000= 20 us

ADC可编程的通道采样时间 我们选239.5周期,则 ADC采样周期一周期大小为

20us /239.5 。 ADC时钟频率约为 12 MHz。

将PCLK2 6 分频后作为ADC 的时钟,则可知ADC 时钟频率为 12MHz


关键字:STM32  ADC  采样时间  采样周期  采样频率 引用地址:STM32ADC采样时间、采样周期、采样频率计算方法

上一篇:stm32PWM输入模式测量脉冲速度和占空比
下一篇:STM32F103RCT6之FLASH读写操作

推荐阅读

由于项目需要用到很多串口,而STM32F030的串口资源较少,所以需要自己写模拟串口,下面是过程。首先进行初始化:#define Auart1RxEXTIPort EXTI_PortSourceGPIOA#define Auart1RxEXTIPin EXTI_PinSource5#define Auart1RxLineEXTI_Line5#define Auart1RCC RCC_AHBPeriph_GPIOA#define Auart1Port GPIOA#define Auart1TxPin GPIO_Pin_6...
据悉,索尼公司今天在日本推出索尼Xperia 8手机,搭载高通骁龙630处理器,6英寸21:9屏幕,具有黑色、白色、橘色和青色四种配色。 据了解,索尼Xperia 8手机尺寸为158×69×8.1mm,手机重量约为170g。屏幕采用6英寸21:9宽高比,分辨率为2520×1080。核心配置方面,除了搭载高通骁龙630处理器外,还采用了4GB内存和64GB内部存储空间(最高可扩展为512GB)...
NVIDIA发布重磅应用、系统以及与宝马集团合作 NVIDIA提出了下一代计算的愿景,该愿景将全球信息经济的重心从服务器转移到了新型的强大且灵活的数据。 NVIDIA创始人兼首席执行官在其加州住宅的厨房中录制的六集同时发布的主题演讲中,介绍了NVIDIA最近对Mellanox的收购,还有重盼所归的基于NVIDIA Ampere 架构的新产品以及重要的最新软件技术。 这场...
日前,瑞萨电子在经营说明会上表示,计划到2023年前将车载MCU产能提高5成以上(较2021年)。同时,瑞萨电子将提高设备投资金额,预计到2021年将超过800亿日元,到2022年将在600亿日元左右,该公司目前的设备投资金额约200亿日元。瑞萨电子计划从2021年开始将车用MCU的产能提高50%,若以8英寸晶圆换算高端MCU产量,每月产能将扩大1.5倍至约4万片,这部分产...

史海拾趣

问答坊 | AI 解惑

如何读取单片机内部的程序

请问各位大虾.我有一块单片机,里面有了程序,也可以用编程器读出,但如何把它还原成C语言或汇编语言的原文件呢?…

查看全部问答∨

请教一个Kill c51 编译的问题

这段代码中,为什么case 0x1B: 时就会报错:F11EX.c (156):error c175 :0x1b :duplicate case value 呢? switch (keyboard_data)    {     case 0x45:   //0      {;}    break ...…

查看全部问答∨

关于51的一段小程序请大家帮帮忙不知道怎么弄了两个程序结果不一样

for(i=0;i<10;i++) {     ad=read2543(0x80); //0x80第九通道   ad1=ad;     k=k+ad1;   }   k/=10; a=k; 我用数码管显示如果直接显示k是正确的值如果加上a=k;结果显示是错误的为 ...…

查看全部问答∨

关于wince5.0自动升级程序

想问下高手们 有没有做过wince下的自动更新程序。 能否讲下方法, 小弟在此先谢过!…

查看全部问答∨

关于vxworks键盘连击的问题

具体来说:比如我按下a键,只进行一次a输入的相应并且只显示一个a,必须a键弹起后再按第二次,才会进行第二次响应。 我知道windows下改很简单,不知但在vxWorks中要用程序怎么实现。希望高手帮忙!…

查看全部问答∨

close为什么会失败?

在vxworks操作系统下 建立一个socket后,使用rc=connectwithtimeout(5秒),如果返回rc==error 则close掉socket连接 但是每次调用close后,总是返回-1失败。在shell下察看,socket描述符已经被释放了 但是通过netStackSysPoolShow察看,socket ...…

查看全部问答∨

MSP430常见问题汇总

不知道有人发过没有…

查看全部问答∨

UCOS II的下载问题、

在LPC2103上移植的UCOS II ,为什么下载至RAM时会出现下面的问题: Fatal Error[e72]: Segment FIQ_STACK must be defined in a segment definition option (-Z, -b or -P) 但是下载到flash时完全正常;   还有一个问题,flash模式下调试 ...…

查看全部问答∨

【M4开发板Hanker试用狂-Shower.Xu】5、myPaint-我的小画板

折腾了一天,总算搞完了。自从参看例程代码,弄明白了触摸屏驱动后,觉得触摸屏的操作太方便了,而且没有之前想象的那么难用,我们只要设置好AD和定时器触发采样,驱动程序就会把采样值分析并生成三个参数(unsigned long ulMessage,long lX, l ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved