模数转换ADC模块

2023-05-16

通用基础知识

ADC模块是嵌入式应用中重要的组成部分,是嵌入式系统与外界连接的纽带,是在测控系统中的重要内容。
 

ADC模块:即模数转换模块/AD转换模块,功能是将电压信号转换为相应的数字信号。实际应用中,这个电压信号可能由温度、湿度、压力等实际物理量经过传感器和相应的变换电路转化而来。经过AD转换,MCU就可以处理这些物理量。

转换精度

指数字量变化一个最小量模拟信号的变化量,也称分辨率,一般用ADC模块的位数来表示。通常ADC模块的位数有8位、10位、12位、14位、16位等。设采样位数为n,则最小的能检测到的模拟量变化值为½ⁿ

例如某一个AD转换模块是12位,若参考电压为5V,那这个AD模块可检测到的模拟量变化最小值(转换精度)为5/(2¹²)=1.22(mV)。

转换速度

通常用完成一次AD转换所要花费的时间表示AD转换器的转换速度。转换速度与AD转换器的硬件类型及制造工艺等因素密切相关,其特征值为纳秒级。

单端输入和差分输入

单端输入:指AD采集只有一个输入引脚,使用公共地GND作为参考电平。简单但容易受到干扰,由于GND电位始终是0V,因此AD值也会随着干扰而变化。

差分输入:比单端输入多了一个引脚,AD采样值是两个引脚的电平差值,降低了干扰,但是多用了一个引脚。通常两根差分线会布在一起,因此受到的干扰程度接近。

AD参考电压

在进行AD转换时,需要一个参考电压。例如把一个电压分成1024份,每一分的基准必须是稳定的,这个电平来自于基准电压(即AD参考电压)

在要求不是很精确的情况下,AD参考电压使用给芯片功能供电的电源电压。在更为精确的要求中,AD参考电压使用单独电源,要求功率小,波动小,一般电源电压达不到这个精度,否则成本太高。


为了使采集的数据更准确,必须的对采样的数据进行筛选去掉误差较大的毛刺。

滤波方法

通常采用中值滤波和均值滤波来提高采样精度。

中值滤波:将M次连续采样值按大小进行排序,取中间值作为滤波输出。

均值滤波:把N次采样结果值相加,然后除以采样次数N,得到的平均值。

若要得到更好的精度,可以通过建立其他误差模型分析方法来实现。


在实际应用中,得到稳定的AD采样值后,还需要把AD采样值与实际物理量对应起来。

物理量回归

AD转换的目的是把模拟信号转化为数字信号,供计算机进行处理,但必须知道AD转换后的数值所代表的实际物理量的值,这样才有实际意义。

例如,利用MCU采集室内温度,AD转换后的数值是126,实际温度25.1ᵒC。

设AD值为x,实际物理量为y,物理量回归就是寻找x与y之间的函数关系y=f(x)。


KL25 ADC通道输入表

KL25的ADC模块只有一个,记为ADC0,是线性逐次逼近ADC,最高转换精度为16位。

同时具有单端输入和差分输入两种采集模式。

差分模式的精度可配置为16位、13位、11位、9位。

单端模式的精度可配置为16位、12位、10位、8位。

KL25中还有其他形式的模拟输入通道,如芯片内部包含一个温度传感器,他的输出信号接在ADC模拟量个输入通道上,通道号为26。

ADC驱动构件

AD模块具有初始化、采样、滤波等操作。

按照构件化的思想,可将它们封装成独立的功能函数。

AD构件包括头文件adc.c和adc.h文件。

ADC驱动构件头文件

主要包括相关宏定义、AD的功能函数原型说明等内容AD各功能函数的实现。

在adc.h中,给出了定义AD采样次数的宏定义、输入模式的宏定义和A/B通道组的通道选择的宏定义。

adc_init函数需要完成对ADC模块的初始化,需要通过参数的主要有:输入模式(单端or差分)、转换精度、硬件滤波次数。

