STM32单片机 ADC模数转换器

GPIO只能读取引脚的高低电平,只有两个值

ADC可对任意电压值进行量化,用变量来表示,相当于是电压表,可以测量引脚的具体电压

ADC简介

  • ADC(Analog-Digital Converter)模拟-数字转换器。
  • ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路数字电路的桥梁。
  • DAC数字电路模拟电路的桥梁,使用DAC可以将数字变量转换为模拟电压。DAC主要应用在波形生成领域,比如信号发生器、音频解码芯片等。
  • PWM也是数字电路模拟电路的桥梁,PWM可以来控制LED亮度、电机速度就是DAC的功能,PWM只有完全导通和完全断开两种状态,这两种状态上都没有功率损耗,所以在直流电机调速这种大功率的应用场景,使用PWM来等效模拟量是比DAC更好的选择。
  • STM32中的ADC是12位(分辨率,用位来表示,表示范围是0~2^12 - 1,即量化范围是0~4095,位数越高,量化结果越精细,对应分辨率越高)逐次逼近型ADC,1us转换时间(转换频率,AD转换需要花的时间,这里的1us表示从AD转换开始到产生结果需要花1us的时间,对应的频率是1MHz这就是STM32 ADC的最快转换频率)
  • 输入电压范围:0~3.3V,转换结果范围:0~4095
  • ADC有18个输入通道,可测量16个外部信号源(16个GPIO口)和2个内部信号源(内部温度传感器,可以测CPU温度,和内部参考电压,是一个1.2V左右的基准电压,不随外部电路变化)
  • 规则组(常规使用)和注入组(用于突发事件)两个转换单元(普通AD转换流程是启动一次,读一次值,STM32中的ADC比较高级,可以列一个组,一次启动一个组,连续转换多个值)
  • ADC可以模拟看门狗自动监测输入电压范围
  • STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道

逐次逼近型ADC

ADC0809芯片内部结构图

ADC0809是一个独立的8位逐次逼近型ADC芯片,STM32中的ADC有18个路输入开关

  • 比较器:判断两个输入信号电压的大小关系,输出一个高低电平指示谁打谁小
  • 比较器的两个输入端,一个是待测的输入通道电压,另一个是DAC电压输入端,DAC数模转换器(给数据输出对应电压),两个电压同时输入到电压比较器,进行大小判断,如果DAC输出的电压较大,我们就调小DAC数据;如果DAC输出的电压较小,我们就调大DAC数据,直到DAC输出的带那样与外部通道输入的电压近似相等,这样DAC输入的数据就是外部电压的编码数据了
  • 逐次逼近寄存器SAR:实现电压调节,使用二分法寻找电压编码,8位找8次,12位找12次
  • CLOCK:ADC时钟,ADC内部是一步一步进行判断的,需要时钟来推动该过程
  • START开始转换,给一个脉冲,开始转换
  • EOC(End Of Convert)转换结束信号
  • VREF+和VREF-是DAC的参考电压,比如给一个数据255是对应5V还是3.3V呢就由参考电压决定,DAC的参考电压也决定了ADC的输入范围,所以DAC的参考电压也是ADC的参考电压
  • VCC与GND:芯片供电,通常参考电压的正极和VCC会接在一起,负极和GND也接在一起。

STM32中的ADC框图

注入通道组,一次性最多4通道

规则通道组,一次性最多16通道

举例子:假设在餐厅点菜,普通ADC是只能指定一个菜,老板做好给你送来。

规则通道组,指定一个菜单,菜单最多选16个菜,但是桌子上只能放一个菜(即规则通道数据寄存器只能寄存一个数据),如果上16个菜,前15个菜会被挤掉。因此要配合DMA来实现,DMA是数据转运小能手,可以在每上一个菜后,将菜(数据)移到其它地方去,防止被覆盖。

注入通道组,一次性点4个菜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值