ADC模数转换概述与采集实例

ADC模数转换概述与采集实例,第1张

一、STM32-ADC模数转换概述

1、ADC简介

ADC的概念

Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。

ADC的作用

采集传感器的数据,测量输入电压,检查电池电量剩余,监测温湿度等。

典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

ADC模数转换概述与采集实例,poYBAGLjmCyAfiQMAAA9kUe0n4c145.png,第2张

2、ADC的性能指标

量程:能测量的电压范围

分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。

转化时间:模拟输入电压在允许的最大变化范围内,从转换开始到获得稳定的数字量输出所需要的时间称为转换时间

3、STM32F4-ADC配置

STM32F40X有3个ADC,每个可配置 12 位、10 位、8 位或 6 位分辨率

每个ADC 有16个外部通道。另外还有两个内部 ADC 源 和 V BAT 通道挂在 ADC1上

这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。

ADC具有独立模式、双重模式和三重模式,对于不同 AD转换要求几乎都有合适的模式可选

ADC 的结果可以左对齐或右对齐方式存储在 16位数据寄存器中。

4、ADC的功能框图

ADC模数转换概述与采集实例,poYBAGLjmFqAR77VAAGbvFM6mo4029.png,第3张

1、输入电压范围

2、输入通道

3、转换顺序

4、转换时间

5、数据寄存器

6、中断

7、触发源

4.1、电压输入范围

ADC 输入范围为:V REF- ≤ V IN ≤ V REF+ 。由 V REF- 、V REF+ 、V DDA 、V SSA 、这四个外部引脚决定。

我们在设计原理图的时候一般把 V SSA 和 V REF- 接地,把 V REF+ 和 V DDA 接 3.3V,得到ADC的输入电压范围为:0~3.3V

如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到0~3.3V,这样 ADC 就可以测量了

4.2、输入通道

ADC模数转换概述与采集实例,poYBAGLjmG-AKeLGAAB3NuBRe8k951.png,第4张

每个ADC 有16个外部通道。另外还有两个内部 ADC 源 和 V BAT 通道挂在 ADC1上

ADC模数转换概述与采集实例,poYBAGLjmImAOyElAAEiXGHevKg339.png,第5张

 

ADC模数转换概述与采集实例,pYYBAGLjmJ6AfwhvAABvKfjHpnk226.png,第6张

4.3、转换顺序

规则通道组:

顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道。相当正常运行的程序。最多16个通道。

规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中

注入通道组:

注入,可以理解为插入,插队的意思,是一种不安分的通道。相当于中断。最多4个通道。

注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中

ADC模数转换概述与采集实例,pYYBAGLjmLeAMlo2AACD7CGLCKc778.png,第7张

4.4、转换时间

ADC 时钟

ADC 输入时钟 ADC_CLK 由 PCLK2 经过分频产生,最大值是 36MHz,典型值为30MHz。对于 STM32F407我们一般设置PCLK2=HCLK/2=84MHz。所以程序一般使用 4分频或者 6分频。

ADC模数转换概述与采集实例,pYYBAGLjmOKAPXCqAABogx_VEEU436.png,第8张

ADC 的总转换时间

Tconv = 采样时间 + 12个周期

ADC模数转换概述与采集实例,poYBAGLjmP6AZ9zxAAB_lgy8yYo429.png,第9张

最小采样时间: T = 3 + 12 = 15个周期 =0.42us(ADC时钟=36MHz下得到)

4.5、数据寄存器

规则数据寄存器 ADC_DR

ADC模数转换概述与采集实例,pYYBAGLjmQyAGVQSAABaJ2DW-0o243.png,第10张

ADC_DR只有一个,是一个 32 位的寄存器,只有低 16 位有效并且只是用于独立模式存放转换完成数据。因为 ADC 的最大精度是 12 位,ADC_DR 是16 位有效,这样允许 ADC存放数据时候选择左对齐或者右对齐,具体是以哪一种方式存放,由 ADC_CR2的 11 位 ALIGN 设置。

使用 DMA

由于规则通道组只有一个数据寄存器,因此,对于多个规则通道的转换,使用 DMA 非常有帮助。这样可以避免丢失在下一次写入之前还未被读出的 ADC_DR 寄存器中的数据。

在使能 DMA 模式的情况下(ADC_CR2 寄存器中的 DMA 位置 1),每完成规则通道组中的一个通道转换后,都会生成一个 DMA 请求。

4.6、中断

转换结束中断

规则通道和注入通道的数据转换结束后,都可以产生中断

模拟看门狗中断

当被 ADC 转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断

溢出中断

如果发生 DMA传输数据丢失,会置位 ADC 状态寄存器 ADC_SR的 OVR位,如果同时使能了溢出中断,那在转换结束后会产生一个溢出中断。

DMA 请求

规则和注入通道转换结束后,除了产生中断外,还可以产生 DMA请求,把转换好的数据直接存储在内存里面。

ADC模数转换概述与采集实例,poYBAGLjmTeAHCZvAAEIVBjj_3o425.png,第11张

4.7、触发源

软件触发

ADC转换可以由ADC 控制寄存器 2: ADC_CR2的 ADON这个位来控制,写 1的时候开始转换,写 0 的时候停止转换

