news 2026/5/26 0:54:39

学习笔记——ADC(模数转换器)技术

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记——ADC(模数转换器)技术

ADC(模数转换器)技术详解

1. 什么是ADC?

ADC(Analog-to-Digital Converter)即模拟-数字转换器,是一种将连续变化的模拟信号转换为离散数字信号的电子设备或模块。

特性:

  • 输入:连续模拟信号(通常是电压信号)

  • 输出:离散数字信号(二进制代码)

  • 作用:作为物理世界与数字系统(如微处理器、微控制器)之间的桥梁

典型应用场景:

  • 传感器信号采集(温度、光照、压力等)

  • 音频信号处理

  • 工业测量与控制

  • 医疗电子设备

2. 什么是ADC的基准电压?

基准电压是ADC进行转换的参考标准,决定了ADC的测量范围和精度。

关键概念:

  • ADC_VREFH:参考电压高电平(如i.MX6ULL中的ADC_VREFH引脚)

  • ADC_VREFL:参考电压低电平(通常接地)

  • 测量范围:输入模拟电压必须在VREFL和VREFH之间

i.MX6ULL ADC参考电压配置:

[REFSEL] b12-b11:电压参考源选择 00 = 使用VREFH/VREFL引脚的外部参考电压
  • 通常VREFH接3.3V,VREFL接GND(0V)

  • 输入电压超过基准电压范围会导致结果饱和(全0或全1)

3. ADC的工作原理

基本转换过程(以逐次逼近型ADC为例):

模拟信号 → 采样保持 → 量化 → 编码 → 数字输出
(1)采样(Sampling)
  • 以固定时间间隔采集模拟信号的瞬时值

  • 奈奎斯特采样定理:采样频率必须大于信号最高频率的2倍

(2)保持(Hold)
  • 保持采样值稳定,便于ADC进行转换

  • i.MX6ULL配置选项:

    [ADLSMP] b4:长采样时间配置 [ADSTS] b9-b8:采样时间选择
(3)量化(Quantization)
  • 将连续幅度离散化

  • 将采样值映射到最接近的离散电平

  • 量化误差 = ±1/2 LSB

(4)编码(Encoding)
  • 将量化后的电平转换为二进制代码

  • i.MX6ULL支持多种分辨率:

    [MODE] b3-b2:转换模式选择(分辨率) 00 = 8位单端 01 = 10位单端 10 = 12位单端(常用) 11 = 10位差分

4. 什么是ADC的分辨率?

定义:

分辨率表示ADC能够区分的最小输入电压变化,通常用位数表示。

常见分辨率:

位数量化级数理论精度应用场景
8位2560.39%简单控制
10位10240.098%一般测量
12位40960.024%精密测量(i.MX6ULL支持)
14位163840.0061%高精度测量
16位655360.0015%专业仪器
24位16.7M0.000006%高精度传感器

i.MX6ULL ADC分辨率配置:

// 配置为12位分辨率 ADCx_CFG |= (0x2 << 2); // MODE[3:2] = 10

5. 电压计算公式(12位分辨率,3.3V基准)

基本公式:

𝑉𝑎𝑐𝑡𝑢𝑎𝑙=𝑛212×𝑉𝑟𝑒𝑓=𝑛4096×3.3𝑉Vactual​=212n​×Vref​=4096n​×3.3V

推导过程:

  1. 分辨率:12位 → 2¹² = 4096个量化级

  2. 每个LSB代表的电压

    𝐿𝑆𝐵=𝑉𝑟𝑒𝑓4096=3.3𝑉4096≈0.0008057𝑉≈0.806𝑚𝑉LSB=4096Vref​​=40963.3V​≈0.0008057V≈0.806mV
  3. 实际电压计算

    𝑉𝑎𝑐𝑡𝑢𝑎𝑙=𝑛×𝐿𝑆𝐵=𝑛×3.3𝑉4096Vactual​=n×LSB=n×40963.3V​

