学习笔记——ADC模数转换器(一)

一、原理

1、ADC简介

        1、ADCAnalog-Digital Converter)模拟-数字转换器

        2、ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁

        3、12位逐次逼近型ADC1us转换时间。输入电压范围:0~3.3V,转换结果范围:0~4095

        4、18个输入通道,可测量16个外部(GPIO口)和2个内部信号源(内部温度传感器和内部参考电压1.2V左右的基准电压)

        5、规则组(一个组包含很多通道,启动一个组可以测量多个通道)和注入组(应对突发事件)两个转换单元。模拟看门狗自动监测输入电压范围是否超过设定阈值。

2、逐次逼近型ADC

         以ADC0809作为例子先了解逐次逼近型adc。

        首先是左边的IN0~IN7,是8路通道。通过下面的ADDA、ADDB、ADDC去选择这八路通道之一,通过ALE锁存去进行通道的确定。之后选择的输入待测电压到比较器中,比较器的另一路输入DAC电压,这个DAC电压是可以不断通过SAR调节的。以二分法不断调节对比电压,高了调低低了调高,最后得到与输入待测电压相等的电压。然后通过8位三态锁存缓冲器的8路输出出去。

        EOC(End of Convert)转换结束信号。START是开始转换,给一个输入脉冲,开始转换。CLOCK是内部时钟,ADC内部的逐次逼近是需要时钟去推动的。VERF+和VERF-是DAC的参考电压。OE是给缓冲器使能的。

3、STM32的ADC框图

         在STM32的ADC中,有16+2路输入,有模拟的多路开关控制。在输入后分别有规则组和注入组的通道。在规则组的通道中,可以一次测16路输入,但在规则寄存器中却一次只能储存一个数据,如果接连不断的改变通道测,则会不断覆盖前面的结果。这时候就需要DMA来帮忙了,DMA是数据转运的,可以把规则组通道寄存器中的数据转运到其他寄存器中,保证了数据不会丢失。

         上面部分是EOC,可以通过检测EOC标志位来判断转化是否结束。还有模拟看门狗来监控阈值。

         下面的部分就是ADC的触发模式的选择。

PS:ADC有双ADC模式,多个ADC同时对一个通道进行采样,进一步提高采样率。

4、规则组的4种转换模式

1、单次转换,非扫描模式

        这种模式下,一次触发只能进行一次转换,一次只能选择一个通道进行采样与转换,转换完成后数据存到寄存器中,当检测到EOC标志位变化,就意味着转换完成,可以去读取寄存器里的数据。第二次还要转换就要再来一次触发且想要更换通道只能把序列1换通道。

2、连续转换,非扫描模式

         他也只能检测一个通道但与上面不同的是,他在一次转换后不会停止,而是立刻开始下一轮转换。只需要最开始的触发。想要读AD值直接取寄存器的值就好了。

3、单次转换,扫描模式

         这个模式中,会用到菜单列表,可以一次触发后检测多个通道且通道可以重复。可以指定通道数目。这里就需要用DMA将数据挪走。下次转换就又要一次触发。

4、连续转换,扫描模式

         同上一个道理。

5、触发控制

6、数据对齐

         因为检测到的数据是12位的,所以需要整理一下数据。在数据右对齐中,左边高位就补;左对齐就是右边低位补。

 7、转换时间

 8、校准

 二、代码实现

1、单通道AD

1、分频系数

         clock = PCLK2(APB2时钟)/6 = 72MHz/6 = 12MHz、

2、配置GPIO

        GPIO的AIN(模拟输入模式)下,GPIO口是无效的,防止GPIO口的输入输出对模拟电压产生干扰。

3、选择规则组的输入通道

        选择的是ADC1的通道0放在序列1上,采用实践选择居中的。

4、配置ADC

         配置ADC模式为独立模式、ADC数据为右对齐、触发源选择软件触发、单次/连续模式、扫描/非扫描模式、通道数目。

        然后使能ADC1。

        最后需要对ADC进行校准。

5、获取EOC标志位并返回寄存器中的值,EOC标志位会自动清除。

 6、主函数显示

2、AD多通道

        在单次转换,非扫描模式下使用多通道,就需要每次转换之前更换一下通道,就可以完成多通道模式了。或者后面学习了DMA后就有更方便的办法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值