IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32学习----ADC(数模转换) -> 正文阅读

[嵌入式]STM32学习----ADC(数模转换)

什么是ADC

ADC:(Analog to Digital Converter )模拟数字转换器,本质上是将模拟量转换为数字量。

模拟量:连续的量,温度,湿度,烟雾,电压,光;
数字量:离散的量
STM32F4这个芯片内部有一个温度传感器,开发板板载了一个型号
DS18B20的温度传感器,这个温度传感器内置了ADC,DS18B20为单总线通信。但是芯片内部也有温度传感器,只能测量芯片内部的工作温度,并且没有自带ADC。

STM32的ADC

当前芯片具有3个ADC外设,分别是ADC1,ADC2,ADC3。

12 位 ADC 是逐次趋近型模数转换器。
1、12位的ADC->是模拟量转换为数字量的数字量的最大值(0-4095)。
2、逐次趋近型->转换的数据慢慢的向真实数据靠近。
它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 VBAT 通道的信号。
1、16个外部源-》GPIO引脚
2、两个内部源-》温度传感器,芯片参考电压
3、VBAT-》纽扣电池电压,后备电源

采样模式:这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。
在这里插入图片描述
数据存储:ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。
十二位的ADC放入16位的数据寄存器中需要左右对齐
ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
ADC在STM32内部是将电压值转换为数字量,这里锁输入的电压值的范围一般都是固定的,如果用户没有自定义输入电压阈值的上下限,一般输入的电压范围都是0V-3.3V。加入用户自定义输入电压阈值的下限为1.2V,上限为3.0V,这个时候ADC允许输入的电压范围是1.2V-3.0V。

ADC输入电压

ADC两个非常重要的电压,分别是正模拟参考电压VREF+和负模拟参考电压VREF-;
ADC允许输入的电压范围:VREF- —— VREF+ (0V-3.3V)
VREF+:1.8V——VDDA=VDD=3.3V
VREF-:VSSA=VSS=0V
在这里插入图片描述
示例:如果输入的电压采样后为1.1V,则转换的数字量为1365;

ADC特点

● 可配置 12 位、10 位、8 位或 6 位分辨率
正常:ADC输出数字量范围:0-4095(基于分辨率12位)
8位分辨率(0-255):1.1V -》 85
分辨率越高转换的精度越高。
● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
● 单次和连续转换模式
● 用于自动将通道 0 转换为通道“n”的扫描模式=》多通道
● 数据对齐以保持内置数据一致性
● 可独立设置各通道采样时间
● 外部触发器选项,可为规则转换和注入转换配置极性
● 不连续采样模式
● 双重/三重模式(具有 2 个或更多 ADC 的器件提供)
● 双重/三重 ADC 模式下可配置的 DMA 数据存储
● 双重/三重交替模式下可配置的转换间延迟
● ADC 转换类型(参见数据手册)
● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
● ADC 输入范围:VREF— VIN VREF+
● 规则通道转换期间可产生 DMA 请求

ADC输入引脚

目前STM32F4有3个ADC,每个ADC的外部输入源16个,可能有的引脚被三个ADC或者两个ADC共有。
假设PA0,可以是ADC1的通道1,可以是ADC2的通道5,可以是ADC3的通道10。
对于ADC1来说,有8个模拟输入通道可以被3个ADC共用;
在这里插入图片描述

ADC时钟

ADC 具有两个时钟方案:
用于模拟电路的时钟:ADCCLK,所有 ADC 共用
此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 fPCLK2/2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。

● 用于数字接口的时钟(用于寄存器读/写访问)
此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR) 分别为每个 ADC 使能/禁止数字接口时钟。

对于ADC1来说,有8个模拟输入通道可以被3个ADC共用;
对于ADC2来说,有8个模拟输入通道可以被ADC1和ADC2共用;
对于ADC3来说,有8个模拟输入通道专门用于ADC3;

ADC输入通道

1、外部输入通道–16个
有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。
● 一个规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。
● 一个注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位。
如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。
2、内部输入通道–3个温度传感器、VREFINT 和 VBAT 内部通道
● 温度传感器内部连接到通道 ADC1_IN16。
● 内部参考电压 VREFINT 连接到 ADC1_IN17。
● VBAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。
注意: 温度传感器、VREFINT 和 VBAT 通道只在主 ADC1 外设上可用

ADC框图分析

在这里插入图片描述
ADC的触发转换方式:
1、通用定时器触发ADC转换,这里没有基本定时器,因为基本定时器智能触发DAC转换;
2、外部中断可以产生一个触发脉冲,触发ADC转换;
软件触发。

ADC时序

在这里插入图片描述

数据对齐

在这里插入图片描述

ADC转换方式

