打印
[应用相关]

stm32的ADC理解

[复制链接]
779|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-6-13 13:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、简介



ADC是模拟-数字转换器(Analog-to-Digital Converter)的缩写,它是一种电子设备,用于将模拟信号转换为数字信号。这种转换对于现代电子系统中的数字处理至关重要,因为数字电路和微处理器只能处理数字信号。

工作原理:
采样:ADC在特定的时间间隔内对模拟信号进行采样,即测量信号在某一时刻的电压值。

量化:采样得到的值被量化为有限数量的级别。量化级别由ADC的分辨率决定,例如,一个8位的ADC可以提供256个量化级别(2^8)。

编码:量化后的值被编码成数字形式,通常是二进制格式。

重要参数:
分辨率:ADC可以区分的最小电压变化。例如,8位ADC的分辨率是1/256伏特(如果参考电压是2.56伏特)。

采样率:ADC每秒可以采样的次数,单位是赫兹(Hz)。采样率越高,可以处理的信号频率越高。

精度:ADC的精度指的是其测量值与真实值之间的差异,包括量化误差、非线性误差、偏置误差等。

输入范围:ADC可以处理的模拟信号的最大和最小电压值,通常称为参考电压或量程。

应用场景:
传感器信号读取:如温度、压力、光强等传感器的模拟输出信号。

音频处理:将模拟声音信号转换为数字信号,以便进行数字处理和存储。

数据采集:在工业自动化和科研领域,用于采集各种模拟信号。

信号处理:在信号处理系统中,用于信号的数字化,以便进一步的分析和处理。

常见类型:
逐次逼近寄存器(SAR)ADC:一种常用的ADC类型,以其高速和相对较高的精度而闻名。

流水线ADC:提供更高的采样率,但可能牺牲一些精度。

ΔΣ(Sigma-Delta)ADC:以其高分辨率和低频信号处理能力而知名。

并行ADC:可以同时处理多个信号,适用于高速多通道应用。

ADC是数字系统和模拟世界之间的桥梁,对于实现现代电子设备的功能至关重要。

二、逐次逼近型ADC
这是一个ADC0809的ADC,我们STM32内部有18个通道,而这个只有8个通道



1.stm32ADC框图



16个IO口,IN0~IN15,两个内部通道,一个是内部温度传感器,另一个是参考电压





普通通道,多路开关只选择一路,而这里有多路,注入通道可以选择4通道,而规则通道可以选择16个。有什么用呢?举个例子,这就像是你去餐厅点菜,普通的ADC是,你指菜,老板给你做,然后做好了送给你。这里就是,你指定一个菜单,这个菜单最多可以填16个菜,然后你直接递个菜单给老板,老板就按照菜单的顺序依次做好,一次性给你端上来。可以大大提高效率。



1.1 规则组
一种是规则组菜单,可以同时上16个菜,这个规则组只有一个数据寄存器,就是这个桌子比较小,最多只能放一个菜,你如果上16个菜,那不好意思,前15个菜都会被挤掉,你只能得到第16个菜,所以对于规则组转换来说,如果使用这个菜单的话,最好配合DMA来实现。DMA是一个数据转运小都手,它可以在每上一个菜之后,把这个菜挪到其他地方去,防被覆盖

1.2  注入组
它相当于是餐厅的VIP座位,在这个座位上,一次性最多可以点4个菜,并且这里数据寄存器有4个,是可以同时上4个菜的,对于注入组而言,就不用担心数据覆盖的问题了



2.逐次逼近方法
逐次逼近方法(Successive Approximation Method)是一种用于模拟-数字转换(ADC)的技术,特别是在逐次逼近寄存器(Successive Approximation Register, SAR)ADC中使用。这种方法以其快速的转换速率和相对较高的精度而受到广泛应用。下面是逐次逼近方法的基本步骤:

初始化:在转换开始时,SAR寄存器被清零,模拟输入信号被采样并保持在一个采样保持电路中。

比较:ADC比较模拟输入信号与参考电压的一半。如果输入信号高于这个值,寄存器的最高位被设置为1;如果低于这个值,该位保持为0。

逐位逼近:接下来,ADC会逐位向下检查,每次将当前位与参考电压的相应比例进行比较。例如,如果当前位是1,ADC会比较输入信号与参考电压的1/4(如果总共有4位),如果输入信号高于这个值,则将当前位保持为1;如果低于这个值,则将该位设置为0。

更新寄存器:每次比较后,根据比较结果更新SAR寄存器中的相应位。

