打印
[应用相关]

stm32的ADC理解

[复制链接]
2718|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
这个文档写的很全面了

使用特权

评论回复
地板
为你转身| | 2024-6-30 15:34 | 只看该作者
采样后的信号被送入一个比较器,与一个由DAC(数字-模拟转换器)产生的参考电压进行比较。比较器输出一个高或低的电平,表示输入信号是高于还是低于参考电压。

使用特权

评论回复
5
suncat0504| | 2024-6-30 22:05 | 只看该作者
单片机内部的ADC和专用的同样转换精度的ADC相比,在应用上,有什么区别吗?能完全替代专用ADC芯片吗?

使用特权

评论回复
6
suncat0504| | 2024-6-30 22:05 | 只看该作者
单片机工作过程中,自身的温度变化,会不会影响ADC转换结果?

使用特权

评论回复
7
jkl21| | 2024-7-4 19:36 | 只看该作者
STM32的ADC模块不仅功能强大、性能卓越,而且灵活易用,广泛应用于嵌入式系统中各种模拟信号的采集和处理场景。

使用特权

评论回复
8
i1mcu| | 2024-7-4 20:30 | 只看该作者
STM32 ADC可以配置为在转换结束时产生中断,或者直接将转换结果通过DMA传输到内存,从而减轻CPU负担,提高系统效率。

使用特权

评论回复
9
qiufengsd| | 2024-7-7 16:06 | 只看该作者
STM32的ADC模块具有多种工作模式和配置选项。它支持单次转换、连续转换、扫描转换等多种模式,以适应不同的应用需求。在单次转换模式下,ADC执行一次转换后即停止,而连续转换模式下,ADC完成一个转换后又立即开始下一个转换。扫描转换模式则可以自动依次转换多个预设通道。

使用特权

评论回复
10
maqianqu| | 2024-7-9 20:33 | 只看该作者
STM32 ADC支持不同的采样率,转换时间可以从几个微秒到几十微秒不等

使用特权

评论回复
11
minzisc| | 2024-7-10 03:23 | 只看该作者
ADC的性能受供电电压和参考电压的影响。STM32 ADC通常使用VDDA作为模拟电源,并且可以配置不同的参考电压(如VREF+)来设定最大模拟输入电压范围。

使用特权

评论回复
12
hearstnorman323| | 2024-7-10 07:24 | 只看该作者
STM32的ADC支持多个输入通道,可以同时转换多个模拟信号。

使用特权

评论回复
13
uiint| | 2024-7-10 22:25 | 只看该作者
可以将输入的模拟电压分为2^12(即4096)个等级,提供较高的精度。

使用特权

评论回复
14
adolphcocker| | 2024-7-12 15:16 | 只看该作者
STM32的ADC转换时间非常快,具体取决于采样时间和ADC的时钟频率。例如,当ADC的时钟频率为14MHz时,转换时间约为1us。

使用特权

评论回复
15
tabmone| | 2024-7-12 19:48 | 只看该作者
STM32的ADC提供了丰富的配置选项,如采样时间、触发源、数据对齐方式等,可以根据实际需求进行灵活配置。

使用特权

评论回复
16
claretttt| | 2024-7-13 10:00 | 只看该作者
ADC的转换可以通过软件触发或外部事件触发(如定时器事件、外部中断等)。
STM32的ADC还支持规则组和注入组的概念,允许在规则通道转换过程中插入注入通道的转换。

使用特权

评论回复
17
minzisc| | 2024-7-13 14:23 | 只看该作者
ADC对输入的模拟信号进行采样。采样的过程由采样时钟控制,采样频率通常受到ADC的最大时钟频率的限制。

使用特权

评论回复
18
updownq| | 2024-7-13 18:00 | 只看该作者
STM32的ADC设计考虑了低功耗应用,可以在不牺牲性能的前提下降低功耗。

使用特权

评论回复
19
alvpeg| | 2024-7-14 13:00 | 只看该作者
STM32的ADC模块拥有多个通道,可同时或顺序测量多个模拟信号。例如,STM32F103系列可能有18个通道,可以测量16个外部信号和2个内部信号源(如内部温度传感器)。

使用特权

评论回复
20
mnynt121| | 2024-7-15 16:33 | 只看该作者
采样完成后,ADC进入保持阶段。在这个阶段,ADC内部的电路会锁存采样的模拟电压值。

使用特权

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

本版积分规则

1959

主题

15697

帖子

12

粉丝