13、江科大stm32视频学习笔记——ADC模数转换器原理

目录

1、ADC、DAC、PWM

2、12位逐次逼近型ADC,1us转换时间

3、ADC输入电压范围:0~3.3V,转换结果范围:0~4095

4、ADC有18个输入通道

5、规则组和注入组两个转换单元

6、STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道

7、ADC基本结构

8、输入通道

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

(1)单次转换非扫描模式 

(2)连续转换非扫描模式

(3)单次转换扫描模式

(4)连续转换扫描模式

10、触发控制(软件触发)

11、数据对齐

12、转换时间(AD转换很快,一般忽略)

13、硬件电路

 

1、ADC、DAC、PWM

        DAC:数字到模拟的桥梁(PWM控制灯的亮度和电机旋转的速度),DAC的使用只要是在信号发生器、音频解码芯片等

        PWM:数字到模拟的桥梁,例如PWM控制灯的亮度和电机旋转的速度,PWM只有完全导通和完全断开两种状态,在这两种状态都没有功率损耗,故直流电机调速这种大功率的应用场景,使用PWM来等效模拟量,是比DAC更好的选择,PWM电路更简单,更常用

2、12位逐次逼近型ADC1us转换时间

  • 逐次逼近型是ADC的工作模式
  • 12位是分辨率,12位AD值,表示的范围是1~2^12-1,就是量化结果的范围是0~4095,位数越高,量化结果就越精细,对应分辨率就越高
  • 转换时间:就是转换频率,1us就表示从AD转换开始到产生结果,需要花1us的时间,对应AD转换的频率就是1MHz,这是STM32 ADC的最快转换频率,若要转换一个高频率的信号,就要考虑转换频率是否够用,如果信号频率比较低,最大1MHz的转换频率完全够用,

3、ADC输入电压范围:0~3.3V,转换结果范围:0~4095

  • 电压和转换结果之间存在线性关系

4、ADC有18个输入通道

  • ADC有18个输入通道,可测量16个外部(16个GPIO口)2个内部信号源(内部温度传感器和内部参考电压)(芯片中ADC最多有18个,不是所有的芯片都有18个)
  • 温度传感器可测量CPU的温度,例如在电脑上显示CPU温度,可以读取温度传感器来测量
  • 内部参考电压是一个1.2伏左右的基准电压,是不随外部供电电压变化而变化的,所以当芯片的供电不是标准的3.3伏,会导致测量外部引脚的电压可能就出错,此时就可以读取这个基准电压进行校准,这样就能得到正确的电压值了

5、规则组和注入组两个转换单元

  • 一般可以用于测量光线强度、温度这些值
  • 如果光线高于某个预值、低于某个预值,或者温度高于某个预值、低于某个预值时,就会执行一些操作
  • 模拟开门狗可以监测指定的某些通道,当AD值高于他设定的上域值,或者低于下域值时。就会申请中断,然后就可以在中断函数里,执行相应的操作

6、STM32F103C8T6 ADC资源:ADC1ADC210个外部输入通道

也就是本实验使用的stm32最多只能测量10个外部引脚的模拟信号

7、ADC基本结构

13、江科大stm32视频学习笔记——ADC模数转换器原理_第1张图片

  • 左边是输入通道16个GPIO口外加2个内部的通道
  • 进入AD转换器的两个组:规则组(最多选中16个通道)和注入组(最多选择4个通道),转换的结果存放在AD数据寄存器
  • AD数据寄存器:规则组只有1个数据计算器,注入组有4个
  • 触发控制:提供开始转换START信号,触发控制可以选择软件触发和硬件触发,硬件触发主要是来自于定时器,也可以选择外部中断的硬件
  • RCC的ADC时钟CLOCK:推动ADC逐次比较的过程
  • 模拟看门狗:监测转换结果的范围,如果超出设定的预值就通过中断输出控制,向NVIC申请中断
  • 另外规则组和注入组转换完成后,会有个EOC信号,它置自己一个标志位,可以通向NVIC
  • 开关控制:ADC_Cmd函数,给ADC上电的

8、输入通道

13、江科大stm32视频学习笔记——ADC模数转换器原理_第2张图片

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

单次转换非扫描模式、连续转换非扫描模式、单次转换扫描模式、连续转换扫描模式

(1)单次转换非扫描模式 

