STM32F407--ADC简介

ADC,即Anolog to Digital Converter,模拟信号到数字信号的转换。
模拟信号:连续的信号,就像连续函数一样的
数字信号:离散的信号,数字信号,就像点一样。
举例:若我们要将3.3V的交流电压,正弦信号转化为数字信号,若3.3V用数字信号100表示,则1.65V则用熟悉信号50表示。
一. 采集信号范围:0-3.3V

ADC 输入范围为: VREF- ≤ VIN ≤ VREF+。由 VREF-、 VREF+ 、 VDDA 、 VSSA、这四个外部引脚决定.在设计时,已经将VREF-与VSSA(模拟地)接在一起,而VREF+=3.3V,因此输入范围为0-3.3V。
STM32F407--ADC简介
问题:若想要测超出这个范围的电压怎么办?举例,测量-10V —10V
对输入信号进行外部处理。
-10V->0V 10V->3.3V
STM32F407--ADC简介
STM32F407--ADC简介
电阻的确定:先确定其中两个,再确定最后一个。

二. 3路18通道

  1. STM32F407有三路ADC,分别是ADC1,ADC2,ADC3,每一路有18个通道,有16个外部可以看到的通道,有两个内部通道。但是并不是说有三路,每路18个通道就总共有48个(不同)通道,三路有些通道是一样的,加起来外部总的有23个通到可以使用。(野火版的)
    STM32F407--ADC简介(野火版F407 ADC与I/O的对应)
    STM32F407--ADC简介
    (正点原子版F407与I/O的对应)
    对于ADC1来说,只有PA6,PB0,PB1,PC2没有被复用过,可以纯净的用作ADC1,其他的I/O口已经在其他地方使用,可能采集的信号会有杂波,使用被复用过的I/O口时,可以在使用之前做一个小测试,将I/O单独接入0V或者3.3V,观察能否采集到这两个极值,如果能的话,就说明基本不会产生杂波影响。
  2. 通道类型:规则通道和注入通道
    STM32F407--ADC简介
    什么是注入通道,什么是规则通道?
    注入通道:可以理解为插入,插队的意思,是一种不安分的通道。它是一种在规则通道转换的时候强行插入要转换的一种。如果在规则通道转换过程中,有注入通道插队,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程。这点跟中断程序很像。因此注入通道只有在规则通道存在时才会出现。
    规则通道就是很规矩的意思,我们平时一般使用的就是这个通道,或者应该说我们用到的都是这个通道
    三 .通道的优先顺序
    通道的优先顺序由一下寄存器控制,详见STM32F4XX中文参考手册
    STM32F407--ADC简介
  3. 规则序列通道的优先顺序
    STM32F407--ADC简介
    说明:SQR1的SQL决定需要控制的通道数,取值范围在1-16。若你想让通道0优先顺序为1,则你在SQR3的SQ1[4:0]位写入0x00就好了。
  4. 注入通道的优先顺序
    STM32F407--ADC简介
    四.触发源:告诉ADC开始采集的这个信号就叫触发
    STM32F407--ADC简介
    详见STM32F4XX中文参考手册:
    STM32F407--ADC简介
    五.转换时间
  5. 转换时间=采样周期(自己设置,最大为3,也是最快的)+分辨率个周期(12位分辨率就是12个周期)
    ADC的周期:ADC_ CLK(挂在APB2总线下) : ADC模拟电路时钟,最大值为36M,由PCLK2提供,还可分频,2/4/6/8 , ADC_ CCR的ADCPRE[1:0]设置。PCLK2= 84M。有关ADC_ CLK时钟的具体描述参考datasheet:5.3.21
    数字时钟: RCC APB2ENR ,用于访问寄存器
  6. 采样时间
    采样时间: ADC需要若干个ADC_ CLK周期完成对输入的模拟量进行采样,采样的周期数可通过ADC采样时间寄存器ADC SMPR1和ADC_ _SMPR2中的SMP[2:0]位设置,

ADC_ SMPR2控制的是通道0~9,ADC_ SMPR1控制的是通道10~17。每个通道可以分别用不同的时间采样。其中采样周期最小是3个,即如果我们要达到最快的采样, 那么应该设置采样周期为3个周期,这里说的周期就是1/ADC_ CLK。

STM32F407--ADC简介
举例:最短的转换时间:Tconv=采样时间+12个周期(12)
PCLK2=84M,ADC_CLK=84/4=21M
Tconv =3+12 = 15周期 = 15/21us=0.71us
六.转换方式

STM32F407--ADC简介
七.数据寄存器
一切准备就绪后,ADC转换后的数据根据转换组的不同,规则组的数据放在ADC_ DR寄存器,注入组的数据放在JDRx。如果是使用双重或者三重模式那规矩组的数据:是存放在通用规则寄存器ADC_ CDR内的。
STM32F407--ADC简介

  1. 规则数据寄存器:ADC_ DR寄存器
    STM32F407--ADC简介
    1.1. 只有16位有效数据,用于存放单个ADC模式转换完成数据
    1.2. 根据ADC_CR2:ALIGN位选择数据对齐方式
    1.3. 只有一个规则通道数据寄存器,由于数据都是存放在这个数据寄存器中,如果不及时取走,数据就会被覆盖,因此多通道的时候最好使用中断或着DMA 模式。我们可以将每一个通道的数据放入不同数组,再通过DMA得到数据。
  2. 注入数据寄存器
    STM32F407--ADC简介
    2.1. 只有16位有效数据,用于存放单个ADC模式转换完成数据
    2.2. 根据ADC_CR2:ALIGN位选择数据对齐方式
    2.3. 有四个这样的寄存器
  3. ADC_CDR
    STM32F407--ADC简介

STM32F407--ADC简介
1-32位有效,双重或者三重ADC使用,必须配合DMA
八.ADC的中断
涉及到的寄存器:
1 ADC _ SR , ADC_ CR1
2 ADC_ HTR , ADC_ LTR

STM32F407--ADC简介
看门狗中断是用来保护模拟信号范围的。举例:若采集到的信号电压范围为1V-3V,那么我们可以设置阈值上限电压为3V,阈值下限电压为1V,这样超出这个数据范围之外的错误电压信号就可以报警产生中断了。
模拟看门狗如何保护多个通道:
STM32F407--ADC简介
九.模拟量计算:
怎么根据数据量算出模拟量

1-电压输入范围为: 0~3.3V

2-分辨率为12位

3-最小精度为: 3.3/2^12

4-设数字量为X ,则有模拟量Y =(3.31 2^12)*X

本文为观看野火视频学习总结文章