池州市网站建设_网站建设公司_MySQL_seo优化
2025/12/18 15:08:39 网站建设 项目流程

参考电压

分辨率

分辨率是ADC能够区分的最小电平的大小,分辨率通常以位数表示,例如:8位ADC、10位ADC、12位ADC等等,可以通过ADC_CR1.RES位进行配置。

输入通道

ADC通道指的是将模拟信号输入到ADC控制器的单个输入路径或者是信号通道,通常,一个ADC控制器可以具有多个输入通道,每个通道都可以连接到一个模拟信号源。

STM32F407上有三个ADC

外部通道:每个ADC控制器都有16个,来自外部的GPIO端口。

内部通道:只有ADC1控制器具有,有3个内部通道,通道16连接的是芯片内部的温度传感器;通道17连接的是芯片内部的参考电压;通道18连接的是电池或者是其它电源采集VBAT通道。

通过ADC通道进行输入的模拟电压的范围,VREF-≤ VIN ≤VREF

转换序列

当多个ADC 通道,以任意顺序进行转换时,就有了转换序列的概念。既然是序列,那么就有长度和顺序。长度:指的就是我们需要转换的通道个数;顺序:指的就是想以什么样的顺序转换需要转换的通道。转换序列有两种:规则序列和注入序列。

规则序列

规则转换序列可设置的长度最大为16,从规则序列1(SQ1),到规则序列16(SQ16),长度最大为16,所以,规则序列中最多可以放入16个通道进行转换。规则序列的转换顺序为,从规则序列1(SQ1)开始,依次进行转换,转换的个数就是我们设置的长度。

规则序列的设置

例如我们想转换通道0(IN0)、通道3(IN3)和通道15(IN15)三个通道,并且按照先转换通道3(IN3),再通道0(IN0),最后再转换通道15(IN15)的顺序进行转换,那就根据需要,设置规则序列相关寄存器,具体设置方法如下:

1、设置需要转换的规则序列长度(通过ADC_SQR1.L位)

当规则转换序列的长度设置为3时,规则序列的转换顺序和长度如 下侧图示:

2、为规则序列添加转换通道(通过ADC_SQRx.SQRn位)

ADC_SQRx寄存器有三个,ADC_SQR1、ADC_SQR2、ADC_SQR3,由于给规则序列添加需要转换的通道。

ADC_SQR3寄存器用于为规则序列1(SQ1)到序列6(SQ6)设置转换通道。

ADC_SQR2寄存器用于为规则序列7(SQ7)到序列12(SQ12)设置转换通道。

ADC_SQR1寄存器用于为序列13(SQ13)到序列16(SQ16)设置转换通道。

注入序列

注入序列的长度最大为4,从注入序列1(JSQ1),到注入序列4(JSQ4),长度最大为4,所以,注入序列中最多可以放入4个通道进行转换。注入序列的转换顺序与设置的注入序列长度有关。

注入序列的设置

例如我们想转换通道0(IN0)、通道3(IN3)和通道15(IN15)三个通道,并且按照先转换通道3(IN3),再通道0(IN0),最后再转换通道15(IN15)的顺序进行转换,那就根据需要,设置规则序列相关寄存器,具体设置如下:

1、注入序列的转换长度由ADC_JSQR.JL位设置

通过ADC_JSQR.JL位,设置注入序列转换长度为3。

2、为注入序列添加转换通道,由ADC_JSRQ.JSQx位设置

ADC_JSRQ.JSQ4位用于给注入序列4_JSQ4添加转换的通道

ADC_JSRQ.JSQ3位用于给注入序列3_JSQ3添加转换的通道

ADC_JSRQ.JSQ2位用于给注入序列2_JSQ2添加转换的通道

ADC_JSRQ.JSQ1位用于给注入序列1_JSQ1添加转换的通道

转换触发源

软件触发

规则序列的软件触发:当ADC控制器被使能后,若ADC_CR2.SWSTART位被写入1时,即可触发开始对规则序列中的通道进行转换。转换一旦开始,ADC_CR2.SWSTART位将会被控制器清0。

注入序列的软件触发:当ADC控制器被使能后,若ADC_CR2.JSWSTART位被写入1时,即可触发开始对注入序列中的通道进行转换。当转换开始时,ADC_CR2.JSWSTART位将会被控制器清0。

ADC控制器使能:简单来说就是给ADC控制器上电,通过向ADC_CR2.ADON位写1,即可上电ADC。

