stm32f103c8t6学习笔记(学习B站up江科大自化协)-ADC

ADC简介

        ADC,英文全称是Analog to Digital Convert,意为模拟数字转换器,简称模数转换器,或者叫AD转换器,STM32主要是数字电路,数字电路只有高低电平,没有几V电压的概念,如果想读取电压值需借助ADC模数转换器来实现。ADC读取引脚上的模拟电压,转化成一个数据存在寄存器里,将这个数据读取到变量中就可以进行显示、判断、记录等操作。

        数字到模拟的桥梁除了DAC还有PWM,PWM只有完全导通和完全断开两种状态,这两种状态下都没有功率损耗,在直流电机调速这种大概率应用场景,使用PWM来等效模拟量比DAC更好,PWM电路更简单常用。DAC的应用主要在波形的生成的领域,比如信号发生器、音频解码器等等。本型号的STM32没有DAC外设,自行了解即可。

        12位逼近型ADC和1us转换时间,设计到两个关键参数,第一个是分辨率,一般用多少位来表示,12位AD值的范围就是0 ~ 2^{12} - 1,就是量化结果是0 ~ 4095,位数越高量化结果越精细,对应分辨率越高。转换时间也就是转换频率,AD转换需要一小段时间,1us表示从AD转换开始到产生结果需要花1us的时间,对应AD转换频率就是1MHz,这也是STM32的最快转换频率。

        ADC的输入电压一般要求都是在芯片的负极和正极之间变化的,最低电压是负极0V,最高电压是正极3.3V,经过ADC转换之后最小值是0,最大值是4095,最大最小分别对应,之间的值也一一对应的线性关系,计算简单乘除系数即可。

        外部信号源就是16个GPIO口,在引脚上直接接模拟信号即可,不需要任何额外的电路,引脚就能直接测电压,较为方便。2个内部信号源是内部温度传感器和内部参考电压,温度传感器可以测量CPU的温度,内部参考电压是一个1.2V左右的基准电压,不随外部供电电压的变化而变化。如果芯片的供电不是标准的3.3V,测量外部引脚的电压可能不对,此时可读取这个基准电压进行校准,得到正确的电压值。

        ADC的增强功能,普通的AD转换流程,启动一次转换读一次值,再启动再读值。STM32的ADC可以列一个组,一次性启动一个组,连续转换多个值,有两个组,一个用于常规使用的规则组,一个是用于突发事件的注入组

        模拟看门狗自动检测输入电压范围。ADC一般可以用于测量光线强度,温度这些值,当温度高于或低于某个阈值会执行一些操作,这个判断就可以用模拟看门狗去自动执行,模拟看门狗可以用于检测指定收的某些通道,当AD值高于或低于阈值时就会申请中断,并可以在中断之中执行相应的操作,省去不断手动读值再用if判断的操作

        stm32f103c8t6只有ADC1和ADC2两个外设,10个外部输入通道,也就是它最多只能测量10个外部引脚的模拟信号。前面的16个外部信号源是这个系列最多有16个外部信号源,但是这个芯片引脚较少,有些引脚未被引出。如果需要更多通道可以选择其他型号

