STM32_ADC采样时间_采样周期_采样频率计算方法分析

发布者:LogicLeaper最新更新时间:2023-10-17 来源: elecfans关键字:STM32  ADC  采样时间  采样周期  采样频率 手机看文章 扫描二维码
随时随地手机看文章

  因项目需要使用到STM32的ADC功能,虽然对ADC的使用并不陌生,但是第一接触stm32的ADC功能还是有种无从下手的感觉,主要是因为STM32ADC设计较为复杂,一时对相关的专业术语较为生疏,此外固件库中涉及到的函数虽都进行了分门别类但是还是感觉函数较多,难以很快掌握,现就将个人理解写出,以便大家共同进步。


  一、stm32 ADC特点

  认识事物首先还是要从整体上把握,ADC也一样的道理,STM32的ADC外设提供了非常完善的功能,虽然其中很大一部分不见得能在项目中使用,但加深对其的认识对于合理利用其资源也是非常有必要的。


  下面以项目采用的STM32L151为例,其他类型大同小异。

  先看原文:

  • 12-bit, 10-bit, 8-bit or 6-bit configurable resolution

  • Interrupt generation at the end of regular conversions, end of injected conversions, and in case of analog watchdog or overrun events (for regular conversions)

  //在规则转换结束、注入转换结束以及模拟看门狗溢出和overrun事件(规则转换模式)发生时能产生中断

  • Single and continuous conversion modes //有单次和连续转换模式

  • Scan mode for automatic conversions in a fully programmable order //在自动转换中支持完成可编程的扫描模式

  • Programmable data alignment with in-built data coherency //数据对齐方式可编程

  • Programmable and individual sampling time for each ADC channel //可以为每个通道设置独立的采样时间

  • External trigger option with configurable edge detection for both regular and injected

  conversions //外部触发模式对规则和注入转换模式均支持可配置的边沿触发方式

  • Discontinuous mode //非连续模式

  • ADC conversion time: 1 μs at full speed (ADC clocked at 16 MHz) down to 4 μs at low speed (ADC clocked at 4 MHz), independent of the APB clock//最低采样时间

  • Automatic power-up/power-down to reduce the power consumption//自动的上下电便于节能

  • ADC supply requirements:

  – 2.4 V to 3.6 V at full speed or with reference zooming (VREF+ 《 VDDA)

  – down to 1.8 V at slower speeds //工作电压范围

  • ADC input range: VREF– ≤ VIN ≤ VREF+

  • Automatic programmable hardware delay insertion between conversions

  • DMA request generation during regular channel conversion //规则转换支持DMA

  从官方的描述中可以了解到STM32ADC所提供的强大功能,及一些工作特性,那么如何才能使用这些功能呢?

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

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

  二、STM32 ADC采样频率时间、周期、计算方法分析

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

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

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

  /* HCLK = SYSCLK */

  RCC_HCLKConfig(RCC_SYSCLK_Div1);

  /* PCLK2 = HCLK */

  RCC_PCLK2Config(RCC_HCLK_Div1);

  /* PCLK1 = HCLK/2 */

  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时钟

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

  /* ADCCLK = PCLK2/4 */

  RCC_ADCCLKConfig(RCC_PCLK2_Div4);

  另外 还有 ADC 时钟使能设置

  /* Enable ADC1, ADC2 and GPIOC clock */

  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  采样时间  采样周期  采样频率 引用地址:STM32_ADC采样时间_采样周期_采样频率计算方法分析

上一篇:STM32单片机的串口波特率计算方法
下一篇:STM32F103C8T6实现直流电机速度PID控制

推荐阅读最新更新时间:2024-11-16 21:39

