【STM32学习】模数转换器——ADC

2023-05-16

【STM32学习】模数转换器——ADC

  • 零、参考
  • 一、ADC转换耗时
  • 二、转换模式
  • 三、对某些寄存器的理解
    • 1、ADC_CR2
    • 2、ADC_SQRX
  • 四、库函数注意事项

零、参考

STM32固件库(标准外设库)入门学习 第七章 ADC数模转换(一)
刘凯:STM32F103(一):ADC

通过上述的两个链接以及stm32的参考手册,应该可以把ADC理解的差不多了,接下来说一下自己对某些内容的理解。

在这里插入图片描述

一、ADC转换耗时

STM32 ADC转换速度与精度

对于AD转换所需要的时间,我们经常看到:Tconv = Sampling time + 12.5 cycles
总时间=采集时间+转换时间
采样时间是我们根据ADC_SMPR寄存器设置的,采样时间越长,精度越高
后面的12.5个ADC周期,表示转换时间,即由采集到的信息到转换出数据的时间。查询资料说是固定的。

二、转换模式

ADC有规则组和注入组,又有扫描、单次、连续、单多通道,很多很复杂,就做了如下表格,也进行了实验验证。

在这里插入图片描述

绿色表示可以使用该模式;
红色表示该模式无法正确转换出想要的结果;
蓝色表示使用该模式无意义;

规则组与注入组的区别,不在描述;简单的说,注入组就是比规则组优先级高的组,注入组一来,规则组必须停止,先让注入组转换,转换结束,规则组才能继续转换。所以,注入组是不支持连续转换的,如果它一直连续转换,岂不是规则组一直不能转换。但是如果使用了“自动注入模式”,注入组是支持使用连续转换的(在此模式里,必须禁止注入通道的外部触发。)

对单通道而言,不用使用扫描模式,所以非扫描模式即可;
单次转换:假如开启了ADC通道1,每次有外部事件,就会转换一次;
连续转换:假如开启了ADC通道1,只要来一次外部事件,就会一直转换。又因为规则通道就一个数据寄存器,所以需要DMA传输数据;

对多通道而言,必须使用扫描模式。在非扫描模式下,只会转换第一个通道;
单次转换:假如开启了ADC通道1、2、3,每次有外部事件,就按照通道的转换顺序转换一次(顺序是由ADC_SQRX控制的);当然也需要DMA传输。
连续转换:假如开启了ADC通道1、2、3,只要来一次外部事件,就会一直按照通道的转换顺序转换:1->2->3->1->2->3…。当然也需要DMA传输。

对于注入组来说,最多能使用四个ADC通道,并且每一个通道都有自己的数据存储寄存器,所以并不需要DMA传输。

规则组和注入组是可以同时使用的。例如通道1、2设置为规则组,通道3、4设置为注入组。

对于转换模式如果还不清楚的话,可以看这个:ADC扫描模式理解

三、对某些寄存器的理解

1、ADC_CR2

在这里插入图片描述

在stm32的参考手册中,该寄存器的第20位:EXTTRIG:用于是否开启外部触发事件。
我一开始理解,ADC如果用软件触发的话,就不用开启该位,因为软件触发不算是外部,只有中断、定时器事件才算是外部事件。我错了,并不是这样的。
根据最上边的结构图也能看到,想要触发规则通道必须开启EXTTRIG。
根据EXTSEL位也能看出,111为软件触发,剩余的为中断和定时器事件,所以它指的外部事件全部都包括了。根据下图也能得到证实:
在这里插入图片描述

2、ADC_SQRX

在这里插入图片描述

ADC_SQR1、2、3,是用来设置规则组通道个数和扫描时的转换顺序。
我想要让通道几第几个转换,那么我就把它写到第几个转换的位置。
例如,在库函数中,通道1设定为第一个转换的,通道2设定为第二个转换的。
你可以去底层的寄存器配置看看。在这里插入图片描述

四、库函数注意事项

在这里插入图片描述

我们常用的库函数中ADC的配置,红色处的两个框,是针对规则组设置的;绿色的是针对注入组设置的,它们两个是互不干扰的。

在这里插入图片描述

