首页 理论教育 STM系列单片机ADC功能描述

STM系列单片机ADC功能描述

时间:2023-11-23 理论教育 版权反馈
【摘要】:表6.21为ADC引脚的说明。图6.74单个ADC结构框图表6.21ADC引脚说明ADC模拟输入通道与GPIO口引脚的映射关系见表6.22。图6.75时序图7)模拟看门狗如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。模拟看门狗的警戒区域如图6.76所示,阀值位于ADC_HTR和ADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE位以允许产生相应中断。图6.76模拟看门狗警戒区表6.23模拟看门狗通道选择具体的单一通道由AWDCH[4:0]位选择。

STM系列单片机ADC功能描述

STM32F1系列微控制器ADC模块的结构框图如图6.74所示。

表6.21为ADC引脚的说明。

图6.74 单个ADC结构框图

表6.21 ADC引脚说明

ADC模拟输入通道与GPIO口引脚的映射关系见表6.22。

表6.22 ADC模拟输入通道与GPIO口引脚的映射关系

1)ADC开关控制

通过设置ADC_CR2寄存器的ADON位可给ADC上电。当第一次设置ADON位时,它将ADC从断电状态下唤醒。ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。

通过清除ADON位可以停止转换,并将ADC置于断电模式。在这个模式中,ADC几乎不耗电(仅几微安)。

2)ADC时钟

由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。RCC控制器为ADC时钟提供一个专用的可编程预分频器

3)通道选择

STM32将ADC的转换分为2个通道组:规则通道组和注入通道组。在拥有的通道转换范围内,可以在任意多个通道上以任意顺序进行一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。

注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。

如果在AD转换期间ADC_SQRx或ADC_JSQR寄存器的值被更改,当前的转换将被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。

另外,内部温度传感器和通道ADC1_IN16相连接,内部参照电压VREFINT和ADC1_IN17相连接。可以按注入或规则通道对这两个内部通道进行转换。应注意,内部温度传感器和内部参照电压VREFINT只能出现在主ADC1中。

规则通道相当于正常运行的程序,而注入通道呢,就相当于中断。在程序正常执行的时候,中断是可以打断程序执行的。同这个类似,注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才能继续转换。在工业应用领域中有很多检测和监视传感器数据需要较快地处理,通过对AD转换的分组(规则通道组和注入通道组),将简化事件处理的程序并提高事件处理的速度。

通过一个变电站综合自动化的例子可以说明:比如监控装置需要监测母线的三相电压、出线的三相电流以及主变压器的油温。对于电压、电流需要时刻监测,而主变压器油温由于是较慢的变化量偶尔监测即可,因此就可以使用规则通道组循环扫描三相电压、电流互感器输出的数据,并得到AD转换结果。当需要测量主变压器油温时,通过启动注入转换组采集并得到主变压器油温的AD转换结果,然后系统又会回到规则通道组继续监测三相电压、电流数据。在系统设计上,测量主变压器油温的过程中断了电压、电流数据的监测过程,但程序设计上可以在初始化阶段分别设置好不同的转换组,系统运行中不必再变更循环转换的配置,从而达到两个任务互不干扰和快速切换的结果。可以设想一下,如果没有规则组和注入组的划分,当转换测量数据时,需要重新配置AD循环扫描的通道,在完成数据测量后还需再次配置AD循环扫描的通道。

4)单次转换模式

单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),此时CONT位为0。

①如果一个规则通道被转换:

转换数据被储存在16位ADC_DR寄存器中;

EOC(转换结束)标志被设置;

如果设置了EOCIE,则产生中断。

②如果一个注入通道被转换:

转换数据被储存在16位的ADC_JDR1寄存器中;

JEOC(注入转换结束)标志被设置;

如果设置了JEOCIE位,则产生中断。

③然后ADC停止。

5)连续转换模式

在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。该模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。

①如果一个规则通道被转换:

转换数据被储存在16位的ADC_DR寄存器中;

EOC(转换结束)标志被设置;

如果设置了EOCIE,则产生中断。

②如果一个注入通道被转换:

转换数据被储存在16位的ADC_JDR1寄存器中;

JEOC(注入转换结束)标志被设置;

如果设置了JEOCIE位,则产生中断。

6)时序图