其他三个参数:转换速度、参考电压和物理量回归是由硬件决定或是需要具体应用程序来完成。

另一个需要初始化时制定的是通道组,用以选择使用KL25中的A通道还是B通道进行AD转换。

adc_read函数仅有一个参数,channel,即所需读AD转换值的通道号。使用这个函数之前,需调用初始化函数对相应通道组进行初始化。

根据以上两个函数,就可以正常使用AD转换功能。

以采集并输出KL25芯片温度为例,介绍ADC构件的使用方法。

ADC工程样例

第一步:adc_init(MUXSEL_A,AD_SINGLE,16,SAMPKE32);初始化A通道,单端输入,16位精度,32次硬件滤波的AD转换;

第二步:advalue=adc_read(26);读取通道26,每次采集32次硬件滤波,赋给16位无符号整形变量advalue;

第三步:float VTemp,temp;VTemp=(advalue*3300)>>16;//或VTemp=(advalue*3300)/65536.0;temp=25-(VTemp-719)/1.715;将读取的AD值通过公式转换成温度,具体公式参考KL25芯片手册。

第四步:printf("%f",temp);在串口调试工具观察温度传感器输出的温度

AD模块构件编程思想

AD初始化需要四个参数,即在进行AD初始化时主要就是对这四个参数进行寄存器配置。

通过对ADC_CFG2寄存器的D4位进行配置,选择使用A组或B组通道。

通过对ADC0_SC1A寄存器的D5位操作,配置是使用单端输入或差分输入,若选择差分输入模式,还需要对ADC模块进行校正。

通过对ADC_CFG1寄存器的D3D2位进行操作,选择ADC模块的采样精度。

对ADC0_SC3寄存器的配置,选择硬件滤波的次数。


关于ADC模块数据的读取,需要了解ADC0_SC1A、ADC0_RA这两个寄存器。

在读取AD数据时,等待ADC0_SC1A寄存器的COCO位被置位,一旦检测到COCO被置位,说明转换完成,即可读取数据结果寄存器ADC0_RA中的数据。

至此一次AD数据就读取完成了。

