基于STM32外设 -- 超详细ADC(模数转换器)内部流程及解析

前言

       本次我们学习一下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

        STM32F103 系列最少都拥有 2 ADC ,我们选择的 STM32F103ZET 包含有 3 ADC
STM32 ADC 最大的转换速率为 1Mhz ,也就是转换时间为 1us (在 ADCCLK=14M, 采样周期
1.5 ADC 时钟下得到),不要让 ADC 的时钟超过 14M ,否则将导致结果准确度下降。

一 . ADC框图分析

二. ADC基本结构

三 . ADC外部通道和硬脚对应图

三. STM32 ADC通道组

        STM32 将 ADC 的转换分为 2 个通道组: 规则通道组和注入通道组 。规则通道相当于你正
常运行的程序,而注入通道呢,就相当于中断。
        在你程序正常执行的时候,中断是可以打断你 的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。

一. 模式介绍

一 . 单次转换模式

二 . 连续转换模式

三. 扫描模式

二 . 模式组合说明

        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

  1. 开启时钟。
  2. 配置为模拟输入

二 .配置ADC - -  ADC1

  1. 开启时钟
  2. 一个通道—CR1
  3. 非扫描模式 –CR1
  4. 选择外部触发 –CR2
  5. 选择启动规则通道组转换的外部事件 – SWSTART –CR2
  6. 数据对齐 –右对齐
  7. 是否启用启用DMA
  8. 校准
  9. 单次模式
  10. 设置采样周期 ---不要设置太快,--SMPRx
  11. ADC 的时钟分频:
  1. 设置总的采样通道数 -- SQR1
  2. 设置通道采样顺序  -- SQR3
  3. 开/关A/D转换器 –CR2

三 。开启转换

1.开启规则组转换 –CR2

等待转换结束。

获取AD值。

2.是否开启注入组转换

总结:


       ADC外设的基本功能就是这么多了,大概注意的就是转换模式,注意多通道转换的方法,大家如果对我的博客有疑问或者错误,可以@我修改,大家相互交流。

  点赞收藏关注博主,不定期分享单片机知识,互相学习交流。
————————————————
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值