STM32-ADC模数转换

本文详细介绍了STM32F4的ADC模块,包括ADC的概念、作用、性能指标如量程、分辨率和转换时间。重点讲解了STM32F4-ADC的配置,如分辨率选择、输入通道、转换顺序、转换时间、数据处理方式(DMA和中断)以及触发源。
摘要由CSDN通过智能技术生成

STM32-ADC模数转换概述

ADC简介

ADC的概念

Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。

ADC的作用

采集传感器的数据,测量输入电压,检查电池电量剩余,监测温湿度等。

典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

ADC的性能指标

量程:能测量的电压范围

分辨率:ADC的分辨率通常以输出二进制数的位数表示,位数越多,分辨率越高,一般来说分辨率越高,转化时间越长。

转化时间:模拟输入电压在允许的最大变化范围内,从转换开始到获得稳定的数字量输出所需要的时间称为转换时间

STM32F4-ADC特性

STM32F4-ADC配置

STM32F40X有3个ADC,每个可配置 12 位、10 位、8 位或 6 位分辨率

每个ADC 有16个外部通道。另外还有两个内部 ADC 源 和 V BAT 通道挂在 ADC1上

这些通道的 A/D 转换可以单次、连续、扫描或间断模式执行。

ADC具有独立模式、双重模式和三重模式,对于不同 AD转换要求几乎都有合适的模式可选

ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。

ADC的功能框图

1、电压输入范围

ADC 输入范围为:V REF-≤ V IN ≤ V REF+ 。由 V REF- 、VREF+ 、V DDA 、V SSA 、这四个外部引脚决定。

我们在设计原理图的时候一般把 V SSA 和 V REF- 接地,把 VREF+ 和 V DDA 接 3.3V,得到ADC 的输入电压范围为:0~3.3V

如果我们想让输入的电压范围变宽,去到可以测试负电压或者更高的正电压,我们可以在外部加一个电压调理电路,把需要转换的电压抬升或者降压到 0~3.3V,这样 ADC 就可以测量了

2、输入通道

每个ADC 有16个外部通道。另外还有两个内部 ADC 源和 V BAT 通道挂在 ADC1上

3、转换顺序

规则通道组:

顾名思意,规则通道就是很规矩的意思,我们平时一般使用的就是这个通道。相当正常运行的程序。最多16个通道。规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中

注入通道组:

注入,可以理解为插入,插队的意思,是一种不安分的通道。相当于中断。最多4个通道。

注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中

4、转换时间

ADC时钟

ADC 输入时钟ADC_CLK由 PCLK2经过分频产生,最大值是36MHz,典型值为30MHz。对于 STM32F407我们一般设置PCLK2=HCLK/2=84MHz。所以程序一般使用4分频或者 6分频。

5、数据寄存器\

规则数据寄存器 ADC_DR

        ADC_DR只有一个,是一个 32 位的寄存器,只有低16 位有效并且只是用于独立模式存放转换完成数据。因为 ADC 的最大精度是 12 位,ADC_DR 是16 位有效,这样允许 ADC存放数据时候选择左对齐或者右对齐,具体是以哪一种方式存放,由ADC_CR2的 11 位 ALIGN 设置。

使用 DMA

由于规则通道组只有一个数据寄存器,因此,对于多个规则通道的转换,使用DMA非常有帮助。这样可以避免丢失在下一次写入之前还未被读出的 ADC_DR 寄存器中的数据。

在使能 DMA 模式的情况下(ADC_CR2 寄存器中的 DMA 位置 1),每完成规则通道组中的一个通道转换后,都会生成一个 DMA请求。

6、中断

转换结束

中断规则通道和注入通道的数据转换结束后,都可以产生中断

模拟看门狗

中断当被ADC 转换的模拟电压低于低阈值或者高于高阈值时,就会产生中断

溢出中断

如果发生DMA传输数据丢失,会置位 ADC状态寄存器 ADC_SR的OVR位,如果同时使能了溢出中断,那在转换结束后会产生一个溢出中断。

DMA请求

规则和注入通道转换结束后,除了产生中断外,还可以产生DMA请求,把转换好的数据直接存储在内存里面。

7、触发源

软件触发

ADC转换可以由ADC控制寄存器 2:ADC_CR2的ADON这个位来控制,写 1的时候开始转换,写 0的时候停止转换

外部事件触发

触发包括内部定时器触发和外部 IO触发。触发源有很多,具体选择哪一种触发源,由 ADC控制寄存器ADC_CR2的 EXTSEL[2:0]和JEXTSEL[2:0]位来控制

*ADC的工作模式

  • 57
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值