事件触发

外部触发转换,可以通过外部事件(例如,定时器捕获、EXTI中断线)触发转换,事件源可以通过ADC_CR2.EXTSEL(规则序列外部事件源选择)和ADC_CR2.JEXTSE(注入序列外部事件源选择)位进行选择。外部事件能够以所选的极性(上升沿、下降沿、上升和下降沿)触发转换。

注入序列存在的意义?

特性触发注入模式自动注入模式 (连续转换)
JAUTO 位状态0 (必须)1 (必须)
触发方式外部触发 / 软件触发规则通道完成后自动触发
连续转换❌ 不支持✅ 支持 (配合 CONT=1)
典型应用事件驱动型采样周期性规则 + 注入采样
数据处理每次触发后处理一次连续数据流,需 DMA 或中断处理

转换时间

ADC时钟

ADC外设挂载在APB2外设时钟总线上。ADC具有两个时钟,其来源都是APB2。

ADC的时钟1:用于模拟电路的时钟ADCCLK

此时钟决定了ADC通道的采样和转换的时间,此时钟来自于经可编程预分频器分频的APB2时钟,该分频器允许ADC在fpclk/2、fpclk/4、fpclk/6或fpclk/8下进行工作,分频器系数的选择可由ADC_CCR.ADCPRE位进行选择。但是需要注意的一点是:ADCCLK被允许的最大频率36MHz。

ADC的时钟2:用于数字接口的时钟

此时钟用于ADC控制器寄存器的读/写访问,此时钟等效APB2的时钟

可独立设置各通道的采样时间

扫描模式和非扫描模式

扫描模式的含义:

ADC 扫描模式是一种连续对多个输入通道进行转换的模式,这种模式下,ADC 会按照预先定义的顺序对多个输入通道轮流进行转换。

如果设置的序列长度大于1时,则为多通道转换,就需要使用扫描模式。

如果序列的长度为1时,则是单通道转换,单通道转换则不需要开启扫描模式。

注意:如果关闭了扫描模式,即使序列设置的长度大于1,ADC 仍然按照单通道进行转换。

扫描模式和非扫描模式的切换:

ADC的扫描模式和非扫描模式,由ADC_CR1.SCAN位进行控制ADC_CR1.SCAN= 0,禁止扫描模式,也就是使用非扫描模式ADC_CR1.SCAN= 1,使能扫描模式,也就是使用扫描模式。

单次转换模式和连续转换模式

连续转换模式的含义:

连续转换模式,指的是ADC 按照序列设置的长度,完成一次序列的转换后,回到序列头开始新一轮的转换。

注意:触发注入无法进行连续转换,注入序列想要连续转换的唯一例外情况是使用自动注入,将注入序列配置为在规则序列之后,自动转换。

单次转换模式的含义:

ADC 的单次转换模式,是指ADC 按照序列设置的长度,完成一次序列的转换后,ADC 停止。

数据寄存器和数据对齐

数据寄存器

数据寄存器有两类:一类是规则数据寄存器ADC_DR,另一类就是注入数据寄存器ADC_JDRx(x为1到4)。

规则数据寄存器只有一个,有效长度是16bit,用于存储规则序列中完成转换的通道的数据。规则序列中,设置的所有需要转换的通道,共用一个数据寄存器ADC_DR。

注入数据寄存器则有四个,有效长度是16bit,ADC_JDR1、ADC_JDR2、ADC_JDR3、ADC_JDR4,用于存储注入序列中通道的转换结果。ADC_JDRx中存储的数据与注入序列转换的先后顺序有关,ADC_JDR1用于存储注入序列中的第一个转换,ADC_JDR2用于存储注入序列中的二个转换,以此类推。

数据对齐

数据对齐,其实就是ADC 转换完成的结果,在数据寄存器中的存储方式,对齐方式有两种:左对齐和右对齐。数据寄存器的有效位是16 位,但是,ADC 转换出来的数字量实际占用的位数与分辨率有关,比如12 位ADC,只需要使用12位0和1的组合进行表示,12 位的数据,存储到16 位的数据寄存器中,也就规定了两种存储方式。一般常使用右对齐。

状态寄存器

模拟看门狗

各种模式组合

单次转换模式+非扫描模式

连续转换模式+非扫描模式

注意:触发注入无法进行连续转换,注入序列仅在自动注入模式下,可进行连续转换。

单次转换模式+扫描模式

连续转换模式+扫描模式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询