STM32 的CAN的关键点
1、关于屏蔽寄存器的初始化的处理 //ext_id CAN_FilterInitStructure.CAN_FilterIdHigh=((ext_id CAN_FilterInitStructure.CAN_FilterIdLow=(U16)(ext_id 3) | CAN_ID_EXT; //设置标识符寄存器低字节 为什么要左移3位,这和扩展格式和寄存器的分配有关, 主要是 以及 参考的是:https://blog.csdn.net/android_lover2014/article/details/64127110 2、关于CAN中断的函数名以及过滤组的使用 参考:https:
[单片机]
<font color='red'>STM32</font> 的CAN的关键点
STM32笔记之八:来跟PC打个招呼,基本串口通讯
a) 目的:在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。 b) 初始化函数定义: void USART_Configuration(void); //定义串口初始化函数 c) 初始化函数调用: void UART_Configuration(void); //串口初始化函数调用 初始化代码: void USART_Configuration(void) //串口初始化函数 { //串口参数初始化
[单片机]
STM32失能时钟和复位外设的区别
在STM32参考手册中,都有Reset and Clock Control(RCC)复位和时钟控制的章节。 在这一章节就可以看到有两类寄存器: peripheral reset register(RSTR)外设复位寄存器。 peripheral clock enable register(ENR)外设时钟使能寄存器。 我们拿STM32F1参考手册为例,可以看到如下图寄存器: 一种是控制外设时钟的寄存器,一种是复位外设的寄存器。 外设时钟使能和失能 我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。 比如使能USART1时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
<font color='red'>STM32</font>失能时钟和复位外设的区别
STM32 USB设计原理
首先,我们来看看 usb 的工作过程。 当 usb 设备接入到主机时,主机开始枚举 usb 设备,并向 usb 设备发出指令要求获取 usb 设备的相关描述信息,其中包括设备描述( device descriptor )、配置描述( configuration descriptor )、接口描述( interface descriptor )、端点描述( endpoint descriptor )等。这些信息是通过端点 0 ( endpoint 0 )传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。 usb 通讯有四种通讯方式控制( control )、中断( inter
[单片机]
使用STM32GPIO读取按键实现按键操作
一、开发板按键设置 在 STM32-PZ6806L 开发板上除了复位按键外,还设计了4个按键,分别标为 UP 、 DOWN 、 LEFT 和 RIGHT ,其电路如下: 根据电路连接得知K_UP按键一端与GPIOA_0连接,另一端通过一个1KΩ电阻接3.3V,所以在对GPIOA_0配置时应设置工作方式为“下拉输入”,当按键松开时为低电平,按键按下时为高电平;K_LEFT、K_DOWN和K_RIGHT三个按键的一端分别与GPIOE_2、GPIOE_3和GPIOE_4相连,另一端接地,所以对GPIOE_2、GPIOE_3和GPIOE_4要配置为“上拉输入”方式,按键松开时为高电平,按键按下时为低电平。 二、项目基本配置 该项
[单片机]
不一样的STM32“脱机”烧录器
用SBC给STM32F746Discovery烧写程序。SBC就是单板电脑的意思,也可以叫卡片电脑(神奇的ARM小电脑),他是一个统称;常见的SBC有树莓派、Friendly ARM、香橙派、栗子派、Firefly等。 硬件的接法很简单,就像上面那样,把STM32Discovery的板载ST-Link V2的USB接口接到SBC的USB接口上就好了。 过去,我们如果要给STM32单片机烧写程序,需要用到桌面电脑,或者笔记本电脑。这些都是X86平台的,非常不方便。所以,我们今天要来个骚操作,DIY一个小作品,用栗子派代替传统的X86电脑,把它做成一台小型的STM32烧录器。借助Linux系统的SSH服务,间接地也实现了远程烧
[单片机]
不一样的<font color='red'>STM32</font>“脱机”烧录器
STM32实现IAP功能之一
最近因项目需求要实现STM32的在线升级即IAP功能,先将这几天的学习体会和IAP的具体实现总结出来,分享给大家,希望对同样实现IAP的童鞋有所帮助,文中最后会上传名为STM32_Update.zip的压缩文件里面包含了STM32_App、STM32_MyBoot_V1.0和升级软件STM32_UpdateSoftware的源码文件供大家参考。所有程序都经过测试,可以直接在原子哥的 开发板 上跑,上位机的升级软件大家可以直接打开STM32_Update\STM32_UpdateSoftware\Release\STM32_UpdateSoftware.exe来升级,如果需要查看源码请用VS2010打开工程文件。 最终要实现的是:
[单片机]
<font color='red'>STM32</font>实现IAP功能之一
低功耗高速驱动ADC 实现高精度数据转换
       2009 年 2 月 12 日,德州仪器 (TI) 宣布推出可针对单通道与多通道逐次逼近寄存器 (SAR) 与 Δ-Σ 模数转换器 (ADC) 实现最高精度数据转换的新型全差动放大器产品系列,能够满足工业、医疗以及音频等各种应用的需求。THS4521、THS4522 以及 THS4524 可提供业界最佳的性能功耗比,非常适用于需要高分辨率、高精度以及出色动态范围的应用,如压力表与流量计、测震设备以及心电图机等,而且还可满足对功率要求严格的电池供电设备与其它应用的要求。更多详情,敬请      TI 高性能模拟业务部的高级副总裁 Art George 指出:“以前,客户要想为差动高精度 ADC 寻找缓冲器,只能选择
[模拟电子]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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