计算示例:

量化结果n实际电压计算电压值
00/4096 × 3.3V0V
20482048/4096 × 3.3V1.65V
40954095/4096 × 3.3V≈3.2992V

代码实现:

// 将ADC原始值转换为电压值(12位分辨率,3.3V基准) float adc_to_voltage(uint16_t adc_value) { // 确保值在有效范围内 if (adc_value > 4095) adc_value = 4095; // 计算电压值 float voltage = (float)adc_value * 3.3f / 4096.0f; return voltage; } // 示例:ADC读取值为2048时 uint16_t raw_value = 2048; // ADC原始数据 float voltage = adc_to_voltage(raw_value); // voltage ≈ 1.65V

i.MX6ULL ADC数据读取:

// 读取ADC转换结果(12位数据在低12位) uint16_t read_adc_value(void) { // 等待转换完成 while (!(ADC1_HS & 0x01)) { // 等待COCO0标志置位 } // 读取转换结果 uint16_t result = ADC1_R0 & 0x0FFF; // 取低12位 return result; }

总结要点

  1. ADC是模拟与数字世界的桥梁,实现连续信号到离散信号的转换

  2. 基准电压决定测量范围和精度,必须稳定准确

  3. 工作原理包括采样、保持、量化、编码四个关键步骤

  4. 分辨率表示精度,位数越高,量化误差越小

  5. 电压计算遵循线性关系:V_actual = (n / 2^N) × V_ref

实际应用注意事项

  1. 输入阻抗匹配:确保信号源阻抗与ADC输入阻抗匹配

  2. 噪声抑制:在ADC输入前添加RC滤波电路

  3. 采样速率选择:根据信号频率选择合适采样率

  4. 校准使用:定期进行ADC校准以提高精度

  5. 参考电压稳定性:使用稳定、低噪声的参考电压源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 5:35:32

【MyCat】第3章 ----搭建读写分离

文章目录 3.1 搭建一主一从1、 搭建 MySQL 数据库主从复制2、 修改 Mycat 的配置文件 schema.xml3、 启动 Mycat4、 验证读写分离 3.2 搭建双主双从1、 搭建 MySQL 数据库主从复制&#xff08;双主双从&#xff09;2、 修改 Mycat 的配置文件 schema.xml3、 启动 Mycat4、 验证…

作者头像 李华
网站建设 2026/5/23 3:20:02

【MyCat】第5章----水平拆分——分表

文章目录5.1 实现分表1、 选择要拆分的表2、 分表字段3、 修改配置文件 schema.xml4、 修改配置文件 rule.xml5、 在数据节点 dn2 上建 orders 表6、 重启 Mycat&#xff0c;让配置生效7、 访问 Mycat 实现分片5.3 常用分片规则1、 取模2、 分片枚举3、 范围约定5.4 全局序列1、…

作者头像 李华
网站建设 2026/5/21 23:15:46

2026 年 AI 如何将 3D 渲染时间缩短 70%?原理解析 + 云渲染实战方案

在 3D 可视化与影视特效行业&#xff0c;一直以来渲染速度缓慢都是制约创意开展与效率提升的核心痛点&#xff1a;从高质量影像输出到复杂场景预览&#xff0c;往往需要耗费数小时甚至数天的时间&#xff0c;这不仅延长制作周期&#xff0c;还直接影响成本与客户满意度。随着 2…

作者头像 李华
网站建设 2026/5/22 9:56:23

如何在应用程序中安装插件并使用

应用程序与插件的关系、安装使用及核心机制 一、应用程序与插件的关系 1.1 基本关系 应用程序是独立运行的软件&#xff0c;而插件&#xff08;也称为扩展、附加组件&#xff09;是扩展应用程序功能的独立模块。它们的关系类似于&#xff1a; 主机与客体的关系&#xff1a;…

作者头像 李华