使用STM32F3系列进行ADC外部事件触发采集

本文详细介绍了如何在STM32F301C8T6单片机上设置ADC进行外部事件触发采集。内容涵盖时钟配置、电压校准、转换时间、外部触发和触发极性,以及提供了相关的代码示例。
摘要由CSDN通过智能技术生成

STM32F3系列的ADC具有高性能与低功耗的特征,本文以STM30F301C8T6举例。

该芯片的ADC具有AHB从总线接口,允许快速数据处理;且ADC转换时间与AHB总线时钟频率无关,相互独立。也就是说,该系列的ADC可以拥有72MHz的时钟频率,12位精度在快速通道下可以达到0.19μs的转换时间,慢速通道也可以达到0.21μs。低精度下(如10位)转换时间仅需0.16μs。并且有自校准以及可编程采样时间等其他STM32系列ADC通有的功能。
在这里插入图片描述

时钟

STM32F301x6/8系列具有双时钟域结构,即意味着ADC时钟是从AHB总线独立出来的,所以ADC可以由两个可选择的时钟源输入:

a)ADC时钟可以是一个特定的时钟源,名为“ADCxy_CK(xy=12或34),与AHB时钟独立且异步。它可以配置在RCC中,以提供高达72MHz的频率(PLL输出)。要选择此方案,ADCx_CCR寄存器的位CKMODE[1:0]必须置0。该选项具有ADC时钟频率可以达到最大的优点,无论已选择AHB时钟是什么。ADC时钟最终可除以一下系数进行分频:1、2、4、6、8、12、16、32、64、128、256。

b)ADC时钟可从ADC总线接口的AHB时钟导出,除以一个可编程的系数(1、2或4)。在这种模式下,根据位CKMODE[1:0]可选择一个可编程的除法系数(1、2或4)。要选择此方案,ADCx_CCR寄存器的位CKMODE[1:0]必须与“00”不同。该选项具有绕过时钟域重新同步的优点。当ADC由计时器触发和应用程序要求ADC精确触发且无任何不确定性时非常有用。
在这里插入图片描述

电压校准

开始ADC操作前需要进行以下操作:

  1. 使能ADC内部电压校准器
  2. 启动校准或启用ADC之前,软件必须等待ADC电压调节器的启动时间(TADCVREG_STUB)。这个
    时间必须通过软件实现。在最坏的工艺/温度/电源情况下TADCVREG_STUB等于10µs。

转换时间

转换开始和转换结束之间的时间是配置的采样时间加上取决于数据精度的逐次逼近时间分辨率:
在这里插入图片描述

外部触发和触发极性

如果EXTEN[1:0]控制位(对于规则转换)或JEXTEN[1:0]位(对于注入转换)与“0b00”不同,则外部事件能够触发所选极性的转换。当软件将位ADSTART置1,规则转换有效;当软件将位JADSTART置1,则注入转换选择有效。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:外部中断线11触发为事件6—EXT6

代码

adc.h

#ifndef __ADC_H
#define __ADC_H

#include <stm32f30x.h>

#define ADC1_IN3_PORT GPIOA
#define ADC1_IN3_PIN  GPIO_Pin_2

void  Adc_Init(void);

#endif

adc.c

#include "adc.h"
#include "delay.h"

void Adc_Init(void)
{
   
    /*define structure variables*/
    GPIO_InitTypeDef GPIO_InitStructure;
    ADC_InitTypeDef ADC_InitStructure
  • 17
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值