STM32-ADC模数转换

这篇具有很好参考价值的文章主要介绍了STM32-ADC模数转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32-ADC模数转换概述

ADC简介

ADC的概念

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

ADC的作用

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

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

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

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的功能框图

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

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 就可以测量了

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

2、输入通道

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

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

3、转换顺序

规则通道组:

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

注入通道组:

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

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

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

4、转换时间

ADC时钟

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

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

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

5、数据寄存器\

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

规则数据寄存器 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请求,把转换好的数据直接存储在内存里面。

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

7、触发源

软件触发

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

外部事件触发

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

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

*ADC的工作模式

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机

STM32-ADC模数转换,stm32开发,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-807705.html

到了这里,关于STM32-ADC模数转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM-32:ADC模数转换器—ADC单通道转换/ADC多通道转换

    ADC(Analog-Digital Converter),意即模拟-数字转换器,简称模数转换器。ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。与ADC相对应,从数字电路到模拟电路的桥梁即DAC(Digital-Analog Convertor),数模转换器。 DAC不是唯一可以

    2024年02月09日
    浏览(44)
  • 嵌入式物联网STM32实战开发代码例程库

    几百个例程清单,CSDN下载地址: https://download.csdn.net/download/weixin_39804904/88671879 开发例程清单(持续新增中,欢迎点赞关注): 0001基于STM32F103单片机GPIO实现控制LED灯闪烁的程序代码0001.rar 0002基于STM32F103单片机GPIO实现按键KEY的检测程序代码0002.rar 0003基于STM32F103单片机GPIO实现

    2024年02月02日
    浏览(45)
  • 嵌入式系统开发13——STM32输出PWM实现呼吸灯

    本文主要介绍在STM32F103C8T6上,利用定时器输出PWM波形,进而驱动LED实现呼吸灯。 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼吸灯的效果。 脉冲宽度调制(PWM) ,是

    2023年04月08日
    浏览(83)
  • 【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用

    STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888 提取码:8888 观察电路图,核心板PD14连接底板中的P2外接排针,将正负极接上直流电压即可持续发声,频率固定。LED的PA0连接底板的D1灯。 步骤1:复制工程模板“1_Template”重命名为“4_Active

    2024年03月21日
    浏览(68)
  • 嵌入式系统开发笔记104:在STM32CubeIDE中导入工程

      本文讲述如何在STM32CubeIDE中导入现有工程。

    2024年02月16日
    浏览(52)
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧,说起来很简单,就是几行代码的事,但楞是折腾了我大半天时间才搞定。原因后面说,先看代码吧: 读操作很简单,以32位方式读取的时候是这样的: 需要注意的是,当以32位方式读取时,地址需要是4的整数倍,即32位。 8位或16位方式类似操作即可 需要注意的

    2024年01月18日
    浏览(68)
  • STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)

    极速进行项目开发,只需要懂一款芯片架构+一个操作系统+一个GUI。各种部件程序全靠抄 ,成为究极缝合怪。本文用stm32f407+FreeRTOS+lvgl演示一些demo。 原文链接:STM32F4+FreeRTOS+LVGL实现快速开发(缝合怪) lvgl官方的音乐播放器demo: 百问网的2048小游戏: STM32F407这款芯片就不多介绍

    2024年02月08日
    浏览(59)
  • 【嵌入式开发工具】STM32+Keil实现软件工程搭建与开发调试

    本篇文章介绍了使用Keil来对STM32F103C8芯片进行初始工程搭建,以及开发与工程调试的完整过程,帮助读者能够在实战中体会到Keil这个开发环境的使用方法,了解一个嵌入式工程从无到有的过程,并且具备快速搭建一个全新芯片对应最小软件工程的基本能力思路。文章首先介绍

    2024年02月05日
    浏览(58)
  • STM32笔记(1)———ADC模数转换器原理及单、双通道转换

    ADC(Analog-Digital Converter),意即模拟-数字转换器,简称模数转换器。 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。 DAC:数字到模拟的桥梁(PWM控制灯的亮度和电机旋转的速度,DAC的使用只要是在信号发生器、音频解码

    2024年02月04日
    浏览(43)
  • 嵌入式开发--STM32用DMA+IDLE中断方式串口接收不定长数据

    之前讲过用 利用IDLE空闲中断来接收不定长数据 ,但是没有用到DMA,其实用DMA会更加的高效,MCU也可以腾出更多的性能去处理应该做的事情。 IDLE顾名思义,就是空闲的意思,即当监测到串口空闲超过1个串口的数据帧时,会使状态寄存器(SR或ISR)的IDLE位置位,如果此时控制

    2024年04月17日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包