嵌入式技术基础与实践(第4版) 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模数转换ADC模块 的相关文章

  • 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题

    最近在开发STM32L0xx系列产品的ADC采集项目 xff0c 在老工程上添加库函数 xff0c stm32l0xx hal adc h stm32l0xx hal adc c函数 进行ADC初始化 xff0c 编译不通过出现 xff0c
  • 小松的STM32教程(6)——ADC

    预备 学习目标 学会调用Get Adc Average函数会使能多个ADC通道 概述 ADC输入电压范围 xff1a 2 4V 3 6V xff0c 一般使用0V和3 3V 数据对齐 xff1a 16bit存放12bit的转换数据 xff0
  • 【STM32学习】模数转换器——ADC

    STM32学习 模数转换器 ADC 零 参考一 ADC转换耗时二 转换模式三 对某些寄存器的理解1 ADC CR22 ADC SQRX 四 库函数注意事项 零 参考 STM32固件库 xff08 标准外设库 xff09 入门学习 第七章 A
  • 使用STM32CubeMX 配置ADC+DAC(DMA)感受

    STM32CubeMX使用感受 开篇先说一下个人使用STM32CubeMX的感受 xff0c 第一点的感受就是STM32CubeMX加速了开发流程 xff0c ST官方的库写的很好 xff0c 在使用之前 xff0c 开发流程一般是打开如正
  • STM32H7A3 ADC+DMA使用问题

    问题1 xff1a DMA采用半字传输16位ADC值 xff0c 用于存储ADC数据的数组一定是采集数的两倍 xff0c 否则会产生ADC溢出的错误中断HAL ADC ErrorCallback xff0c 从而无法进入ADC采集完成中断H
  • 对于LSB的理解(位的LSB、模数转换的LSB)

    之前对于LSB的理解 xff1a 最高有效位 xff08 MSB xff09 指二进制中最高值的比特 在16比特的数字音频中 xff0c 其第1个比特便对16bit的字的数值有最大的影响 例如 xff0c 在十进制的15389这一数字中 x
  • Stm32CubeMx通过DMA获取多路ADC采集的数据(踩到坑的来看看,我也是一步步踩坑到实现的)

    用stm32CubeMX 可以轻松配置模拟电压数值采集 由于使用直接存储器DMA进行ADC数据采集无需一直占用着CPU线程 所以我们一般在需要多通道采集的情况下才使用DMA 多路ADC采集在工业生产测量方面也很常用到 所以这个内容我们还是得
  • 不共地情况下使用单片机进行多通道ADC数据采集

    我们使用单片机进行共地电路的ADC测试很容易 xff0c 由于是共地 xff0c 所以只需要一根信号线输入到单片机的ADC采集引脚就可以得到相对于该电路系统GND的电压 xff0c 像一般的51系列单片机由于是5V供电 xff0c 且其引脚
  • STM32——ADC采集

    目录 ADC简介 ADC主要特征 ADC功能框图 ADC引脚 电压输入范围 通道选择 单次转换模式 连续转换模式 转换顺序 规则序列 注入序列 触发源 转换时间 中断 转换结束中断 模拟看门狗中断 DMA请求 代码讲解 宏定义 xff1a
  • 光敏,红外,人体红外检测模块的模拟输出(ADC)实验——入门

    前面给大家介绍了传感器的开关输出的使用 xff0c 今天给大家介绍一下常见传感器的模拟输出的用法 xff0c 用到了STM32的ADC xff08 模数转换 xff09 模块和USART串口通信模块 代码就是正点原子的ADC实验的代码 今天
  • stm32---ADC模数转换

    ADC xff1a 模数转换器 xff0c 将模拟信号 xff08 0v xff0c 3v xff0c 6v等 xff09 转换为表示一定比例电压值的数字信号 xff08 1 xff0c 2 xff0c 3等 xff09 STM32F10x
  • MSP432(Keil5)——9.ADC驱动

    本次例程驱动了板载的ADC来读取一个模拟的角度传感器 xff0c 大家可以在ADC读取中断里面换成其他的计算 xff0c 具体引脚见程序代码 adc c span class token macro property span class
  • 16位精度 ADC 选型

    ADS8320 售价 xff1a 人民币25 40元 ADS8320 16 Bit High Speed 2 7 V to 5 V microPower Sampling Analog to Digital Converter 1Featu
  • 基于28035的ePWM触发ADC采样设计

    目录 前言实验目的实验要求硬件电路实验步骤代码解释实验结果总结体会 前言 玖道最近在做一个开关电源项目 xff0c 需要用到TI 的TMS320F28035 芯片 xff0c 实现控制电路的设计 简单来说就是利用28035采集信号量 xff
  • 模数转换ADC模块

    通用基础知识 ADC模块是嵌入式应用中重要的组成部分 xff0c 是嵌入式系统与外界连接的纽带 xff0c 是在测控系统中的重要内容 ADC模块 xff1a 即模数转换模块 AD转换模块 xff0c 功能是将电压信号转换为相应的数字信号 实
  • 16. GD32F103C8T6入门教程-adc 使用教程2-dma+连续扫描方式采集数据

    adc 使用教程2 dma 连续扫描方式采集数据 adc 的扫描模式就是把配置了规则或注入通道按照配置的顺序采集一轮 adc 的连续转换模式就是把配置了规则或注入通道按照配置的顺序采集N轮 注意 dma使用时存在一个外设映射到一个dam外设
  • 基于32单片机的16通道ADC的数据采集

    基于32单片机的16通道ADC的数据采集 这个部分的内容 是作为外部模拟量部分的采集工作 按照任务要求 所设计的方案 需要完成以下指标 ADC必须能采集16通道的模拟量 ADC的分辨率是16bit 采样率不小于20khz 由此分析可以得出
  • 嵌入式 ADC使用手册完整版 (188977万字)(附源码详细篇)

    嵌入式 ADC使用手册完整版 188977万字 附源码详细篇 1 ADC简介 2 ADC主要特征 3 ADC引脚和内部信号 4 ADC 模块框图 5 ADC校准 CLB 6 ADC 时钟 7 ADCON 开关 8 ADC规则组和注入组 9
  • STM32 ADC没有输入电压时,采集结果不为0

    目录 1 问题概述 2 问题分析 2 1 钳位二极管 2 2 反向漏电流 3 复用功能 4 总结 1 问题概述 硬件焊接完成后测试程序ADC采集功能 先通过接入3 3V来看下 结果发现三个通道可以采集到0V 3 3V 而另外三个通道在没有接
  • STM32学习笔记:adc采样得到的电压值用485发送给pc

    采用adc1的通道10 将采集到的电压值用485发送给PC显示 先上原理图 源代码见附件 这里想说的是几个要注意的问题 1 ad输入的电压经过了R42和R44进行分压 所以pc显示的电压值将会减半 2 采用这个函数进行发送数据的时候 每次都