这个是针对ADC_CR2的位设置的,开始规则组(注入组)的转换,以及开启其可以启动规则组(注入组)转换的外部触发事件;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32学习】模数转换器——ADC 的相关文章

  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • 如何让printf在STM32F103上工作?

    我是 STM32F103 世界的新手 我有一个STM32F103的演示代码 我正在使用arm none eabi来编译它 我尝试了在谷歌上可以找到的内容 但到目前为止没有任何效果 我已经花了三天时间来解决这个问题 任何人都可以给我一个运行良
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 135-基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真+源程序

    资料编号 135 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 电机 超声波传感器 制作一个基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真 2 通过DHT11传感器检测当前
  • HAL库STM32常用外设教程(二)—— GPIO输入\输出

    HAL库STM32常用外设教程 二 GPIO输入 输出 文章目录 HAL库STM32常用外设教程 二 GPIO输入 输出 前言 一 GPIO功能概述 二 GPIO的HAl库驱动 三 GPIO使用示例 1 示例功能 四 代码讲解 五 总结
  • Push_back() 导致程序在进入 main() 之前停止

    我正在为我的 STM32F3 Discovery 板使用 C 进行开发 并使用 std deque 作为队列 在尝试调试我的代码 直接在带有 ST link 的设备上或在模拟器中 后 代码最终在 main 中输入我的代码之前在断点处停止 然
  • 毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计

    基于STM32的智能温室控制蓝牙声光报警APP系统设计 1 项目简介 1 1 系统构成 1 2 系统功能 2 部分电路设计 2 1 stm32f103c8t6单片机最小系统电路设计 2 2 LCD1602液晶显示电路设计 2 2 风
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • STM32的HAL中实现单按、长按和双按功能

    我正在尝试实现单击 双击和长按功能来执行不同的功能 到目前为止 我已经理解了单击和长按的逻辑 但我不知道如何检测双击 至于代码 我使用计数器实现了单击和长按 但代码仅停留在第一个 if 条件上 bool single press false
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • systick定时器

    systick定时器 文章目录 前言 一 前期疑惑 二 解答 1 关于systick是阻塞的吗 2 非阻塞 三 软件编写 总结 前言 这边记录systick相关知识点 一 前期疑惑 在学习systick志气啊 其实对于systick还是一脸
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include