逐次逼近型ADC

        ADC0809的内部电路图,是一个独立的8位逐次逼近型ADC芯片。左边的IN0~IN7是输入的八路通道,通过通道选择开关选择一路,输入到比较器的上方进行转换,下边是地址锁存和译码,想选择哪个通道,就把通道号放在这三个脚上,给一个锁存信号,上面对应的通道选择开关就可以自动拨好了,这部分相当于可以通过模拟信号的数据选择器。ADC转换是一个很快的过程,给一个开始信号过几us便转换完成,如果想转换多路信号,只需一个AD转换器,加上一个多路选择开关,想转换哪一路拨动对应的开关,选中对应通道,然后开始转换即可。这里的ADC0809只有八个输入通道,STM32内部有18个输入通道,对应图中就是18路输入的多路开关

        对于判断电压对应的编码数据的方法,需要用到逐次逼近的方法来一一比较,图中三角形是一个电压比较器,可以判断两个输入信号电压的大小关系,输出一个高低电平指示谁大谁小,他的两个输入端,一个是待测的电压(上),另一个是DAC电压输出端,DAC是数模转换器,给他一个数据就可以输出对应的电压,DAC内部是使用加权电阻网络进行转换。

        将一个外部通道输入的位置编码的电压,和一个DAC输出的已知编码的电压,同时输入到电压比较器进行判断,如果DAC输出电压比较大,那就调小DAC数据,如果DAC输出比较小,那么就增大DAC数据,直到DAC输出电压和外部通道输入电压近似相等,这样DAC输入的数据就是外部电压的编码数据。

        电压调节的过程是由逐次逼近寄存器SAR完成的,为了最快找到未知电压的编码,通常会使用二分法进行查找,比如这里是8位的DAC,那编码就是0~255,第一次比较的时候,给DAC输入255的一半128进行比较,如果DAC电压大了,第二次比较的时候给128的一半64,如果还大第三次比就给32,如果这次小了那第四次就给32~64之间的值然后继续,以最快找到未知电压的编码。在这个过程中如果用二进制表示的话,会发现128 64 32 正好是二进制每一位的位权,这个判断过程相当于是对二进制从高位到低位依次判断是1还是0的过程。对于8位的ADC,从高位到低位判断8次就可以找到未知电压的编码。对于12位的ADC就需要判断12次。

        AD转换结束后,DAC的输入数据就是未知电压的编码,通过右边三态锁存缓冲器进行输出,八位就有8根线,十二位就有12根线。最右上角的EOC是End Of Convert转换结束信号。Start是开始转换,给一个输入脉冲开始转换,Clock是ADC时钟,因为ADC内部是一步一步进行判断的,需要时钟推动这个过程。

        下面VREF+和VREF-是DAC的参考电压,比如给一个数据255会对应5V还是3.3V将由这个参考电压决定,这个DAC的参考电压也决定了ADC的输入范围,所以他也是ADC参考电压。左边VCC和GND是整个芯片电路的供电,通常参考电压的正极VREF+和VCC是一样的,会接在一起,参考电压的负极和GND也是一样的,接在一起,一般情况下,ADC的电压输入范围就和ADC的供电一样

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

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

相关文章

Android 优化 - 数据结构

一、概念 数据结构:数据存储在内存中的顺序和位置关系,选择合适的数据结构能提高内存的利用率。 线性结构链表结构树形结构 二、线性结构 结构优点缺点数组数据呈线性排列,初始化时就要指定长度且无法更改,会开辟一块连续的内…

使用ansible批量修改操作系统管理员账号密码

一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…

神经网络(深度学习,计算机视觉,得分函数,损失函数,前向传播,反向传播,激活函数)

目录 一、神经网络简介 二、深度学习要解决的问题 三、深度学习的应用 四、计算机视觉 五、计算机视觉面临的挑战 六、得分函数 七、损失函数 八、前向传播 九、反向传播 十、神经元的个数对结果的影响 十一、正则化与激活函数 一、神经网络简介 神经网络是一种有监督…

在vue项目中封装并使用WebSocket(2)

