在这里插入图片描述
声明:上图是STM32产品型号各字段含义,本文基于STM32F103

1、ADC的一些概念

常规通道(常规组)和注入通道(注入组)(regular channels and injected channels)
ADC支持的外部通道总共16个(且被3个ADC共享,ADC123),每个通道只能三种状态取其一:作为常规通道(最多能定义16个)、作为注入通道(最多能定义4个)、未配置。
划进常规组的通道即为最普通、最常用的通道,所有通道都是按程序员指定的顺序依次转换,不争不抢。
划进注入组的通道,优先级高,一旦触发,可以打断常规组中正在执行的A/D转换,并保存常规组的上下文,待注入组都转换完了,再切回常规组执行(可以按中断理解)。

独立模式和并行模式(Independent mode and Dual mode)
独立模式是指各个ADC独立运行,不与其他ADC的运行耦合。当然,一个ADC也可以整出很多模式。
并行模式是指两个ADC协作运行,STM32特指ADC1和ADC2协作运行,这又可以产生很多协作方式,当然,也产生了很多模式。

独立模式
单次转换模式(0)、扫描运行模式、扫描+连续运行模式、间断运行模式。
连续转换模式(1)。

注:单次转换模式和连续运行模式的使能共用一个Bit。0表示单次转换模式,1表示连续转换模式。

并行模式
常规并行模式、常规快速交叉模式、常规慢速交叉模式。

综上所述,独立模式中的单次转换模式最为普通,构建起来最为简单。

2、ADC 寄存器

ADC->SR:ADC status register,开发ADC必用的一个寄存器。
Address offset: 0x00  Reset value: 0x0000 0000在这里插入图片描述
rc_w0含义:Software can read as well as clear this bit by writing 0. Writing ‘1’ has no effect on the bit value.

  • Bit4 STRT:Regular channel Start flag,当规则通道开始转换时由硬件置位,由软件复位。用于查询。
    0:无规则通道启动转换  1:有规则通道启动转换
  • Bit1 EOC:End of conversion,一个或一组通道转换完成时由硬件置位,由软件复位或通过读ADC->DR寄存器复位。用于查询。
    0:转换未完成  1:转换已完成

ADC->CR1:ADC control register 1,开发ADC必用的一个寄存器。
Address offset: 0x04  Reset value: 0x0000 0000在这里插入图片描述

  • Bits19:16 DUALMOD[3:0]:Dual mode selection,全零就是独立模式。由软件设置。
    0000: Independent mode.
    0001: Combined regular simultaneous + injected simultaneous mode
    0010: Combined regular simultaneous + alternate trigger mode
    0011: Combined injected simultaneous + fast interleaved mode
    0100: Combined injected simultaneous + slow Interleaved mode
    0101: Injected simultaneous mode only
    0110: Regular simultaneous mode only
    0111: Fast interleaved mode only
    1000: Slow interleaved mode only
    1001: Alternate trigger mode only

ADC->CR2:ADC control register 2,开发ADC必用的一个寄存器。
Address offset: 0x08  Reset value: 0x0000 0000 在这里插入图片描述

  • Bit22 SWSTART:Start conversion of regular channels,软件触发通道转换,由软件置位,转换开始后由硬件复位。
    0:复位值  1:启动常规通道转换

  • Bit20 EXTTRIG:External trigger conversion mode for regular channels,外部事件触发常规通道开启转换的使能位,
    由软件设置。0:禁止外部事件触发转换  1:允许外部事件对转换的触发。

  • Bits19:17 EXTSEL[2:0]:External event select for regular group,选择外部事件,由软件设置。
    以下仅给出ADC12的,ADC3不同但未给出,
    000: Timer 1 CC1 event
    001: Timer 1 CC2 event
    010: Timer 1 CC3 event
    011: Timer 2 CC2 event
    100: Timer 3 TRGO event
    101: Timer 4 CC4 event
    110: EXTI line 11/TIM8_TRGO event (TIM8_TRGO is available only in high-density and XLdensity devices)
    111: SWSTART(software start,由软件触发,即置位Bit22)

  • Bit11 ALIGN:Data alignment,由软件设置。
    0:12位数据右对齐  1:12位数据左对齐

  • Bit 1 CONT:Continuous conversion,连续转换或单次转换模式选择位,由软件设置。
    0:开启单次转换模式  1:开启连续转换模式

ADC->SMPR1: ADC sample time register 1,设置每个通道的采样时间,共18个通道,每通道3bit,因此使用了两个寄存器。
Address offset: 0x0C  Reset value: 0x0000 0000 在这里插入图片描述

  • 注:ADC1 ch17接内部温度传感器、ch16接内部VREFINT
    ADC2 ch17 ch16都接内部VSS
    ADC3 ch17 ch16 ch15 ch14都接VSS

ADC->SMPR2: ADC sample time register 1,开发ADC必用的寄存器。
Address offset: 0x10  Reset value: 0x0000 0000 在这里插入图片描述

  • Bits29:0 SMPx[2:0]: Channel x Sample time selection,由软件设置。
    000: 1.5 cycles
    001: 7.5 cycles
    010: 13.5 cycles
    011: 28.5 cycles
    100: 41.5 cycles
    101: 55.5 cycles
    110: 71.5 cycles
    111: 239.5 cycles
  • 注:ADC3 ch9接到了VSS