随机推荐

  • 如何搭建node_exporter

    如何搭建node exporter 1 观看条件 1 假设你已经看过上一篇文章 如何搭建普罗米修斯 Prometheus 2 假设你已经会搭建普罗米修斯 xff08 promethus xff09 3 上面两个假设 xff0c 只要满足一个
  • python类中初始化形式:def __init__(self)和def __init__(self, 参数1,参数2,···,参数n)区别

    前言 这两种初始化形式 xff0c 就类似于C 43 43 类中的构造函数 形式1 def init self span class token keyword class span span class token class name
  • Go语言操作grpc详细使用

    Go语言操作grpc详细使用 零 参考链接一 protobuf的详细使用二 grpc与protobuf的go文件的生成1 安装两个插件2 写proto文件3 编译proto文件 xff0c 生成go文件 三 grpc的详细使用1 一元RPC
  • Steghide使用教程及其密码爆破

    Steghide使用教程及其密码爆破 工具介绍 Steghide是一款开源的隐写术软件 xff0c 它可以让你在一张图片或者音频文件中隐藏你的秘密信息 xff0c 而且你不会注意到图片或音频文件发生了任何的改变 而且 xff0c 你的秘密文
  • 一道Gloang并发、锁的面试题,你会吗?

    Gloang并发 锁的面试题 1 题目描述2 问题分析2 1问题一2 2问题二2 3问题三2 4问题四2 5问题五 3 问题解决方法4 代码实现4 1 map前后加锁的方式4 2 sync map解决方式 1 题目描述 源地址 xff1a
  • 阿里云、腾讯云centos7安装mysql

    阿里云 腾讯云centos7安装mysql 1 下载2 解压与准备3 安装4 配置4 1配置数据库4 2查看默认密码4 3启动mysql4 4设置密码 5 开启远程登录5 1开放3306端口5 2开启远程登录6 参考链接 1 下载 镜像网站
  • go语言gin、net/http的优雅关机

    gin net http的优雅关机 什么是优雅关机 xff1f 优雅关机的实现参考链接 什么是优雅关机 xff1f http server运行过程中 xff0c 若进程被关闭 xff0c 那么正在处理的请求可能只被处理了一半就停止了 xff
  • C语言不详细记录

    C记录 1 内存管理2 结构体内存对其规则3 字符串函数4 二维数组5 const 指针6 字符串7 图片记录8 函数指针 1 内存管理 C语言内存讲解 详说内存分布和heap空间 2 结构体内存对其规则 C语言结构体对齐规则 C语言 结构
  • 【web压测】压测常用工具、压测指标到底是什么?

    压测常用工具 压测指标到底是什么 xff1f 一 压测指标 I1 QPS xff0c 每秒查询2 TPS xff0c 每秒事务3 RT xff0c 响应时间 二 压测指标 II三 压测工具1 ab2 go wrk 在window上压测 一
  • C语言结构体字节对其规则简述

    C语言结构体字节对其规则简述 规则描述示例示例一示例二 字节对齐规则 xff0c 一直不是很理解 xff0c 网上的答案也是参差不齐 规则描述 首先 xff0c 预处理指令 pragma pack n 可以改变默认对齐数进行字节对齐 n 取
  • 【STM32学习】SysTick定时器(嘀嗒定时器)

    SysTick定时器 一 参考资料二 时钟源选择与定时时间计算1 时钟源选择2 定时时间计算 三 SysTick Handler中断服务函数 一 参考资料 嘀嗒定时器 xff1a 时钟源 寄存器 二 时钟源选择与定时时间计算 结合正点原子的
  • 【STM32学习】GPIO口的八种工作模式

    GPIO口的八种工作模式 一 参考资料二 GPIO八种模式1 输入模式2 输出模式 三 施密特触发器1 电路2 电路计算 一 参考资料 GPIO原理图详解 强烈建议观看 xff1a GPIO为什么这样设计 xff1f 施密特触发器 原理 施
  • 【STM32学习】WWDG窗口看门狗

    STM32学习 WWDG窗口看门狗 x1f415 1 图展示WWDG原理2 复位 中断条件3 溢出时间计算4 与独立看门狗 x1f415 的对比 1 图展示WWDG原理 2 复位 中断条件 产生复位的情况 xff1a 当递减计数器数值递减到
  • 【STM32学习】时钟配置详解

    STM32学习 时钟配置详解 看懂时钟图结合代码外部高速时钟修改 看懂时钟图 在刚开始学习32的时候 xff0c 并不会在意这些 xff0c 或者即使看了也看的不是很明白 随着学习的深入 xff0c 我们发现看门狗 定时器 ADC很多外设都
  • vnc远程访问ubuntu18.04桌面系统 vncserver开机自启动

    文章目录 一 windows端准备二 ubuntu端准备三 远程连接桌面四 配置vncserver开机自启动 一 windows端准备 下载TightVNC xff1a https www tightvnc com 二 ubuntu端准备
  • 【STM32学习】定时器寄存器配置、功能工作过程详解

    STM32学习 定时器寄存器配置 功能工作过程详解 零 参考一 引言二 功能以及寄存器说明1 最基本的定时功能 xff08 时基单元 xff09 1 1 框图1 2 工作流程1 3 寄存器介绍1 3 1 CR1寄存器1 3 2 CNT PS
  • 【STM32学习】实时时钟 —— RTC

    STM32学习 实时时钟 RTC 零 参考一 工作原理1 RTC介绍2 工作过程 二 相关寄存器三 代码说明1 rtc初始化2 关于中断3 中断配置代码 xff08 仅供参考 xff09 3 1 秒中断 43 普通闹钟功能3 2 待机模式唤
  • 【JLink仿真器】盗版检测、连接故障、检测不到芯片问题

    JLink仿真器 盗版检测 连接故障 检测不到芯片问题 一 问题描述二 解决方法1 降低驱动 xff08 解决非法问题以及连接故障 xff09 2 SWD引脚被锁 xff08 解决检测不到芯片 xff09 三 说明 一 问题描述 盗版检测
  • 【STM32学习】直接存储器访问——DMA

    STM32学习 直接存储器访问 DMA 零 参考一 对DMA的理解二 DMA通道优先级三 DMA通道x传输数量寄存器 DMA CNDTRx 四 DMA缓冲区设计 零 参考 一个严谨的STM32串口DMA发送 amp 接收 xff08 1 5
  • 【STM32学习】模数转换器——ADC

    STM32学习 模数转换器 ADC 零 参考一 ADC转换耗时二 转换模式三 对某些寄存器的理解1 ADC CR22 ADC SQRX 四 库函数注意事项 零 参考 STM32固件库 xff08 标准外设库 xff09 入门学习 第七章 A