前言
本次我们学习一下STM32的一个基本外设 --- ADC(模数转换器),全程参考手册讲解,讲述ADC的工作模式和作用,转换过程和转换方式。本篇博客大部分是自己收集和整理,借鉴了很多大佬的图片和知识点整理,如有侵权请联系我删除。
本次实验板子使用的是正点原子精英版,芯片是STM32F103ZET6,需要资料可以@我拿取。
本博客内容原创,创作不易,转载请注明
一 . ADC介绍
一 . 数字/模拟量的介绍
1.Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。
2.AD转换就是模数转换,也可以是整流。顾名思义,就是把模拟信号转换成数字信号。
3.模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位、14位和16位等。
4.DAC转换就是数模转换,就是将离散的数字量转换为连接变化的模拟量。与数模转换相对应的就是模数转换,模数转换是数模转换的逆过程。
5.数字量:在时间上和数量上都是离散的物理量称为数字量。把表示数字量的信号叫数字信号。把工作在数字信号下的电子电路叫数字电路。数字量由多个开关量组成。如三个开关量可以组成表示八个状态的数字量。
6.模拟量:在时间上或数值上都是连续的物理量称为模拟量。把表示模拟量的信号叫模拟信号。把工作在模拟信号下的电子电路叫模拟电路。模拟量是连续的量,数字量是不连续的。反映的是电量测量数值(如电流、电压)。
二 . ADC基本原理
模拟信号转换为数字信号,一般分为四个步骤进行。即采样、保持、量化和编码。前两个步骤在取样 -- 保持电路中完成,后两步骤则在 ADC 中完成。
二. STM32_ADC介绍
12位ADC是一种逐次逼近型模拟数字转换器
1us转换时间,在 ADCCLK=14M,采样周期为 1.5 个 ADC 时钟下得到
输入电压范围:0~3.3V,转换结果范围:0~4095,ADC供电要求:2.4V到3.6V
STM32 ADC的总转换时间为:TCONV = 采样时间 + 12.5个ADC周期
例如:当ADCCLK=14MHz,采样时间为1.5个ADC周期
TCONV = 1.5 + 12.5 = 14个ADC周期 = 1μs
一 . ADC框图分析
二. ADC基本结构
三 . ADC外部通道和硬脚对应图
三. STM32 ADC通道组
一. 模式介绍
一 . 单次转换模式
二 . 连续转换模式
三. 扫描模式
二 . 模式组合说明
STM32F1的ADC的各通道可以单次,连续,扫描或者间断模式执行。 扫描与不扫描:扫描用于多个转换情况下。
单次扫描:触发一次,把设定的转换通道依次转换一次。每次转换结束后,都要再次触发才能开始,指定通道数目,在最后一个通道判断标志位。
单次不扫描:触发一次,把设定的第一个通道转换一次。转换结果在数据寄存器,EOC标志位为1读取,每次都要手动转换,同时读取EOC标志位
连续扫描:触发一次,把设定的转换通道依次转换一次。然后又回到第一个转换重新启动一轮转换。如此循环。
连续不扫描:触发一次,不停的对第一个通道进行转换。在一次转换后不会停止,马上开始下一次转换,只需要最开始触发一次,不用判断是否结束,需要AD值可以在数据寄存器直接读取。
三 . 通道选择
软件触发ADC,就是芯片内部事件触发ADC,硬件触发就是芯片外部其他模块操作出发ADC
如:需要总共转换二个注入通道。第一次转换通道7 ,第二次转换通道3
ADC1->JSQR |= 1<<20
ADC1->JSQR |=7<<10 ; //通道7第一次转换
ADC1->JSQR |=3<<15 ; //通道3第二次转换
四. 数据对齐
一般选择右对齐,舍弃左边,如果左对齐,右边将会补0 ,数据就会不精准。
四. STM32_ADC中断
五 . ADC校准
1.ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。
2.校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差
3.建议在每次上电后执行一次校准
4.启动校准前, ADC必须处于关电状态超过至少两个ADC时钟周期
程序思路:
设置ADC时钟分频 设置ADC通道转换序列,
通道转换数量
设置ADC工作模式
设置ADC数据对齐方式
编写ADC转换启动函数 根据电压转换公式还原模拟量。VX / Vref= Bx / 2n,Bx:数字量、Vx:模拟量、Vef:参考电压、2n:n为ADC的分辨率
实现过程:
一.配置IO
- 开启时钟。
- 配置为模拟输入
二 .配置ADC - - ADC1
- 开启时钟
- 一个通道—CR1
- 非扫描模式 –CR1
- 选择外部触发 –CR2
- 选择启动规则通道组转换的外部事件 – SWSTART –CR2
- 数据对齐 –右对齐
- 是否启用启用DMA
- 校准
- 单次模式
- 设置采样周期 ---不要设置太快,--SMPRx
- ADC 的时钟分频:
- 设置总的采样通道数 -- SQR1
- 设置通道采样顺序 -- SQR3
- 开/关A/D转换器 –CR2
三 。开启转换
1.开启规则组转换 –CR2
等待转换结束。
获取AD值。
2.是否开启注入组转换
总结:
ADC外设的基本功能就是这么多了,大概注意的就是转换模式,注意多通道转换的方法,大家如果对我的博客有疑问或者错误,可以@我修改,大家相互交流。
点赞收藏关注博主,不定期分享单片机知识,互相学习交流。
————————————————