13、江科大stm32视频学习笔记——ADC模数转换器原理_第3张图片

  • 非扫描的模式下,只有第一个序列1的位置有效
  • 在序列1的位置,我们可以指定想转换的通道,比如通道2,写到序列1的位置
  • 然后触发转换,ADC就会对这个通道2进行模数转换,转换完成后,转换结果放在数据计算器里,同时给EOC标志位置1,转换结束
  • 通过判断这个EOC标志位是否转换完成,若完成,就可以在数据寄存器里读结果
  • 若想再启动一次转换,需要再触发一次,转换结束至EOC标志位读结果
  • 若想换一个通道转换,在转换之前,把第一个位置的通道2改成其他通道,然后再启动转换这样就行了

(2)连续转换非扫描模式

​​​​​​13、江科大stm32视频学习笔记——ADC模数转换器原理_第4张图片

  • 非扫描模式:菜单列表就只用第一个
  • 连续转换:在一次转换结束后不会停止,而是立刻开始下一轮的转换,然后一直持续下去,只需要最开始触发一次,就可以一直转换
  • 读取的时候不用判断是否结束,直接从数据寄存器读即可

(3)单次转换扫描模式

13、江科大stm32视频学习笔记——ADC模数转换器原理_第5张图片

  • 单次转换:每触发一次,转换结束后就会停下来,下次转换需要再触发
  • 扫描模式:会用到这个菜单列表了,通道几(相当于菜)可以任意指定,且可以重复,初始化结构体有个参数表示通道数目(比如7个),说明只需要用多少序列
  • 为了防止数据被覆盖,用DMA及时将数据挪走,7个通道转换完成之后产生EOC信号,转换结束
  • 然后再触发,重新开始

(4)连续转换扫描模式

13、江科大stm32视频学习笔记——ADC模数转换器原理_第6张图片

 就是一次转换完成后,立刻开始下一次的转换

10、触发控制(软件触发)

13、江科大stm32视频学习笔记——ADC模数转换器原理_第7张图片

11、数据对齐

13、江科大stm32视频学习笔记——ADC模数转换器原理_第8张图片

  • 上图:右对齐读数据寄存器,就是转换结果,左对齐读取数据寄存器,比实际大16倍
  • 左对齐应用:不想要这么高的分辨率,你觉得0-4095数太大了,左对齐后取高八位即可,就从12位的ADC退化为8位了

12、转换时间(AD转换很快,一般忽略)

  • 采样保持电路:量化编码之前,设置一个采量开关,先打开采样开关,收集外部的电压(比如可以用一个小容量的电容,存储一下这个电压,存储好了之后断开采样开关
  • 再进行后面的AD转换,这样再量化编码的期间电压始终保持不变。
  • 采样保持的过程的需要闭合采样开关过一段时间再断开,就会产生一个采样时间
  • 总转换时间为:TCONV = 采样时间 + 12.5个ADC周期(多了0.5个周期,可能是做其他事情需要花的时间)
  • 采样时间越大,越能避免一些毛刺信号的干扰,不过转换时间也会相应延长
  • ADC周期就是从RCC分频过来的ADCCLK,这个ADCCLK最大是14兆赫值例如:           当ADCCLK=14MHz,采样时间为1.5个ADC周期                                                    TCONV = 1.5 + 12.5 = 14个ADC周期 = 1μs(故最快是1us)

13、硬件电路

13、江科大stm32视频学习笔记——ADC模数转换器原理_第9张图片

(1) 电位器产生一个可调的电压的电路

中间的滑动端可以输出一个0~3.3伏可调的电压输出来,

上滑时电压增大,下滑时电压减小,若阻值太小,电阻就会比较费电


(2)分压方法输出传感器组织的电路

  • 传感器输出电压的电路,例如光敏电阻、热敏电阻、红外接头管、麦克风等都可以等效为一个可变电阻
  • 那电阻阻值得通过和一个固定电阻串联分压,来得到一个反应电阻值电压的电路,
  • 当传感器阻止变小时,下拉作用变强,输出端电压就下降
  • 传当感器组织变大时,下拉作用变弱,输出端受上拉电阻的作用,电压就会升高
  • 固定电阻建议选择和传感器阻值相近的电阻,才可以得到一个位于中间电压区域,比较好的输出
  • 此处传感器和固定电阻的位置也调换,输出电压的极性就反过来了

(3)简单的电压转换电路

  • 想测一个0-5V的VIN电压,到那时ADC只能接收0~3.3V的电压,就可以搭建此类电路
  • 使用电阻分压,上面阻值17K,下面阻值33K,加一起50K,
  • 中间的电压就是VIN/50K*33K,得到的电压范围就是0-3.3伏,就可以进入ADC转换了
  • 想要其他范围(如5V、10V)的VIN电压可类似操作,电压再高一点就不建议了,不安全

你可能感兴趣的:(stm32单片机,stm32,单片机,嵌入式硬件)