STM32定时器触发ADC

发布者:SereneVoyage最新更新时间:2017-10-26 来源: eefocus关键字:STM32  定时器触发  ADC 手机看文章 扫描二维码
随时随地手机看文章

以STM32 ADC的常规通道为例(注入通道类似):

STM32定时器触发ADC

如图,STM32 ADC的常规通道可以由以上6个信号触发任何一个,我们以使用TIM2_CH2触发ADC1,独立模式,每次仅测一条通道,则ADC的配置如下:(以下代码使用STM32固件库V3.5)

void ADC_Configuration(void)

{

ADC_InitTypeDef ADC_InitStructure;

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode = DISABLE; //关闭通道扫描模式

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

//注意不要使用持续转换模式,否则只要触发一次,

//后续的转换就会永不停歇(除非CONT清0),这样第一次以后的ADC,就不是由TIM2_CC2来触发了

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;//配置TIM2_CC2为触发源

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADC1, &ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div6);//配置时钟(12MHz),在RCC里面还应配置APB2=AHB时钟72MHz,

ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_1Cycles5);  

ADC_Cmd(ADC1,ENABLE);

ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1));

ADC_StartCalibration(ADC1);           //Start Calibration register

while(ADC_GetCalibrationStatus(ADC1));//waiting for finishing the calibration

ADC_ExternalTrigConvCmd(ADC1, ENABLE);

//设置外部触发模式使能(这个“外部“其实仅仅是相对于ADC模块的外部,实际上还是在STM32内部)

}

这里再注意一点上面左图最顶上的那句话:当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。这跟下面的定时器2的正确配置关系很大。

 

void TIM2_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

TIM_OCInitTypeDef TIM_OCInitStructure;

TIM_TimeBaseStructure.TIM_Period = 10000; //设置100ms一次TIM2比较的周期

TIM_TimeBaseStructure.TIM_Prescaler = 719;//系统主频72M,这里分频720,相当于100K的定时器2时钟

TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//下面详细说明

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//TIM_OutputState_Disable;

TIM_OCInitStructure.TIM_Pulse = 5000;

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//如果是PWM1要为Low,PWM2则为High

TIM_OC2Init(TIM2, & TIM_OCInitStructure);

TIM_Cmd(TIM2, ENABLE);

TIM_InternalClockConfig(TIM2);

TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);

TIM_UpdateDisableConfig(TIM2, DISABLE);

}

STM32定时器触发ADC

上图中红蓝两个框的中间部分,顶上是TIM2的自动重装寄存器和计数器寄存器,下面4个Capture/compare x register是TIM2_CCRx寄存器。

 

要使用TIM2的CC2来触发ADC,看懂这个图是关键。

首先要明确,这个图的红框部分和蓝框部分,是不会同时工作的,红框是配置为输入捕捉模式才能生效,蓝框是配置为输出比较模式才能生效,通过配置TIM2_CCMR1_CC2S来控制TIM2_CC2究竟是处于哪种模式(CC2S=0为比较输出,>0为输入捕捉),请注意:这里蓝框的其中一个输出是TIMx_CH2,而TIM2_CH2又是ADC规则通道的触发源,也就是说如果要触发ADC,则需要每次比较匹配时,在TIM2_CH2上产生一次上升沿。

 

那么我们首先需要操作蓝框内的最左边部分也就是OC2REF,要使比较匹配时发生一次上升沿,(以定时器向上计数为例)就需要在TIM2_CNT时,通道2为低电平,TIM2_CNT>=TIM2_CCR2时,通道2为高电平。

从参考手册定时器一章4.7节的CCMR1寄存器中的0C2M[2:0]的介绍可以看出来,只有在PWM模式才能满足上面所说的条件,任何单纯的冻结、配置OC2REF为高或者为低、强制OC2REF为高或者为低,都无法满足要求,不少同学就是死在这个上面,以为是配置TIMING模式,实际上这样根本无法改变OC2REF的电平,就无从触发ADC了。

CCMR1_CCxS(x为1、2、3、4,决定是哪个通道)是选择为捕捉输入还是比较输出,这里我们需要配置为输出。

以上两段配置程序,可以以100ms的周期驱动AD转换一次,不再需要使用TIM和ADC中断资源。

 

总结:想要使用STM32的定时器触发ADC,必须将定时器配置为比较输出PWM模式,并且一定要注意TIMx_CHx输出上升沿才出发,若是在比较匹配的瞬时产生的不是上升沿而是下降沿,那么就不一定是在比较匹配的瞬间触发ADC了,特别是在类似于电机控制的应用中要注意这一点。


关键字:STM32  定时器触发  ADC 引用地址:STM32定时器触发ADC

上一篇:STM32定时器初步
下一篇:GPIO的工作原理和配置方法

推荐阅读最新更新时间:2024-03-16 15:41