随机推荐

  • 物理端口与逻辑端口

    若 1 端口 端口可分为物理端口与逻辑端口 所谓逻辑端口指的是计算机内部或交换机路由器内的端口 xff0c 看不见 xff0c 摸不着 所谓物理端口 xff0c 就是可见的端口 xff0c 像 xff1a 交换机路由器集线器 RJ11端口
  • RS485接收数据后发送乱码

    序 最近调块板子上面有几路485 xff0c 控制芯片STM32F407VE 转换芯片ADM2587 xff0c 使用485转换器连接电脑 xff0c 发现串口助手向板子发送数据后会收到乱码 xff0c 经软硬件联合调试排除bug 一 问题
  • python urllib.parse

    urlparse span class token keyword from span urllib span class token punctuation span parse span class token keyword impo
  • HTTP学习(5)--demo编写(1)

    一个基于Java的HTTP服务器demo 前面几篇博客 xff0c 大致介绍了几个方面的例子 xff0c 例如报文解析 报文组装等 现在打算将这些东西集合起来 xff0c 编写一个小HTTP服务器demo 期间遇到了很多问题 xff0c 也
  • 用Python写一个监督你刷李永乐考研题目的简单小程序

    import datetime import xlwings import math month 61 datetime datetime now strftime 39 m 39 date 61 datetime datetime now
  • 对于遗传算法,谈谈个人看法

    最近在学习遗传算法 xff0c 小有体会 这个用数学方法来模拟生物学过程的算法实在是有很多值得玩味的地方 遗传算法要干什么 xff1f 比如Z 61 f x y 我们要找到他在x 0 1 y 0 1 区间上的最大值 我们就先随机在x 0 1
  • AD(altium designer)软件的基础使用(硬件的一些总结,写的有些乱,高手请略过)

    1 快捷键 xff1a Ctrl 43 R 复制并重复粘贴 Shift 43 c 取消选择 Space 逆时针旋转对象 Shift 43 space 顺时针旋转对象 X 水平翻转对象 Y 垂直翻转对象 G切换捕捉栅格 V F View中的F
  • C++字节转换 (byte转int 互转)(BCD和HEX转换)

    2个字节short int 高低位转化 short int y 61 0x7f21 y 61 y amp 0xff00 gt gt 8 y amp 0x00ff lt lt 8 printf 34 x 34 y 用short型变量储存 xf
  • 王者荣耀-数模论文分享(虽然结果我自己都不信)

    基于基础数据的王者荣耀英雄强度评估及英雄设计 摘要 王者荣耀是当下很火爆的一款手机游戏 xff0c 如何基于当下的双方阵容选择合适的英雄来获得胜利 xff0c 是一个值得探讨的问题 xff0c 现基于游戏数据对于各个英雄的强度进行建模评估
  • 用蚁群算法求解TSP问题

    TSP是什么 xff1f TSP全称Travelling salesman problem 中文名 xff1a 旅行商问题 就是模拟退火中讲到的14个城市之间巡回旅行 xff0c 求路径最短的问题 为什么偏偏找他呢 xff1f 因为这是一个
  • python 语法小进阶1

    1 filter 是通过生成 True 和 False 组成的迭代器将可迭代对象中不符合条件的元素过滤掉 xff1b 而 map 返回的则是 True 和 False 组成的迭代器 gt gt gt res1 61 map lambda n
  • 焊接的技巧与方法

    手工焊接操作的基本步骤 1 清洁焊接对象的表面 xff0c 这一步是必须的 xff0c 就算你再赶时间也不能偷懒 用小刀或者砂纸把焊点打磨光亮 xff0c 露出铜的光泽 铜表面的氧化物会阻碍焊锡与之形成合金 xff0c 这一步做得不到位的话
  • 计算机网络体系结构

    计算机网络体系结构 一 计算机网络概述计算机网络的概念 组成与功能概念 xff1a 计算机网络 功能 xff1a 数据通信 连通性 资源共享分布式处理 信息综合处理 提高可靠性 负载均衡 发展的三个阶段组成 xff1a 物理组成 xff1a
  • 嵌入式技术基础与实践(第4版)

    1 5 2020 开放权限 在此之前 xff0c 防报告查重 嵌入式系统概述 嵌入式系统常用术语 嵌入式系统常用的C语言基本语法概要 M0 43 体系结构与指令系统简介 存储映象 中断源 硬件最小系统 GPIO及基本打通原理 程序的基本调试
  • 串行通信基础知识与UART驱动构件使用方法

    串行通信基础 串行通信接口 异步串行通信 UART 常称为 串口 或SCI xff0c 在USB未普及之前 xff0c 是PC机必备通信接口之一 通信方式为单字节通信 xff0c 是最简单的串行通信方式 RS232 RS485 接线简单 x
  • ARM Cortex-M0+中断机制与中断编程步骤

    中断基础知识 为什么需要使用中断 xff1f 如果通过查询接收标志查看一个字节是否收到 xff0c 则需要时刻花费CPU等资源 但中断机制能够在收到一个字节后 xff0c 通知CPU把收到的字节取走 异常 xff1a CPU强行从正常运行的
  • 计算机网络体系结构

    一 计算机网络概述 计算机网络的概念 组成与功能 概念 功能 组成 工作方式 分类 计算机网络的标准化工作及相关组织 标准分类 计算机网络的标准化工作 相关组织 二 计算机网络体系结构与参考模型 计算机网络分层结构 计算机网络体系结构 为什
  • KL25嵌入式实验考核

    KL25嵌入式实验考核 xff08 6 43 xff09 404 页面找不到 说明资源在审核中 1 利用 KL25 小板实现 控制红色 LED 灯每隔 2 秒钟亮暗变换的同时 在 PC 机上显示 MCU 的计时时间 xff0c MCU 的初
  • 自制PMW3901光流模块

    PMW3901光流Sensor体积小 功耗低 精度高 xff0c 效果非常好 xff0c 自己做了一个光流小模块带TOF测距 xff0c 使用Pixracer 43 PX4固件 xff0c 测试效果还不错 测试视频 xff1a https
  • 模数转换ADC模块

    通用基础知识 ADC模块是嵌入式应用中重要的组成部分 xff0c 是嵌入式系统与外界连接的纽带 xff0c 是在测控系统中的重要内容 ADC模块 xff1a 即模数转换模块 AD转换模块 xff0c 功能是将电压信号转换为相应的数字信号 实