STM32小白笔记-ADC

ADCAnalog-Digital Converter)模拟-数字转换器

  1. ADC可以将引脚上连续变化的模拟电压转化为内存中储存的数字变量,建立模拟电路到数字电路的桥梁
  2. STM32ADC12位逐次逼近型ADC1us转换时间
  3. 输入电压范围0~3.3V,转换结果范围0~4095
  4. 18个输入通道,16个外部(GPIO)和2个内部信号(内部温度传感器和内部参考电压)
  5. 规则组和注入组两个转换单元
  6. 模拟看门狗自动检测输入电压范围
  7. STM32F103C8T6ADC资源:ADC1ADC210个外部输入通道

逐次逼近型ADC

左边IN0~IN7,是8路输入通道,通过通道选择开关,选中一路进行转换。当我们想选中哪一个通道时,可以把通道号放在ADDAADDBADDC上,给一个锁存信号ALE,这样通道选择开关就自动拨好了。这个通道选择开关就相当于一个可以通过模拟信号的数据选择器。因为ADC转换是一个很快的过程,几us就能转换完成,所以说如果想要转换多路信号,也不必设计多个AD转换器,只需要一个AD转换器加一个多路选择开关,想转换那一路就拨对应的开关,选中对应的通道就行了。

电压比较器可以判断两个输入信号电压的大小关系,输出一个电平指示谁大谁小。它的两个输入端,一个是待测的电压,一个是DAC(给它一个数据,它就可以输出数据对应的电压)的电压输出端。如果DAC输出的电压比较大,就调小DAC数据;如果DAC输出的电压比较小,就增大DAC数据,直到DAC电压和外部通道输入的电压近似相等,这样DAC输入的数据就是外部电压的编码数据。这个电压调节的过程就是逐次逼近SAR完成的。为了尽快找到未知电压的编码,通常采用二分法进行寻找。

ADC基本结构

左边是ADC输入通道,包括16GPIO口,和两个内部通道(内部温度传感器,内部参考电压)。信号由ADC输入通道来到模拟多路开关,模拟多路开关可以指定我们想要的通道。多路开关的输出进入到模数转换器,执行逐次比较的过程,转换结果会放在数据寄存器,我们读取数据寄存器就可以知道ADC转换的结果。

对于普通的ADC,多路开关一般只选中一个通道,在STM32中,多路开关可以选择多路。而且在转换的时候,还分成了两个组,规则通道组和注入通道组。规则组一次性可以选中16个通道,注入组最多可以选中4个通道。但是规则组数据寄存器只能存一个结果,下一个结果会覆盖上一个结果,如果不想这样,就必须及时将数据转运出去。而注入组数据寄存器有4个,能存四个结果,不用担心数据覆盖问题。

对于STM32ADC,触发ADC开始转换的信号有两种,一个是软件触发,一个是硬件触发,TIM1_TRGO~TIM8_CH4为注入组触发源,TIM1_CH1~TIM8_TRGO为规则组触发源。

由于ADCCLK最大为14MHzADC挂载在APB2总线上(72MHz),则ADC预分频器只能选择6分频(12MHz)和8分频(9MHz

4个注入通道数据寄存器和1个规则通道数据寄存器负责存放转换结果。转换完成后,有一个转换完成的信号。EOC是规则组转换完成的信号,JEOC是注入组转换完成信号。这两个信号会在状态寄存器置一个标志位,我们读取这个标志位就能知道是不是转换结束了,同时这两个标志位也会去向NVIC申请中断。

模拟看门狗里面可以存一个阈值高限和阈值低限,如果启动了模拟看门狗,并且指定了看门的通道,那这个看门狗就会关注它看门的通道,一旦超过这个阈值范围,就会申请一个模拟看门狗的中断,最后通向NVIC

ADC基本结构

通过开关控制给ADC上电后,由16GPIO、温度、VREFINT获得的模拟信号,进入AD转换器。AD转换器有两个组,规则组最多可以选中16个通道,注入组最多可以选择4个通道。配置好RCCADC时钟后,由触发控制提供开始转换信号,触发控制可以选择软件触发和硬件触发。硬件触发来自定时器或外部中断引脚。转换完成后有个EOC信号,会置一个标志位,可以通向NVIC。转换的结果可以存放在AD数据寄存器(规则组只有一个,注入组有四个)。而模拟看门狗可以监测转换结果范围,如果超出设定的阈值,就通过中断输出控制,向NVIC申请中断。

16个外部输入通道

ADC规则组转换模式:

单次转换,非扫描模式

每次转换,分别触发

连续转换,非扫描模式

只需触发一次,便可持续触发

单次转换,扫描模式

指定通道数目,依次进行转换。每次扫描前,分别触发

连续转换,扫描模式

指定通道数目,依次进行转换。只需触发一次,便可连续扫描

规则组触发源

数据对齐

STM32ADC12位的,它的转换结果就是一个12位的数据,但是数据寄存器是16位的,所以就有数据对齐的问题

  1. 数据右对齐(常用)

  1. 数据左对齐

转换时间

  1. AD转换的步骤:采样,保持,量化,编码
  2. STM32 ADC的总转换时间为:

TCONV = 采样时间 + 12.5ADC周期

  1. 例如:当ADCCLK=14MHz,采样时间为1.5ADC周期

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

校准

  1. ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
  2. 建议在每次上电后执行一次校准
  3. 启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值