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

嵌入式硬件篇---ADC模拟-数字转换


文章目录

  • 前言
  • 第一部分:STM32 ADC的主要特点
    • 1.分辨率
    • 2.多通道
    • 3.转换模式
    • 4.转换速度
    • 5.触发源
    • 6.数据对齐
    • 7.温度传感器和Vrefint通道
  • 第二部分:STM32 ADC的工作流程:
    • 1.配置ADC
    • 2.启动ADC转换
  • 第三部分:ADC转化
    • 1.抽样
    • 2.量化
    • 3.编码
  • 第四部分:额外小知识
  • 总结


前言

以上就是今天要讲的内容,本文仅仅简单介绍了STM32中ADC模拟-数字转换的实现。


第一部分:STM32 ADC的主要特点

1.分辨率

分辨率:STM32的ADC通常具有12位、10位、8位或6位的分辨率。这意味着它们可以将模拟信号分为212、210、28或26个不同的电平。

2.多通道

多通道:STM32微控制器通常具有多个模拟输入通道,允许同时或分时转换多个信号。

3.转换模式

单次转换模式:ADC只执行一次转换
连续转换模式:ADC连续执行转换,不需要软件干预。

4.转换速度

转换速度:STM32的ADC转换速度可以从几微秒到几十微秒不等,具体取决于MCU型号和配置。

5.触发源

触发源:转换可以由软件触发,也可以由外部事件(如定时器捕获事件)触发。

6.数据对齐

数据对齐:数据可以在左对齐或右对齐的格式中读取。

7.温度传感器和Vrefint通道

温度传感器和Vrefint通道:某些STM32微控制器内置了温度传感器和内部参考电压(Vrefint)通道,可以直接连接到ADC。

第二部分:STM32 ADC的工作流程:

1.配置ADC

  1. 选择ADC通道。
  2. 设置分辨率。
  3. 选择转换模式(单次或连续)。
  4. 配置触发源。
  5. 设置采样时间(对于不同通道可能不同)。
  6. 启动ADC校准(如果需要):校准是为了提高转换精度。

2.启动ADC转换

  1. 在单次转换模式下,通过软件命令启动转换。
  2. 在连续转换模式下,转换会自动开始。
  3. 读取转换结果:转换完成后,结果存储在ADC数据寄存器中,可以通过软件读取。
  4. 中断和DMA:转换完成后,可以配置ADC产生中断或直接使用DMA(直接内存访问)将转换结果传输到内存中,减少CPU的负担。

第三部分:ADC转化

1.抽样

对模拟信号进行采样(间隔固定周期),获得在时间上离散的信号(抽样信号)

2.量化

本质:根据某一标准进行分级
通过提高分辨率,实现准确的ADC转换

3.编码

将量化结果进行编码存储

第四部分:额外小知识

  1. 数字信号:高电平或者低电平
  2. 模拟信号:任意的电压值
  3. STM32中使用逐次逼近法来实现模拟数字转化(通过二分比较来判断大小)将比较结果存储到专门存储比较结果的数据寄存器中,通过归一化转化及乘以参考电压来实现结果值获取
  4. STM32会通过存储待测电压于电容上实现提高测量准确率的效果
  5. STM32F103有16个GPIO口能进行电压值采样工作(16个ADC外部通道);但在STM32F103C8T6上只前10个ADC外部通道,但有两个内部通道来采集芯片内部的电压值(内部的芯片传感器上、内部的参考电压上)
  6. STM32存在连个ADC转换通道
  7. STM32的内部参考电压会比外部参考电压更准确,因此可以使用对内部参考电压的ADC测量反推实际的参考电压进而实现更准确的ADC测量
  8. ADC实现方法:Pipeline ADC、逐次逼近ADC、Sigma-Delta ADC,这三种ADC实现方法的分辨率逐渐提高同时采样速度逐渐下降

总结

以上就是今天要讲的内容,本文仅仅简单介绍了STM32中ADC模拟-数字转换的实现。


http://www.kler.cn/a/512657.html

相关文章:

  • JavaScript学习笔记(1)
  • Kotlin协程中withContext、async 和 launch 的区别
  • 一文了解如何在Qt中间集成Halcon窗口并在子线程显示(附工程源码下载链接)
  • 【Python】循环语句
  • Python基于OpenCV和PyQt5的人脸识别上课签到系统【附源码】
  • AI发展困境:技术路径与实践约束的博弈
  • MySQL表的增删改查(基础)CRUD
  • 【PCIe 总线及设备入门学习专栏 6.2 -- PCIe VDM (Vendor Defined Messages)】
  • Kubernetes 集群网络及服务暴露方式详解
  • 【Linux 重装】Ubuntu 启动盘 U盘无法被识别,如何处理?
  • 一款功能强大的互联网资产测绘引擎-CyberEdge
  • Dockerfile -> Docker image -> Docker container
  • Docker 学习总结(85)—— docker cp 使用总结
  • 2025 最新flutter面试总结
  • 不用编程即可实现多台PLC的MQTT协议JSON文件发布与订阅的智能网关的配置说明
  • Slate文档编辑器-Node节点与Path路径映射
  • dl学习笔记:(5)深度神经网络的正向传播
  • 使用minio高性能存储图片
  • 电子应用设计方案91:智能AI花洒系统设计
  • C# 常用的文件处理方法
  • 【STM32-学习笔记-12-】PWR电源控制
  • 数据结构(精讲)----绪论
  • C# 委托(Delegate)的使用方法及使用场景
  • MySQL可直接使用的查询表的列信息
  • Nginx:从入门到实战使用教程
  • 如何在Mac上优雅的使用nvm管理Node.js