外部事件触发

触发包括内部定时器触发和外部 IO触发。触发源有很多,具体选择哪一种触发源,由 ADC控制寄存器ADC_CR2的 EXTSEL[2:0]和 JEXTSEL[2:0]位来控制

ADC模数转换概述与采集实例,pYYBAGLjmUyALQ1MAAD9rxvPZkU707.png,第12张

5、ADC的工作模式

ADC模数转换概述与采集实例,poYBAGLjmWGANg6KAAFD3RvqrIE667.png,第13张

 

ADC模数转换概述与采集实例,pYYBAGLjmXWAGYuLAAEPCwOzcLI887.png,第14张

 

ADC模数转换概述与采集实例,poYBAGLjmY2Ad4LMAAG1I_0s4g0713.png,第15张

 

ADC模数转换概述与采集实例,poYBAGLjmaSAZDF6AAHH2cnFfUI266.png,第16张

二、单通道采集实例

利用ADC采集FSM4中电位器的数据

ADC模数转换概述与采集实例,poYBAGLjmbeAXXTHAABcRLHMKJE899.png,第17张

1、CubeMx配置

1、将引脚配置为ADC

ADC模数转换概述与采集实例,poYBAGLjmc2AfFQaAACpH5F4x-Y256.png,第18张

2、使能串口

ADC模数转换概述与采集实例,pYYBAGLjme2AfsF5AAC2nWjY_3c174.png,第19张

3、使能时钟

ADC模数转换概述与采集实例,poYBAGLjmf2ARPExAACj8ogv-Yo985.png,第20张

 

ADC模数转换概述与采集实例,pYYBAGLjmhOAHnVuAAFe5Y3Hutw321.png,第21张

4、ADC配置

ADC模数转换概述与采集实例,pYYBAGLjmi6AX8WHAAIRwFJGW8k921.png,第22张

5、中断使能

ADC模数转换概述与采集实例,poYBAGLjmkCAYlbmAAIJzuPhIcw477.png,第23张

2、代码实现

1、初始化

ADC模数转换概述与采集实例,pYYBAGLjmmWAC2kQAAGhXLZwDMA125.png,第24张

 

ADC模数转换概述与采集实例,poYBAGLjmnmAQEdPAAFZkXU0CyU159.png,第25张

2、数据采样  

      轮询方式实现

ADC模数转换概述与采集实例,poYBAGLjmo-AeOOFAAEGXNm6YyQ734.png,第26张

 

ADC模数转换概述与采集实例,poYBAGLjmrWAKWAfAAHc8-GYsl8529.png,第27张

 

ADC模数转换概述与采集实例,poYBAGLjms2ACr8jAAKQxy5yIss031.png,第28张

 

ADC模数转换概述与采集实例,poYBAGLjmt-AQNF_AAEvcAhkdiA731.png,第29张

通过中断采集

ADC模数转换概述与采集实例,pYYBAGLjmvSAEyiMAADHajsEKmo720.png,第30张

 

ADC模数转换概述与采集实例,poYBAGLjmzWAIxFuAAGpiWGqrXg296.png,第31张

采集完成触发中断

ADC模数转换概述与采集实例,pYYBAGLjm16AZSWEAAI8N1watyw289.png,第32张

 

ADC模数转换概述与采集实例,pYYBAGLjm3SAMPQyAAMv_69hrmQ410.png,第33张

 

ADC模数转换概述与采集实例,poYBAGLjm4eAOwvUAAKz_QIfD94738.png,第34张

 

ADC模数转换概述与采集实例,poYBAGLjm6iAZ9dzAAFcuKfu9jk803.png,第35张

 

ADC模数转换概述与采集实例,pYYBAGLjm7qAVvPjAAFxDS6N5co045.png,第36张

三、多通道采集实例

利用ADC采集电位器及STM32内部温度传感器的数据

ADC模数转换概述与采集实例,pYYBAGLjm82ADQ5eAABCaXhheQU366.png,第37张

 

ADC模数转换概述与采集实例,poYBAGLjm-OAacC2AABiHymn_jg956.png,第38张

1、CubeMx配置

1、配置电位器和温度通道

ADC模数转换概述与采集实例,poYBAGLjm_-ACQWrAAEajM2BRKI005.png,第39张

2、配置串口

ADC模数转换概述与采集实例,pYYBAGLjnBuAHLetAADsDlRdHd0834.png,第40张

3、使能时钟

ADC模数转换概述与采集实例,poYBAGLjnDCATqGFAACCvyhDul0568.png,第41张

 

ADC模数转换概述与采集实例,pYYBAGLjnESAKNphAAFVrb2g3Jc855.png,第42张

4、ADC配置,使用轮询方式:扫描模式,因为有两个通道

ADC模数转换概述与采集实例,poYBAGLjnHCAau0sAAGFeL3vj4o089.png,第43张

2、代码实现

1、使能ADC,然后轮询检测

ADC模数转换概述与采集实例,pYYBAGLjnIuAFdthAAFBSozS01E592.png,第44张

ADC轮流获取电位和温度,每启动一次会自动轮询两个通道。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2711573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存