ADC转换模式:1、单次转换 2、连续转换模式

单次转换模式

在规则通道中:ADC1_CH1
单次:在单次转换模式下,ADC 执行一次转换。给一次触发信号,触发一次ADC转换。
第一次:采集ADC1_CH1的模拟量数据 -> 软件触发 -> 模拟量数据转换为数字量 ->保存到DR;
第二次:采集ADC1_CH1的模拟量数据 -> 软件触发 -> 模拟量数据转换为数字量 ->保存到DR;

配置单次转换模式:CONT 位为 0 时,可通过以下方式启动此模式:
● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道),开启规则通道;软件触发转换
● 将 JSWSTART 位置 1(适用于注入通道) ,开启注入通道;软件触发转换
● 外部触发(适用于规则通道或注入通道)。定时器触发,外部中断触发。
完成所选通道的转换之后:

● 如果转换了规则通道:
— 转换数据存储在 16 位 ADC_DR 寄存器中
— EOC(转换结束)标志置 1
— EOCIE 位置 1 时将产生中断
● 如果转换了注入通道:
— 转换数据存储在 16 位 ADC_JDR1 寄存器中
— JEOC(注入转换结束)标志置 1
— JEOCIE 位置 1 时将产生中断
然后,ADC 停止。

连续转换模式

在规则通道中:ADC1_CH1
在连续转换模式下CONT 位为 1时,ADC 结束一个转换后立即启动一个新的转换。将ADC配置连续模式,只需要在第一次转换时给触发信号,后面不需要再给。只适用于规则通道。
第一次:采集ADC1_CH1的模拟量数据 -> 软件触发 -> 模拟量数据转换为数字量 ->保存到DR;
第二次:采集ADC1_CH1的模拟量数据 -> 模拟量数据转换为数字量 ->保存到DR;

● 如果转换了规则通道组:
— 上次转换的数据存储在 16 位 ADC_DR 寄存器中
— EOC(转换结束)标志置 1
— EOCIE 位置 1 时将产生中断

扫描模式

扫描模式是针对于多通道,在规则通道中:ADC1_CH1 ADC1_CH2 ADC1_CH3
为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。
1、单次扫描模式
第一次触发:ADC1_CH1 -> ADC1_CH2 -> ADC1_CH3 -> 等待第2次触发 ->ADC停止
第二次触发:ADC1_CH1 -> ADC2_CH4 -> ADC1_CH7 -> 等待第3次触发
2、连续扫描模式
第一次触发:ADC1_CH1 -> ADC1_CH2 -> ADC1_CH3 ->(转换完成) -> ADC1_CH1 -> ADC1_CH2 -> ADC1_CH3 ->连续转换。

扫描模式的配置:
通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。

不连续采样模式

在这里插入图片描述

ADC寄存器

数据寄存器ADC_DR
在这里插入图片描述

位 15:0 DATA[15:0]:规则数据 (Regular data)
这些位为只读。它们包括来自规则通道的转换结果。数据有左对齐和右对齐两种。
状态寄存器ADC_SR
在这里插入图片描述
位 1 EOC:规则通道转换结束 (Regular channel end of conversion)
规则组通道转换结束后,硬件将该位置 1。通过软件或通过读取 ADC_DR 寄存器将该位清零。
0:转换未完成 (EOCS=0) 或转换序列未完成 (EOCS=1)
1:转换已完成 (EOCS=0) 或转换序列已完成 (EOCS=1)

控制寄存器2 ADC_CR2
在这里插入图片描述
位 10 EOCS:结束转换选择 (End of conversion selection)
此位由软件置 1 和清零。
0:在每个规则转换序列结束时将 EOC 位置 1。溢出检测仅在 DMA=1 时使能。
1:在每个规则转换结束时将 EOC 位置 1。使能溢出检测。
位 1 CONT:连续转换 (Continuous conversion)
此位由软件置 1 和清零。该位置 1 时,转换将持续进行,直到该位清零。
0:单次转换模式
1:连续转换模式
位 30 SWSTART:开始转换规则通道 (Start conversion of regular channels)
通过软件将该位置 1 可开始转换,而硬件会在转换开始后将该位清零。
0:复位状态
1:开始转换规则通道
注意:该位只能在 ADON = 1 时置 1,否则不会启动转换。

控制寄存器1 ADC_CR1
在这里插入图片描述
位 8 SCAN:扫描模式 (Scan mode)
通过软件将该位置 1 和清零可使能/禁止扫描模式。在扫描模式下,转换通过 ADC_SQRx 或
ADC_JSQRx 寄存器选择的输入。
0:禁止扫描模式
1:使能扫描模式

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 19:03:54  更:2022-07-20 19:06:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:28:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码