如图6.75所示,ADC在开始精确转换前需要一个稳定时间tSTAB。在开始ADC转换和14个时钟周期后,EOC标志被设置,16位ADC数据寄存器包含转换的结果。

(www.xing528.com)

图6.75 时序图

7)模拟看门狗

如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。模拟看门狗的警戒区域如图6.76所示,阀值位于ADC_HTR和ADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE位以允许产生相应中断。阀值独立于由ADC_CR2寄存器上的ALIGN位选择的数据对齐模式。比较是在对齐之前完成的。

通过配置ADC_CR1寄存器,模拟看门狗可以作用于1个或多个通道,见表6.23。

图6.76 模拟看门狗警戒区

表6.23 模拟看门狗通道选择

具体的单一通道由AWDCH[4:0]位选择。

8)扫描模式

扫描模式用来扫描一组模拟通道。该模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC会扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的通道,并在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。

如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。而注入通道转换的数据总是存储在ADC_JDRx寄存器中。

9)注入通道管理

(1)触发注入

清除ADC_CR1寄存器的JAUTO位,并且设置SCAN位,即可使用触发注入功能。

利用外部触发或通过设置ADC_CR2寄存器的ADON位,启动一组规则通道的转换。

如果在规则通道转换期间产生一外部注入触发,则当前转换被复位,注入通道序列被以单次扫描方式进行转换。

然后,恢复上次被中断的规则组通道转换。如果在注入转换期间产生一规则事件,则注入转换不会被中断,但是规则序列将在注入序列结束后被执行

使用触发的注入转换时,必须保证触发事件的间隔长于注入序列。例如:序列长度为28个ADC时钟周期(即2个具有1.5个时钟间隔采样时间的转换),触发之间最小的间隔必须是29个ADC时钟周期。注入转换的延时如图6.77所示。

图6.77 注入转换延时

(2)自动注入

如果设置了JAUTO位,在规则组通道之后,注入组通道被自动转换。这可以用来转换在ADC_SQRx和ADC_JSQR寄存器中设置的多至20个转换序列。在此模式里,必须禁止注入通道的外部触发。如果除JAUTO位外还设置了CONT位,则规则通道至注入通道的转换序列被连续执行。

对于ADC时钟预分频系数为4~8时,当从规则转换切换到注入序列或从注入转换切换到规则序列时,会自动插入1个ADC时钟间隔;当ADC时钟预分频系数为2时,则有2个ADC时钟间隔的延迟。

10)间断模式

(1)规则组

规则组模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n≤8),此转换是ADC_SQRx寄存器所选择的转换序列的一部分。数值n由ADC_CR1寄存器的DISCNUM[2:0]位给出。

一个外部触发信号可以启动ADC_SQRx寄存器中描述的下一轮n次转换,直到此序列所有的转换完成为止。总的序列长度由ADC_SQR1寄存器的L[3:0]位定义。

例如:

n=3,被转换的通道=0、1、2、3、6、7、9、10

第一次触发:转换的序列为0、1、2

第二次触发:转换的序列为3、6、7

第三次触发:转换的序列为9、10,并产生EOC事件

第四次触发:转换的序列为0、1、2

当以间断模式转换一个规则组时,转换序列结束后不自动从头开始。当所有子组被转换完成后,下一次触发启动第一个子组的转换。在上面的例子中,第四次触发重新转换第一子组的通道0、1和2。

(2)注入组

注入组模式通过设置ADC_CR1寄存器的JDISCEN位激活。在一个外部触发事件后,该模式按通道顺序逐个转换ADC_JSQR寄存器中选择的序列。

一个外部触发信号可以启动ADC_JSQR寄存器选择的下一个通道序列的转换,直到序列中所有的转换完成为止。总的序列长度由ADC_JSQR寄存器的JL[1:0]位定义。

例如:

n=1,被转换的通道=1、2、3

第一次触发:通道1被转换

第二次触发:通道2被转换

第三次触发:通道3被转换,并且产生EOC和JEOC事件

第四次触发:通道1被转换

当完成所有注入通道转换后,下个触发启动第1个注入通道的转换。在上面的例子中,第四次触发重新转换第1个注入通道1。不能同时使用自动注入和间断模式。另外,必须避免同时为规则组和注入组设置间断模式,间断模式只能作用于同一组转换。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