ADC->JOFRx(x=1…4):ADC injected channel data offset register x,用不到,暂不作说明。
Address offset: 0x14-0x20  Reset value: 0x0000 0000

ADC->HTR:ADC watchdog High Threshold register,用不到,暂不作说明。
Address offset: 0x24  Reset value: 0x0000 0FFF
ADC->LTR:ADC watchdog low threshold register,用不到,暂不作说明。
Address offset: 0x28  Reset value: 0x0000 0000

ADC->SQR1:ADC regular sequence register 1,用于扫描模式下确认先后顺序,用不到,暂不作说明。
Address offset: 0x2C  Reset value: 0x0000 0000
ADC->SQR2:ADC regular sequence register 2,每通道占5bit,因此用3个寄存器。
Address offset: 0x30  Reset value: 0x0000 0000
ADC->SQR3:ADC regular sequence register 3,
Address offset: 0x34  Reset value: 0x0000 0000

ADC->JSQR:ADC injected sequence register,注入通道在扫描模式下也要有先后顺序。用不到,暂不作说明。
Address offset: 0x38  Reset value: 0x0000 0000

ADC->JDRx(x=1…4):ADC injected data register x,划进注入组的每个通道独享数据寄存器。用不到,暂不作说明。
Address offset: 0x3C - 0x48  Reset value: 0x0000 0000

ADC->DR:ADC regular data register,常规通道共享一个数据寄存器,开发ADC必用的一个寄存器。
Address offset: 0x4C  Reset value: 0x0000 0000在这里插入图片描述

  • Bits31:16 ADC2DATA[15:0]:ADC2 data
    In ADC1:在并行模式下,存放ADC2的数据
  • Bits15:0 DATA[15:0]:Regular data,只读,

右对齐(ADC->CR2:ALIGN = 0):
在这里插入图片描述
左对齐(ADC->CR2:ALIGN = 1): 在这里插入图片描述

3、ADC 独立模式 常规通道 单次转换 配置步骤

  1. 设置ADC->CR1寄存器,Bit19:16(DUALMOD[3:0])为 0000,确保ADC处于独立模式;
    其他位保持复位值。
  2. ADC->CR2的 Bit20(EXTTRIG)写1,以允许外部事件触发转换;
    再设置ADC->CR2的 Bit19:17(EXTSEL[2:0])为111,选定触发事件为软件触发(即稍后通过向ADC->CR2的 Bit22(SWSTART)写1触发);
    ADC->CR2的 Bit11 (ALIGN)写0,以设置12位采样数据的对齐方式为右对齐;
    最后向ADC->CR2的 Bit 1 (CONT)写0,以开启单次转换模式。
    其他位保持复位值。
  3. 向ADC->SMPR2的 Bits5:3(SMP1[2:0])写 111,以设置通道1的采样时间为239.5 个周期。
    其他位保持复位值。
  4. ADC->CR2的 Bit22(SWSTART)写1触发通道1的单次转换。
  5. 阻塞式查询ADC->SR的 Bit1(EOC)是否为1,为1则表明转换完成。
  6. 读取(uint16_t)ADC->DR寄存器。
  7. 重复 3~6

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94725.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94725.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94725.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Aha Moment——啊哈时刻!

1. 理解面试官的意图面试官问你“Aha moment”,其实是想知道:你是否真正理解这个概念:不只是背定义,而是理解其为什么重要。你如何发现它:考察你的数据分析方法论和技术能力(用了哪些数据、指标、模型&…

RAG教程5:多表示索引和ColBERT

文章目录 导入依赖包 多表示索引 ColBERT 导入依赖包 %pip install youtube-transcript-api pytube多表示索引 from langchain_community.document_loaders import WebBaseLoader from langchain_text_splitters import RecursiveCharacterTextSplitterloader = WebBaseL

来自火山引擎的 MCP 安全授权新范式

资料来源:火山引擎-开发者社区 本文旨在深入剖析火山引擎 Model Context Protocol (MCP) 开放生态下的 OAuth 授权安全挑战,并系统阐述火山引擎为此构建的多层次、纵深防御安全方案。面对由 OAuth 2.0 动态客户端注册带来的灵活性与潜在风险,…

瑞芯微RK3506开发板PWM输入捕获驱动调试记录

本文演示PWM输入信号采集,基于触觉智能RK3506开发板。配置为: 3核Cortex-A7Cortex-M0多核异构处理器 主要接口:2路CAN FD,5路串口,RGB、MIPI、音频、USB2.0 OTG等、板载双百兆网口4G星闪SLEWiFi6BLE5.2。 PWM信号简…

PHP的header()函数分析

PHP的header()函数是HTTP协议交互的核心工具,它通过直接操纵响应头实现服务器与客户端之间的元数据通信。作为PHP原生函数,其设计初衷是处理HTTP协议层的关键操作,包括状态码设置、内容类型声明和缓存控制等基础功能。在Web开发中&#xff0c…

根据并发和响应延迟,实现语音识别接口自动切换需求

根据并发和响应延迟,语音识别接口自动 切换需求 需求描述: 当请求的语音识别的请求数量大于3或者请求语音识别接口3秒不可达无响应,切换备用语音识别接口 科大讯飞语音识别作为备用接口 科大讯飞的API文档: 进入讯飞开放平台的网页&#…

程序员之电工基础-CV程序解决目标检测

一、背景 兴趣爱好来了,决定研发一个产品。涉及到电工和机械等知识,所以记录一下相关的基础知识。今天的内容又回到了我的主营板块!!哈哈!!为后续整体集成做准备,先测试目标检测部分的能力。 二…

B树的概述以及插入逻辑

一,B树的概述1.B树(B-树)又称多路平衡查找树,B树所有节点中孩子数量的最大值n称为B树的阶,通常用m表示比如当m为2就是常见的二叉树一颗m阶的B树定义如下:1)每个结点最多有m-1个关键字;2)根节点最少可以只有1个关键字;3…