Teledyne e2v将EV12AQ600 ADC添加到太空应用认证的高性能数据转换器产品组合中
Teledyne e2v半导体公司将EV12AQ600 ADC添加到其经MIL-PRF-38535 Y级太空应用认证的高性能数据转换器产品组合中。 Teledyne e2v半导体公司将EV12AQ600 ADC添加到其经MIL-PRF-38535 Y级太空应用认证的高性能数据转换器产品组合中 法国格勒诺布尔 – Media OutReach - 2022年3月25日 – 领先的高可靠度半导体解决方案提供商Teledyne e2v今天宣布推出经太空认证的EV12AQ600,这是其拥有QML-Y太空认证的高性能产品组合中最先进、最通用的四核多通道ADC。 QML Y认证由美国航空航天局领导的工作组定义,并在最新版本
[模拟电子]
Teledyne e2v将EV12AQ600 <font color='red'>ADC</font>添加到太空应用认证的高性能数据转换器产品组合中
STM32定时器的编码器模式
/pre pre name= code class= objc /pre pre name= code class= objc /********************************************************************************** * @file: stm32定时器的编码器模式 * @date: 2015.8.2 * @author: shenhuixiang * @version: 1.0.0 **********************************************************************************
[单片机]
中断之NVIC
NVIC NVIC:嵌套向量中断寄存器 Nested vectored interrupt controller (NVIC)。 NVIC:是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。但是各个芯片厂商在设计芯片的时候会对 Cortex-M3 内核里面的 NVIC 进行裁剪,把不需要的部分去掉,所以说 STM32 的 NVIC 是 Cortex-M3 的 NVIC 的一个子集。 NVIC 结构体的定义 typedef struct{ __IO uint32_t ISER ; //中断使能寄存器 uint32_t RESERVED0 ; __IO uint32_t
[单片机]
中断之NVIC
MAX1169 ADC与PIC微控制器的接口
本应用笔记介绍如何连接MAX1169模数转换器(ADC)至PIC微控制器。提供了对应PIC18F442的实例电路和软件。该软件包含了利用内部MSSP I2C*端口,以400kHz速率连接ADC至PIC微控制器的函数调用。 MAX1169是一款16位、低功耗ADC,具有I2C兼容的2线串行接口。MAX1169的接口可支持快速模式(400kHz)和高速模式(高达1.7MHz)。 本应用笔记包括实例应用电路和用于PIC18F442的软件。该软件提供了利用内部MSSP I2C端口,以400kHz速率连接ADC至PIC微控制器的函数调用。因为其它微控制器具有类似的片上外围设备,所以实例中所提供的I2C通信程序被有意拆分为单独的I2C函数调
[单片机]
MAX1169 <font color='red'>ADC</font>与PIC微控制器的接口
STM32 关于ADC采交直流问题探讨
前沿 关于STM32采样问题,相信很多人曾遇到过这样的问题,无论是关于ADC底层相关的配置还是ADC采样方案的抉择,或者是ADC软硬件滤波算法,这里博主就自己曾做过的训练题为引申,探讨ADC采样过程中的问题。 1.ADC的认识 1.1 ADC初始化参数 /* Exported types ------------------------------------------------------------*/ /** * @brief ADC Init structure definition */ typedef struct { uint32_t ADC_Resolution;
[单片机]
<font color='red'>STM32</font> 关于<font color='red'>ADC</font>采交直流问题探讨
STM32F407-ADC(模数转换)
一、硬件 STM32F407开发板,杜邦线。 通过通道获取板载电压的模拟输入信号转变为数字信号,并通过转换变成电压。 STM32F407有3个ADC,每个ADC有16个通道,下表为ADC通道对应的引脚,使用哪个通道就用杜邦线将对应的引脚与模拟输入连接起来。 二、整体流程 ① 开启PA时钟和ADC1时钟,设置PA1为模拟输入。 RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); GPIO_Init(); 对于IO初始化要注意的
[单片机]
STM32F407-<font color='red'>ADC</font>(模数转换)
stm32之电源管理(实现低功耗)
前言:STM32F10xxx系列产品都有电源管理模块,芯片功耗会影响到一个产品的续航能力;比如在一些终端传感器场合里,为了减轻后期的维护投入,要求长期工作时间较长,更需要合理的芯片功耗管理。芯片自带几种运行模式,包括正常模式、睡眠模式、停止模式、待机模式。越往后,芯片的功耗越低,但能执行功能就越少。低功耗的电源管理策略就是在芯片不需要对外界响应的时候进入低功耗模式,而当外界条件满足的时候,退出低功耗模式(唤醒),正常执行处理工作。下面对其模式之间的转换和各个模式下的芯片内部的运转情况等一探究竟。 写代码前要先了解芯片的特性及工作原理,难免会先阅读一些长长的文档。下面核心讲解一些要点。 1.硬件原理 下图是芯片的电源框架:
[单片机]
<font color='red'>stm32</font>之电源管理(实现低功耗)
德州仪器推出业界首款支持SPICE模型的SAR ADC
2012 年 5 月 22日,北京讯 日前,德州仪器 (TI) 宣布推出一款具有可下载 TINA-TI™ SPICE 模型的逐次逼近寄存器 (SAR) 模数转换器 (ADC),首次帮助系统设计人员在软件中仿真整条模拟信号链。该模型适用于最新 12 位 1 MSPS 8 通道 ADS8028,这款高集成 SAR ADC 支持低漂移内部电压参考、宽泛外部模拟电压参考、宽泛模拟数字电源以及内部温度传感器。更多详情,敬请访问: www.ti.com.cn/ads8028-pr-cn。 设计人员以前在仿真、建模和测试 SAR ADC时,需要在硬件中投入大量时间和资源构建 ADC 电路,而可下载 TINA-TI SPICE 模型可用于所有最
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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