创建一个websocket组件 <script> export default {name: "index",props: {wsUrl: {type: String,require: true,},},data() {return {socket: "",};},watch: {wsUrl: {immediate: true,handler() {this.init();},},},methods: {init() {console.log…

RocketMq 顺序消费、分区消息、延迟发送消息、Topic、tag分类 实战 (延迟发送消息) (四)

延迟发送消息生产者配置 如下所示&#xff1a;Bean注解向Spring容器注入一个名字叫delayOrderProducerBean、类型为OrderProducerBean 的对象&#xff08;下文需要用到&#xff09; Configuration public class DelayProducerClient {Autowiredprivate RocketMqDelayPropertie…

打开打包好的.APK文件,使用Android Studio

1. 没有android studio的 下载安装 Android 开发者 | Android Developers 2. 打开file下面的 “Profile or debug apk” 选择想要打开的.apk文件 3. 打开AndroidManifest.xml就可以看到想要看到版本号等基本信息

晶圆制造过程中常用载具的类型

晶圆载具用于硅片生产、晶圆制造以及工厂之间晶圆的储存、传送、运输以及防护。晶圆载具种类很多,如FOUP用于晶圆制造工厂中晶圆的传送;FOSB用于硅片生产与晶圆制造工厂之间的运输;CASSETTE载具可用于工序间运送以及配合工艺使用。 OPEN CASSETTE OPEN CASSETTE主要在晶圆…

VB.NET 中的属性(Properties)和字段(Fields)有什么区别?请举例说明。

VB.NET 中的属性&#xff08;Properties&#xff09;和字段&#xff08;Fields&#xff09;有什么区别&#xff1f;请举例说明。 在VB.NET中&#xff0c;属性&#xff08;Properties&#xff09;和字段&#xff08;Fields&#xff09;是用于封装数据的两种主要方式。它们之间的…

vue3 导航守卫

Vue 3 的导航守卫与 Vue 2 相比&#xff0c;在 API 和使用方式上并没有太大的变化&#xff0c;但 Vue 3 的响应式系统和 Composition API 为导航守卫提供了更多的灵活性。 以下是 Vue 3 中常见的几种导航守卫&#xff1a; 1. 全局前置守卫 全局前置守卫在路由跳转前执行。你可…

智慧公园:AI智能分析网关V4城市公园视频智能监管方案

一、背景分析 随着天气渐渐转暖&#xff0c;城市公园的花卉也逐渐盛开&#xff0c;春暖花开时节&#xff0c;前往公园赏花游玩的城市居民也渐渐多起来&#xff0c;因此安全问题也成为相关监管部门的重要管理任务之一。随着科技的不断进步&#xff0c;智能监控技术已经成为现代…

小程序SSL证书

小程序已成为我们日常生活中不可或缺的一部分。为了让用户的每一次点击、每一次交互都安全无忧&#xff0c;我们引入了专业级的SSL证书服务&#xff0c;为您的小程序构筑坚不可摧的信息安全壁垒。 SSL证书&#xff0c;如同一把无形的加密锁&#xff0c;它将小程序中的所有数据流…

.net 8 使用学习小记

单例模式 public class Singleton {private static Singleton instance null;private static readonly object syncRoot new object();private Singleton() { }public static Singleton Instance{get{if (instance null){lock (syncRoot){if (instance null){instance ne…

使用vue的element组件上传excel文件

在Vue.js项目中&#xff0c;如果你想要上传Excel文件&#xff0c;并且正在使用Element UI组件库&#xff0c;你可以利用 ​<el-upload>​组件来实现上传功能。以下是一个简单的例子&#xff0c;演示了如何使用Element UI上传Excel文件。 首先&#xff0c;在你的Vue组件模…

npm淘宝镜像registry.npmmirror.com设置无效的解决办法

一、问题描述 [17:08:51] npm ERR! code CERT_HAS_EXPIRED [17:08:51] npm ERR! errno CERT_HAS_EXPIRED [17:08:51] npm ERR! request to https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz failed, reason: certificate has expired由于原来的淘宝镜像 reg…

gateway网关指定路由响应超时时间

gateway网关指定路由响应超时时间 spring:cloud:gateway:httpclient:responseTimeout: 10000这个配置用于设置HttpClient的响应超时时间&#xff0c;单位是毫秒。具体来说&#xff0c;这个配置表示当Gateway向后端服务发出请求后&#xff0c;如果在10秒内没有收到后端服务的响…

拥抱DevOps,开启数字化转型的加速器

在数字化浪潮席卷全球的今天&#xff0c;企业面临着前所未有的挑战与机遇。为了保持竞争力并适应快速变化的市场需求&#xff0c;数字化转型已成为企业发展的必由之路。而在这一过程中&#xff0c;DevOps作为一种全新的开发与运维理念&#xff0c;正逐渐成为推动企业数字化转型…

Elasticsearch7.10.2安装在EC2上面

问题 由于skywalking需要一个ES数据库&#xff0c;所以&#xff0c;这里在AWS的EC2上面安装一个ES。 安装ES7.10 ES7.11以上的版本有商业限制。所以这里安装7.11以下的版本。 # 下载rpm安装包 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-os…

【FAQ】BSV区块链代码库常见问题解答

​​发表时间&#xff1a;2024年2月27日 BSV区块链协会上线了JavaScript和TypeScript SDK&#xff08;即“标准开发工具包”&#xff09;。TypeScript SDK旨在为开发者提供新版统一核心代码库&#xff0c;让开发者可以在BSV区块链上便捷地进行开发&#xff0c;尤其是开发那些可…

ETH Gas 之 Base Fee Priority Fee

前情回顾 ETH网络 之 Gas EIP-1559 EIP-1559 EIP-1559是以太坊改进提案&#xff08;Ethereum Improvement Proposal&#xff09;&#xff0c;旨在改进以太坊的交易费用机制。该提案引入了一种新的交易费用模型&#xff0c;以提高交易费用的可预测性和网络的效率。我们本文各…

按面积筛选填充二值图中的孔洞-python源码

目录 &#x1f64b;&#x1f64b;需求 &#x1f345;&#x1f345;解决方案 &#x1f64b;&#x1f64b;需求 前提条件是二值图中0是背景&#xff0c;255是前景。 二值化后的影像中有很多小孔洞&#xff0c;现在需要按孔洞面积进行筛选&#xff0c;填充面积小于阈值的孔洞&…