STM32的ADC模数转换器

前言:ADC模数转换器,作用在于使得本来只能读取高电平或低电平的IO口可以读取高低电平之间的任意信号了,并将这一输入的模拟信号转化为数字信号呈现出来,相当于把一个看不见摸不着的变化的信号(举个例子:正弦信号)给实时用对应的电压值表示出来(现象就是可以在OLED屏幕上面实时显示当前端口的电压值)。

一、介绍

12 ADC 是一种逐次逼近型模拟数字转换器。它有多达 18 个通道,可测量 16 个外部和 2 个内部
信号源。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右
对齐方式存储在 16 位数据寄存器中。有单通道ADC与多通道ADC两个模式。因为是十二位的ADC,所以转换为数字信号的最大值为2^12=4095。即电压在0~3.3V变化,转换结果在0~4095变换。有规则组与注入组两个单元,可以帮助单片机连续转换模拟信号。还有模拟看门狗可以检测电压是否超过某一范围,如果超过就会进入中断。
二、ADC内部结构
如图

其中左下方是输入引脚选择器,用来选择哪一路GPIO作为信号输入端口。

选择完输入端口之后,模拟信号进入ADC转换器,具体内部结构看下图(来自江协科技)

图中的DAC是数模转换器,可以输出一个已知电压的模拟信号。这个已知的信号和我们外部ADC端口采集的信号一起进入一个电压比较器,进行比较。如果DAC输出的已知电压更大,单片机就会调小DAC电压,然后再进行比较。这样不断的比较、调整之后DAC电压就等于外部的电压了。这样,就间接的知道了外部模拟信号的电压大小,也就是数字信号。

转换的结果会写入到上面的数据寄存器里面。这里有两个通道,分别对应不同的模式。

规则通道数据寄存器:采用规则输入,预先设置好至多16个输入端口的ADC转换,然后单片机会一个个执行,并储存到规则通道数据寄存器中。但是这个寄存器的空间很小,只能同时存一个数据。所以要使用DMA进行数据转存,这样才能得到完整的16个ADC数据。

注入通道数据寄存器:采用注入输入,即可以同时进行4个通道的ADC转换,并将其存入注入通道数据寄存器中,该寄存器的有四个位置,刚好可以储存这四个通道的数据。

三、模拟看门狗

看门狗这个称号其实非常的形象,主要作用就是在里面设置一个阈值上限与下限。当ADC的信号传过来之后超过了的这个阈值,那么看门狗就会叫。在程序上的表现就是它会申请一个中断至NVIC,使得程序停止,来进行这个中断。

四、转换模式

单次转换模式,连续转换模式,扫描模式,间断模式,双ADC模式等,这些模式的使用具体可以看手册。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Young member

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值