【STM32】ADC模拟数字转换(规则组单通道)

本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 

目录

 ADC简介

ADC时钟配置

引脚模拟输入模式

规则组通道选择

ADC初始化 

工作模式

数据对齐

 触发转换方式

连续与单次转换模式

扫描模式

组内的通道个数

ADC初始化框架

ADC上电

ADC校验

 获取转换数据

 ADC规则组单通道框架

 AD.h

 AD.c


 ADC简介

  • ADC(Analog-Digital Converter)模拟-数字转换器
  • ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁
  • 12位逐次逼近型ADC,1us转换时间
  • 输入电压范围:0~3.3V,
  • 转换结果范围:0~4095 ,18个输入通道,可测量16个外部和2个内部信号源
  • 规则组和注入组两个转换单元
  • 模拟看门狗自动监测输入电压范围

STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道

ADC时钟配置

就是配置上图的RCC时钟部分,为ADC提供时钟(CLOCKk)信号

已知ADC都在APB2总线(如图)

再由RCC时钟树,需要使能APB2外设的ADC时钟。ADCCLK最大为14MHz,大于14MHz将导致转换结果准确度下降。可选6分频或8分频,分别提供最大12MHz和9MHz的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);//ADC1外设时钟使能
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//选择时钟6分频,ADCCLK = 72MHz / 6 = 12MHz

引脚模拟输入模式

 内部通道

温度传感器和通道ADC1_IN16相连接

内部参照电压VREFINT和ADC1_IN17相连接

注意: 温度传感器和VREFINT只能出现在主ADC1中

外部通道

选择模拟输入模式,外部的模拟信号直接作为ADCx的INy(y=0~15)

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO初始化

STM32F103C8T6的PA0默认复用为ADC1_IN0

GPIO的其它参数的理解可以阅读下方博客,这里不再赘述。

【STM32】GPIO和AFIO标准库使用框架-优快云博客

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  //ADC1的通道0
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

规则组通道选择

在任意多个通道上以任意顺序进行的一系列转换构成成组转换。

STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正 常运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你 的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换

先学习规则组通道转换ÿ

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值