完成转换:当所有位都被检查和更新后,转换完成,SAR寄存器中的值就是模拟输入信号的数字表示。

输出结果:最后,SAR寄存器中的值被输出,表示模拟信号的数字等价。

逐次逼近方法的优点包括:

速度快:由于每次只更新一个位,这种方法可以快速完成转换。
精度高:SAR ADC可以达到相对较高的分辨率,因为它可以逐位逼近模拟信号的精确值。
成本效益:SAR ADC通常比其他类型的ADC(如流水线ADC或ΔΣ ADC)更简单、成本更低。
然而,逐次逼近方法也有一些局限性:

转换速率:虽然逐次逼近方法比直接ADC快,但它的转换速率可能不如某些其他类型的ADC。
线性度:SAR ADC可能在某些情况下受到非线性误差的影响,特别是在参考电压不稳定或输入信号变化迅速时。
逐次逼近方法是一种在许多应用中广泛使用的ADC转换技术,特别是在需要快速、高精度转换的场合。

复制再试一次分享

三、触发转换部分



也就是这里



一般有两种触发

1. 软件触发
一种是软件触发,就是你在程序中手动调用一条代码,就可以启动转换了

2. 硬件触发
也就是这里的资源,注入组和规则组,触发源主要来自定时器,有定时器的各个通道,还有TRGO定时器主模式的输出。定时器可以通向ADC、DAC这些外设,用于触发转换。那因为ADC经常需要过一个固定时间段转换一次,比如每隔1ms转换一次。正常的思路就是,用定时器,每隔1ms申请一次中断。在中断里手动开始一次转换,这样也是可以的。但是频繁进中断对我们的程序是有一定影响的。比如你有很多中断都需要频繁进入,会影响主程序执行。而且不同中断之间,由于优先级的不同,会导致某一些中断不能及时响应。如果触发ADC的中断不能及时响应。那我们ADC的转换频率就肯定会产生影响了。所以对于这种需要频繁进中断,并且在中断里只完成了简单工作的情况。一般都会有硬件的支持。  



四、ADC的基本结构
斜杆代表有多个通道



1.输入通道
ADC通道和引脚复用的关系



2.单次转换,非扫描模式



3.连续转换,非扫描模式



4.单次转换,扫描模式



5.连续转换,扫描模式



6 EOC信号
在电子设备和微控制器中,EOC 通常代表 "End Of Conversion"(转换结束)。这是一个信号或标志位,用于指示一个转换过程,如模数转换(ADC)或数模转换(DAC),已经完成。以下是关于EOC信号的一些详细信息:

转换完成指示:在ADC模块中,当模拟信号转换为数字值的过程完成后,EOC信号会被置为高电平或设置为一个标志位。

中断触发:EOC信号可以配置为触发中断,这样当转换结束时,微控制器可以立即响应,执行相关的中断服务程序。

状态监测:软件可以通过检查EOC标志位来确定转换是否已经完成,从而决定是否可以开始下一次转换或进行数据处理。

同步操作:在需要同步多个转换操作的系统中,EOC信号可以用于确保所有相关的转换都已经完成,然后才继续执行下一步操作。

提高效率:使用EOC信号可以提高系统的效率,因为它允许微控制器在等待转换完成的同时执行其他任务,而不是空闲等待。

DMA请求:在某些系统中,EOC信号还可以触发DMA(直接内存访问)操作,将转换结果自动传输到内存中。

低功耗模式:在低功耗应用中,EOC信号可以用来唤醒微控制器,仅在转换完成后进行数据处理,从而减少能耗。

错误检测:如果转换过程中发生错误,EOC信号的生成可能会受到影响,因此它也可以用于错误检测。

在STM32微控制器中,EOC信号通常与ADC模块紧密相关,并且可以通过ADC的控制和状态寄存器进行配置和管理。开发者需要根据具体的应用需求来决定如何处理EOC信号,以实现高效的数据处理和系统响应。

五、触发控制





六、数据对齐
ADC是12位的,他的转换结果就是12位的一个数据,但是这个数据寄存器16位的,两者存在一个数据对齐的问题,一般用右对齐。



七、转换时间



八、校准



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/Fang_pi_dai_zhi/article/details/139519990

使用特权

评论回复
沙发
LEDyyds| | 2024-6-17 16:43 | 只看该作者
很完整啊

使用特权

评论回复
板凳
EmmaTT| | 2024-6-18 20:56 | 只看该作者
这个文档写的很全面了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1498

主题

14379

帖子

9

粉丝