STM32学习记录-06-ADC模数转换器

news2024/9/22 15:28:03

1 ADC简介

ADC(Analog-Digital Converter)模拟-数字转换器

ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁

12位逐次逼近型ADC,1us转换时间

输入电压范围:0~3.3V,转换结果范围:0~4095

18个输入通道,可测量16个外部和2个内部信号源

规则组和注入组两个转换单元

模拟看门狗自动监测输入电压范围

STM32F103C8T6 ADC资源:ADC1、ADC2,10个外部输入通道

2 逐次逼近型ADC

左边IN0-IN7为输入通道,通过通道选择开关进行转换,下面为地址锁存和译码,选中想选的通道放在ADDA、ADDB、ADDC给锁存信号就能选择通道。比较器比较两个电源,一个为待测电压,一个为DAC数模转换器的电压,不断调节DAC电压使DAC输出电压和外部通道输入电压近似相等,就可用DAC的数据代表外部输入数据,然后通过DAC输出到三态锁存寄存器。EOC转换结束信号,START开始转换(给一个输入脉冲,开始转换),CLOCK为ADC时钟。

3 ADC框图

左边GPIO口为ADC的输入通道IN0-IN15和两个内部通道(内部温度传感器和Vrefint内部参考电压),然后到达模拟多路开关选择指定的通道,右边为多路开关输出进入模数转换器逐次比较,转换结果会直接放在上方的数据寄存器中,读取寄存器就能得知结果。规则通道可以选择16个通道,但是规则通道数据寄存器只能存储1组的数据,所以要配合DMA使用。注入通道可以选择4个通道,数据寄存器有四个,可以同时存储。

左下角为触发转换部分,即START信号。触发信号分为两种,一种为软件触发,在程序中手动调用代码启动,另一种为硬件触发,即为电路上所示。触发源主要来源于定时器,有定时器各个通道、TRGO定时器主模式输出。

ADCCLK为CLOCK驱动内部逐次比较的时钟,来自ADC预分频器,来源于RCC中72MHz的APB2预分频器。ADCCLK最大值为14MHz,只有6和8分频。

DMA请求触发DMA数据转运。

模拟看门狗可以存储阈值高限和阈值低限,启动看门狗和看门通道,超过阈值范围就会乱叫,申请一个模拟看门狗中断,最后通向NVIC。对于规则组和注入组也会有EOC转换完成信号,EOC为规则组完成信号,JEOC为注入组完成信号,会在状态寄存器设置标志位,读取后就能知道是否接受,也可以到NVIC触发中断。

4 ADC基本结构

左边为输入通道(16个GPIO口和两个内部通道),然后进入AD转换器(转换器内有两个组,规则组和注入组,规则组可以选16个通道,注入组只能4个),然后转换结果存放在AD数据寄存器(规则组只有一个,注入组有4个),下面的触发控制提供START信号(可提供软件或硬件触发,硬件触发主要来自定时器,也可选择外部中断引脚),右边是来自RCC的ADC时钟CLOCK(推动ADC逐次比较),模拟看门狗检测转换结果范围,若超出设定阈值就通过中断输出控制向NVIC申请中断,规则组和注入组转换完成后有EOC信号,置一个标志位通向NVIC,右下方的开关控制,在库函数中为ADC_Cmd函数,给ADC上电。

5 输入通道

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA在医疗方面的应用

可编程逻辑支持以灵活、低风险的方式成功实施系统设计,同时提供了最佳的成本效率和增值的差异化功能,延长了医疗保健应用的生命周期,包括诊断成像、电子医疗、治疗和生命科学与医院设备。 在医疗方面的应用非常广泛,以下是几个主…

Langchain Memory组件深度剖析:从对话基础到高级链式应用

文章目录 前言一、Langchain memory 记忆1.Memory 组件基本介绍2.Memory 组件的类型1.ChatMessageHistory2.ConversationBufferMemory3.ConversationBufferWindowMemory4.ConversationEntityMemory5.ConversationKGMemory6.ConversationSummaryMemory 二、长时记忆1.简单介绍2.…

Error: Can not import paddle core while this file exists

背景 因为工作需要,原来的项目部署的电脑被征用,重新换了一个新电脑,重装了系统,今天在给一个使用ocr的项目进行环境配置的时候发现,无论安装哪个版本的paddlepaddle,总是可以安装成功,但是导入…

Android CCodec Codec2 (四)C2Param - Ⅱ

这一篇内容我们来解答复杂参数定义过程中提出的疑问,本文有大量的模板和宏展开,请耐心阅读。 1、不含灵活数组的复杂结构体定义 DEFINE_AND_DESCRIBE_C2STRUCT和C2FIELD是不能分开的,使用时必须要按顺序依次调用这两个宏定义。宏定义比较复杂…

【机器学习-监督学习】神经网络与多层感知机

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

java-Mybaits框架01