如何用 Kotlin 在 Android 手机开发一个小闹钟、计时器、秒表

以下是在 Android 上用 Kotlin 开发小闹钟、计时器和秒表的方法,分为核心功能实现和界面设计两部分: 闹钟功能实现 AlarmManager 和 BroadcastReceiver // 设置闹钟 val alarmManager getSystemService(Context.ALARM_SERVICE) as AlarmManager val i…

LeetCode Hot 100 第8天

1. 73 矩阵置零(记录标识) 链接:题目链接 题解: 题解 时间复杂度O(n*m): 方案1(空间复杂度O(n m)):matrix[i][j] 0,意味着 第i行、第j列所有元素都要置为0;维护能置为0行、列的集…

Python OpenCV图像处理与深度学习:Python OpenCV开发环境搭建与入门

Python OpenCV入门:环境设置 学习目标 通过本课程,学员们将学习在Windows、macOS和Linux操作系统上安装Python和OpenCV,配置开发环境,以及如何使用Jupyter Notebook和PyCharm等集成开发环境(IDE)进行基本操…

【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习

【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习 文章目录【论文阅读】SegCLIP:用于高分辨率遥感图像语义分割的多模态视觉语言和快速学习一、介绍二、联系工作三、方法四、实验结果**数据集**SegCLIP: Multimodal Visual-…

Anaconda、OpenCV安装配置方法

目录 1.Anaconda安装 1.1 国内镜像软件下载 1.2 点击exe,一路下一步安装 1.3 检查安装情况 1.3.1 安装前后系统环境变量变化对比 1.3.2 查看安装路径和版本 1.4 Anaconda自带的python版本查看命令如下: 1.5 修改镜像地址,加快下载包的…

C++函数继承

C函数继承引言C三大特征分别为封装,继承和多态,它们构成了面向对象编程的基石,它们协同工作以提升代码的模块化,可复用性和灵活性封装:提高代码的维护性(当程序出现问题时可以准确定位)继承&…

瞬态数据表定义Fluent变量

重要说明:本文基于2025R2版本编写,其他版本可能存在差异。1 概述瞬态数据表是定义 Fluent 变量随时间变化规律的profile文件,文件类型为文本文件。瞬态数据表假设所有时刻,被定义的对象都是均匀分布,无法考虑变量在空间…

文本嵌入模型的本质

这是一个非常深刻且重要的问题。我们来详细拆解一下“通用文本嵌入模型”的本质。 我们可以从三个层次来理解它:它是什么(What),它如何工作(How),以及它为什么重要(Why)。…

Linux笔记13——shell编程基础-7

补充1.printf %s\t%s 字符串 中,\t一定不要加双引号,这一点和在awk中使用的时候有所不同2.其中%s也可以写成%ns,n可以被用来设置列宽,默认右对齐#打印输出文件系统的使用情况 [rootlocalhost ~]# printf %-30s\t%s\n $(df -h | aw…

【混合开发】Android+WebView视频图片播放硬件加速详解

webview视频播放出现白屏、蓝屏、花屏、黑屏等等 但由于布局结构是androidwebviewH5本地视频等。视频播放导致的异常排查起来十分复杂且没有原生的相关日志 于是需要给webview播放视频进行硬件加速,刚开始以为是一件很简单的配置而已。本着无经验从头开始的原则&am…

Allegro-DDR3实战-差分对-等长设置-区域规则

本章内容: 一)Allegro之DDR3设计 (实操干货) 二)规则设置具体步骤 DDR3信号表: (eg:镁光MT41J256M16HA-15E) 数据信号 DQ[15:0] DQS[1:0] DM[1:0] DQ:双向数据总线 DQS:数据选通,用于同步数据传…

七牛云OSS空间复制迁移到另外一个空间

创新新的空间时存储地区必须一致 访问控制必须选择公开 1、下载七牛的同步工具并解压 qshell(http://developer.qiniu.com/docs/v6/tools/qshell.html) 2、解压文件 3、运行cmd登录到七牛账号 qshell account 你的七牛AK 你的七牛SK 你的账号 4、测…