当前位置:   article > 正文

嵌入式——模拟/数字转换器(ADC)补充

嵌入式——模拟/数字转换器(ADC)补充

目录

一、ADC简介

二、ADC功能

1.电压输入范围

2.输入通道

3. 转换顺序

(1)规则序列

(2) 注入序列

4.触发源

5. 转换时间

(1) ADC时钟

(2) 采样时间

6. 数据寄存器

(1) 规则数据寄存器

(2)注入数据寄存器

7. 中断

(1)转换结束中断

(2) 模拟看门狗中断

(3)DMA请求

8. 电压转换

三、ADC配置步骤(单通道ADC采集,DMA读取)


一、ADC简介

        STM32F103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其中ADC1和ADC2都有16个外部通道,ADC3根据CPU引脚的不同通道数也不同,一般都有8个外部通道。ADC的模式非常多,功能非常强大。

二、ADC功能

1.电压输入范围

        ADC输入范围为:VREF- ≤ VIN ≤ VREF+,具体电压由VREF-、VREF+、VDDA、VssA这4个外部引脚决定。

        在设计原理图的时候,一般把VssA和VREF-接地,把VREF+和VDDA接3V3,得到ADC的输入电压范围为0~3.3V。

        如果想让 输入的电压范围变宽,达到可以测试负电压或者更高的正电压,则可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到 0~3.3V,这样ADC就可以测量。

2.输入通道

        确定好ADC的输入电压之后,电压通过通道输入到ADC。STM32的ADC有18个通道,其中外部的16个通道就是框图中的ADCx_IN0~ADCx_IN15,这16个通道对应着不同的 lO口。ADC1/2/3还有内部通道:ADC1的通道16连接到了芯片内部的温度传感器,Vrefint连接到了通道17;ADC2的模拟通道16和17连接到了内部的VSS;ADC3的模拟通道9、14、15、16和17连接到了内部的VSS。

        外部的16个通道在转换的时候又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4路

    (1) 规则通道:我们用到的都是这个通道。

    (2) 注入通道:是一种在规则通道转换的时候强行插入要转换的一种通道。如果在规则通道转换过程中有注入通道插队,那么就要先转换完注入通道,等注入通道转换完成后,再回到规则通道的转换流程。所以,注入通道只有在规则通道存在时才会出现

3. 转换顺序

(1)规则序列

        规则序列寄存器有3个(SQR3、SQR2、 SQR1)。SQR3控制着规则序列中的第1~6个转换,对应的位为:SQ1[4:0] ~ SQ6[4:0],第一次转换的是位4:0 SQ1[4:0]。SQR2控制着规则序列中的第7~12个转换,对应的位为:SQ7[4:0] ~ SQ12[4:0]。SQR1控制着规则序列中的第13~16个转换,对应位为:SQ13[4:0] ~ SQ16[4:0]

        具体使用多少个通道,由SQR1的位L[3:0]决定,最多16个通道。

(2) 注入序列

        注入序列寄存器JSQR只有一个,最多支持4个通道,具体多少个由JSQR的JL[2:0]决定。如果JL的值小于4,则JSQR与SQR决定转换顺序的设置不一样,第一次转换的不是JSQR1[4:0],而是JCQRx[4:0],x=(4-JL)与SQR相反。如果JL=00(1个转换),那么转换的顺序从JSQR4[4:0]开始,而不是从JSQR1[4:0]开始。当JL等于4时,与SQR一样

4.触发源

        通道选好了,转换的顺序也设置好了,接下来开始转换。ADC可以由ADC控制寄存器2 (ADC_CR2) 的ADON位来控制,写1的时候开始转换,写0的时候停止转换( 开启ADC转换最简单的控制方式 )。

        除此之外,ADC还支持触发转换,这个触发包括内部定时器触发和外部IO触发。触发源有很多,具体选择哪一种触发源,由ADC控制寄存器2 (ADC_CR2) 的EXTSEL[2:0]和JEXTSEL[2:0]位控制。EXTSEL[2:0]用于选择规则通道的触发源,JEXTSEL[2:0]用于选择注入通道的触发源。选定好触发源之后,触发源是否要激活,则由ADC控制寄存器2 (ADC_CR2)的EXTTRIG和JEXTTRIG位来激活。

5. 转换时间

(1) ADC时钟

        ADC输入时钟ADC_CLK由PCLK2经过分频产生,最大是14MHz。分频因子由RCC时钟配置寄存器RCC_CFGR的位15:14 ADCPRE[1:0]设置,可以是2、4、6、8分频。

注:没有1分频。一般设置 PCLK2=HCLK=72MHz

(2) 采样时间

        ADC使用若干个ADC_CLK周期对输入的电压进行采样,采样的周期数可通过ADC采样时间寄存器ADC_SMPR1和ADC_SMPR2中的SMP[2:0]位设置,ADC_SMPR2控制的是通道0~9,ADC_SMPR1控制的是通道10~17。每个通道可以分别用不同的时间采样。其中采样周期最小是1.5个(如果要达到最快的采样可以设置采样周期为1.5周期)。

这里说的 周期就是 1 / ADC_CLK

        ADC的转换时间与ADC的输入时钟和采样时间有关,公式为:Tconv = 采样时间 + 12.5个周期

        ADCLK=14MHz(最高),采样时间设置为1.5周期(最快),那么总的转换时间 (最短Tconv = 1.5周期 + 12.5周期 = 14周期 = 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50309
推荐阅读
相关标签