1.框架概念 在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率; java后端框架 mybaits:对jdbc进行封装 Spring:对整个java后端架构进行管理。 SpringWeb:对web(S…

vxe-grid 利用dayjs提供的方法来格式化, 计算二个日期之间的年数/年龄

1、安装dayjs pnpm add dayjs yarn add dayjs npm install dayjs 2、导入 import dayjs from dayjs; 3、vxe-grid列: export const UserColumns: VxeGridPropTypes.Columns [ ... {title: 年龄,width: 70,field: old,showOverflow: tooltip,align: center,sortabl…

android studio 设置gradle jdk

1. 左上角点击file 2. 按照如下点击: 3. 即可修改gradle jdk

EasyExcel文件导出简洁版

1. EasyExcel简介 EasyExcel是一个基于Java的简单、快速、lightweight的Excel处理库。它的主要特点包括: 轻量级设计: EasyExcel的jar包大小仅约1MB,相比较其他Excel处理库如Apache POI来说更加轻量。 采用内存友好的流式读写模式,无需一次性加载整个Excel文件到内存,大大减少…

Linux的CPU调度优化详解

一、引言 随着计算机硬件技术的不断发展和进步,现代服务器和工作站通常都配备了多核CPU,为了充分发挥多核处理器的性能优势,Linux系统提供了多种CPU调度器以及相关的参数设置,以便进行CPU调度优化,提高系统的整体性能…

AI 音频/文本对话机器人:Whisper+Edge TTS+OpenAI API构建语音与文本交互系统(简易版)

文章目录 前言思路:环境配置代码1. 加载Whisper模型2. 使用Whisper语音转文本3. 使用OpenAI API生成文本进行智能问答4. 实现文本转语音功能5. 合并音频文件6. 构建Gradio界面注意 总结 前言 在本篇博客中,我将分享如何利用Whisper模型进行语音转文本&a…

GFS系统架构

GFS系统架构 针对上述观察,我们发现它们与早期文件系统的设计假设存在显著差异。为此,我们采取了以下解决方案: 组件故障:我们接受故障为常态,系统设计以自我监控和快速恢复为原则,适应低成本硬件环境下的…

基础算法--递推算法[信奥一本通]

本节所讲题源自【信奥一本通】C版:基础算法-第三章-递推算法 相信大家应该都接触过数列的概念。哎哟,一直在跟数组打交道,说数列感觉好陌生,哈哈。数列中的迭代法大家都还记得吗:通过反复应用特定规则,推导…

Linux系统中的Btrfs技术

在Linux操作系统中,文件系统扮演着至关重要的角色,负责管理数据存储、文件访问以及系统的稳定性。其中,Btrfs(B-tree file system)作为一种先进的文件系统技术,正在逐渐引起广泛关注和应用。本文将深入探讨…

【算法】深入浅出聚类算法:原理、应用与Java实现

一、引言 在数据分析和机器学习中,聚类算法是一种无监督学习技术,用于将数据集中的对象自动划分为多个子集,每个子集称为一个簇。聚类算法在多个领域有着广泛的应用,如图像处理、信息检索、市场细分、生物信息学等。本文将介绍聚…

匿名函数详解

lambda表达式&#xff1a; [](){} []捕获列表 () 函数的参数列表 {}函数的函数体 #include<iostream> #include<string> using std::cout; using std::endl; using std::string; void func() {cout << "hello func" << endl; }void tes…

【系统分析师】-WEB开发技术

目录 1、负载均衡技术 1.1、应用层负载均衡 1.2、传输层负载均衡 2、有状态和无状态问题 3、CDN内容分发网络 4、持久化技术 1、负载均衡技术 1.1、应用层负载均衡 1&#xff09;http 重定向 HTTP 重定向就是应用层的请求转发。用户的请求其实已经到了HTTP重定向负载均…

深度学习--负采样技术及其扩展详解

负采样技术及其扩展详解 负采样&#xff08;Negative Sampling&#xff09;是一种常用于自然语言处理和推荐系统中的技术&#xff0c;主要目的是优化模型的训练效率和效果。负采样技术的典型应用场景包括词向量训练&#xff08;如Word2Vec&#xff09;、推荐系统中的隐语义模型…

使用 Nuxt 的 showError 显示全屏错误页面

title: 使用 Nuxt 的 showError 显示全屏错误页面 date: 2024/8/26 updated: 2024/8/26 author: cmdragon excerpt: 摘要:本文介绍Nuxt.js中的showError方法用于显示全屏错误页面,包括其参数类型及使用方式,并演示了如何在页面中捕获并展示错误,还介绍了useError用于管理…

MySQL笔记-对mysql.sock.lock认识(2024-06-12)

此篇博文记录到个人笔记的时间为2024-06-12。 背景 每次服务器非正常关机&#xff0c;或者制作的docker镜像有问题时或没手动停mysql时&#xff0c;运行 mysqld --userroot 时&#xff0c;mysql总会启动失败&#xff0c;查看/var/log/mysqld.log时会有如下报错信息&#xff…