当前位置: 首页 > news >正文

【STM32】ADC模数转换基本原理

这篇文章是嵌入式中我通过大量资料 整合成了一份 系统完整、层次清晰的 ADC 模数转换原理解析 文档。

这里系统地梳理了 STM32F1 系列 ADC 模数转换的核心资料,包括:

1.原理 + 特性
2.通道配置
3.模式选择(单次/连续/扫描)
4.关键寄存器与时序
5.全套库函数调用方式
6.提供示例实验代码

📘 1. STM32F1 系列 ADC 模数转换原理详解

参考资料:
STM32F1xx官方资料:《STM32中文参考手册V10》-第11章 模拟/数字转换(ADC)

🧩 第一部分:STM32 ADC 基本原理

什么是 ADC?

ADC(Analog to Digital Converter) 是一种将模拟电压信号转换为数字信号的模块。在 STM32 中,ADC 是片上外设,可将 03.3V 的电压转换为 12 位数值(04095)。

ADC 指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。

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

STM32F10x ADC特点:

12位逐次逼近型的模拟数字转换器。
最多带3个ADC控制器
最多支持18个通道,可最多测量16个外部和2个内部信号源。
支持单次和连续转换模式
转换结束,注入转换结束,和发生模拟看门狗事件时产生中断。
通道0到通道n的自动扫描模式
自动校准
采样间隔可以按通道编程
规则通道和注入通道均有外部触发选项
转换结果支持左对齐或右对齐方式存储在16位数据寄存器
ADC转换时间:最大转换速率 1us。(最大转换速度为1MHz,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到。)
ADC供电要求:2.4V-3.6V
ADC输入范围:VREF- ≤ VIN ≤ VREF+

电压转换公式

V = (ADC_Value / 4096.0) * Vref

假设 Vref = 3.3V,ADC_Value = 2048:则

V = 2048 / 4096 * 3.3 = 1.65V
特性描述
转换精度12位(0~4095)
架构逐次逼近型(SAR)
控制器个数最多 3 个(ADC1~ADC3)
通道数量最多 18 个(16个外部 + 温度 + VREF)
模式单次 / 连续 / 扫描 / 注入
对齐方式左对齐 / 右对齐
校准功能支持自动校准
时钟要求ADCCLK ≤ 14MHz
🧩 第二部分:通道与引脚对应关系(如下图示)
STM32F10x大容量芯片带3个ADC控制器

在这里插入图片描述
其中144脚芯片因为带PF脚,所以多5个通道,为21个外部通道。小于144脚芯片只有16个外部通道。

【转换通道结构】
通道类型		最大通道数		特点
规则通道		16 个			正常顺序转换
注入通道		4 个			类似中断处理,可打断规则通道
内部通道		2 个			温度(ch16)、VREF(ch17)
STM32F10x系列芯片ADC通道和引脚对应关系

在这里插入图片描述

ADC引脚

在这里插入图片描述

ADC 模块框图(ADC 寄存器结构 + 模式)

在这里插入图片描述
在这里插入图片描述

ADC的模块包含:输入多路选择器模拟至数字转换器(SAR)控制逻辑(触发、注入/规则选择)数据寄存器(ADC_DR、JDRx)状态寄存器(ADC_SR)
STM32通道组

规则通道组: 相当正常运行的程序。最多16个通道。
规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的 L[3:0] 中。
注入通道组: 相当于中断。最多4个通道。
注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的 L[1:0] 中。

在这里插入图片描述
STM32F1的ADC的各通道可以单次,连续,扫描或者间断模式执行。

🧩 第三部分:模式选择(单次/连续/扫描)
转换模式:
模式描述
单次模式转换一次,需手动触发
连续模式自动持续转换
扫描模式多通道自动轮询
注入模式手动触发,可打断规则通道
软件触发SWSTART 启动
外部触发由定时器等外设触发(EXTSEL)
单次转化 VS 连续转换

在这里插入图片描述
在这里插入图片描述

扫描模式

在这里插入图片描述
在这里插入图片描述

ADC中断

在这里插入图片描述

ADC时钟配置
RCC_ADCCLKConfig(RCC_PCLK2_Div6); 

在这里插入图片描述

不要让ADC时钟超过14MHz,否则可能不准。


🧩 第四部分:关键寄存器与时序
📌 ADC 核心寄存器说明(简表)
寄存器作用
ADC_CR1模式选择,扫描模式使能,EOC中断
ADC_CR2启动控制、触发源、数据对齐、CONT
ADC_SQRx通道顺序配置
ADC_SMPRx通道采样时间配置
ADC_DR转换结果数据寄存器
ADC_SR状态标志(EOC、AWD等)
ADC_CR1寄存器

在扫描模式下,由ADC_SQRx或者ADC_JSQRx寄存器选中的通道被转换。如果设置了EOCIE或者JEOCIE,在最后一个通道转换完毕后才会产生EOC或者JEOC中断。

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/269619.html

相关文章:

  • EtherCAT与Profinet协议转换在工业自动化中的应用:以汇川伺服驱动器为例
  • 【FR801xH】富芮坤FR801xH之全功能按键案例
  • JVM系列六:JVM性能调优实战指南
  • Java基础回顾(1)
  • 7 种简单方法将三星文件传输到电脑
  • 瞄准Win10难民,苹果正推出塑料外壳、手机CPU的MacBook
  • 用户生命周期与改进型RFM模型
  • C#读取modbus值,C#读写modbus,支持读写uint32值,Modbus TCP工具类
  • HTTPS工作原理
  • java获取文件的消息摘要APP进行文件完整性校验
  • JavaScript基础篇——第二章 类型转换与常见错误解析
  • 二分查找篇——搜索二维矩阵【LeetCode】遍历法
  • qt-C++笔记之setCentralWidget的使用
  • Visual Studio Code 中统一配置文件在团队协作中的应用
  • 论文略读:Prefix-Tuning: Optimizing Continuous Prompts for Generation
  • Git 安装避坑指南:从环境检查到高级配置的全流程解析
  • EXCEL转html,含图片
  • Linux下SPHinXsys源码编译安装及使用
  • Flutter基础(前端教程③-跳转)
  • Wend看源码-RAGFlow(上)
  • nvm npm nrm 使用教程
  • 台式电脑如何连wifi 快速连接方法
  • synchronized 的使用和特性
  • 算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • VBA经典应用69例应用8:取消预设任务
  • (三)C#使用yolo
  • 在教育领域中,如何通过VRM分片错序对视频进行加密?
  • git学习:首次创建仓库
  • ubuntu 运行脚本打开WIFI adb
  • YOLO在自动驾驶交通标志识别中的应用与优化【附代码】