STM32之模数转换器ADC

目录

1、ADC介绍

1.什么是ADC?

ADC的全称是Analog-to-Digital Converter,指模拟/数字转换器

 2.ADC的性能指标

3.ADC特性

12位分辨率

4.ADC通道

5.ADC转换顺序

 6.ADC触发方式

 7.ADC转化时间

 8.ADC转化模式

 9.模拟看门狗

实验:使用ADC读取烟雾传感器的值 

CubeMX配置  

​编辑 代码实现

 效果展示

1、ADC介绍

1.什么是ADC?

ADC的全称是Analog-to-Digital Converter,指模拟/数字转换器

D数字信号,A模拟信号

  • 12ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部 信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
  • 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
  • ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

 2.ADC的性能指标

  • 量程:能测量的电压范围
  • 分辨率:ADC能分辨的最小模拟量,通常以输出二进制位数表示,比如:8、10、12、16位等;位数越多,分辨率越高,一般来说,分辨率越高,转化时间越长(STM32F103是12位)
  • 转化时间:从转换开始到获得稳定的数字量输出所需的时间称为转换时间

3.ADC特性

  • 12位分辨率

  • 12位分辨率下转化速度可高达1MHZ
  • 供电电压:VSSA:0V,VDDA:2.4V~3.6V
  • ADC输入范围:VREF-<=VIN<=VREF+
  • 采样时间可配置,采样时间越长,转换结果相对越准确,但是转换速度就越慢】
  • ADC的结果可以左对齐或者右对齐的方式存储在16位数据寄存器中(默认右对齐)

4.ADC通道

总共2个ADC(ADC1,ADC2),每个ADC有18个转换通道:16个外部通道、2个内部通道(温度传感器、内部参考电压)。

外部的16个通道在转换时又分为规则通道和注入通道 ,其中规则通道最多有16路,注入通道最多有4路。

规则组:就像正常排队的人

注入组:有特权的人,可以插队的人

5.ADC转换顺序

每个ADC只有一个数据寄存器,16个通道一起共用这个寄存器,所以需要指定规则转换通道的转换顺序。

规则通道中的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3,它们都是32位寄存器,SQR寄存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位SQx中写入相应的通道,这个通道就是第x个转换

和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个JSQR寄存器来控制,控制关系如下:

注入序列的转换顺序是从JSQx[4:0] (x=4-JL[1:0])开始。只有当JL=4的时候,注入通道的转换顺序才会按照JSQ1、JSQ2、JSQ3、JSQ4的顺序来执行。

 6.ADC触发方式

  • 通过向寄存器ADC-CR2的ADON位写1来开始转换,写0停止转换。
  • 也可以通过外部事件(如定时器)进行转换。

 7.ADC转化时间

ADC是挂载在APB2总线(PCLK2)上的,经过分屏器得到ADC时钟(ADCCLK),最高14MHz

转换时间 = 采样时间 +12.5 个周期

12.5个周期是固定的,一般我们设置PCLK2=72,经过ADC预分频器能分频到最大的时钟只能是12M,采样周期设置为1.5个周期,算出最短的转换时间为1.17us。 

 8.ADC转化模式

扫描模式

  • 关闭扫描模式:只转换ADC_SQRx或ADC_ISQR选中的第一个通道
  • 打开扫描模式:扫描所有被DC_SQRx或ADC_ISQR选中的所有通道

单次转换/连续转换

  • 单次转换:只转换一次
  • 连续转换:转换一次之后,立马进行下一次转换

 9.模拟看门狗

  • 如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。阀值位 ADC_HTRADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE以允许产生相应中断。(简而言之就是如果开启模拟看门狗,那么被ADC转换的模拟电压低于低阀值或高于高阀值,系统就会产生复位)
  • 阀值独立于由ADC_CR2寄存器上的ALIGN位选择的数据对齐模式。比较是在对齐之前完成的
  • 通过配置ADC_CR1寄存器,模拟看门狗可以作用于1个或多个通道
模拟看门狗警戒区

 模拟看门狗通道的选择

实验:使用ADC读取烟雾传感器的值 

实验内容:通过ADC读取烟雾传感器的值,再通过串口发送给电脑然后在串口助手上显示

CubeMX配置  

 ADC的配置(其实大多用默认的就可以了)

 代码实现

#include <stdio.h>
//因为用到串口发送我们先重写printf函数
int fputc(int ch, FILE *f)
{unsigned char temp[1]={ch};HAL_UART_Transmit(&huart1,temp,1,0xffff);return ch;
}//mian部分
uint32_t count = 0;//记录烟雾传感器的值while (1){//每隔1秒转换一次HAL_Delay(1000);//先启动ADC转换HAL_ADC_Start(&hadc1);//等待ADC转换HAL_ADC_PollForConversion(&hadc1,100);//获取信号count = HAL_ADC_GetValue(&hadc1);//发送printf("count = %d\r\n",count);//这里发送的是检测到的模拟量个数printf("count = %f\r\n",count*(3.3/4060));//电压值}

 注意重构了printf要记得勾选这个

 效果展示

这里可以通过给PA0口接3.3V的电压或者接GND来测试我们得到的数据准不准确 

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

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

相关文章

SpringSecurity+JWT实现权限控制以及安全认证

一.简介 Spring Security 是 Spring家族中的一个安全管理框架。相比与另外一个安全框架Shiro&#xff0c;它提供了更丰富的功能&#xff0c;社区资源也比Shiro丰富。 认证&#xff1a;验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户​ 授权&…

Cesium 添加一个立方体实体。

Cesium 添加一个立方体实体 初始化地球 viewer new Cesium.Viewer(content, {terrainProvider: Cesium.createWorldTerrain({requestVertexNormals: true,requestWaterMask: true})})添加一个立方体 const redBox viewer.entities.add({name: 一个红色的正方形,position: …

【08】Python运算符

文章目录 1.算术运算符2.赋值运算符3.条件运算符4.逻辑运算符5.比较运算符6.运算符的优先级本期博客中,我们将学习python中常用的运算符的用法。              1.算术运算符 1.加法运算符(+): a = 10 b = 5 c = a + b print(c

unity Toggle,初始时默认不选中,若选中则不可取消选中。不写码实现其效果

实现效果&#xff1a; 初始默认时&#xff1a; 选中时&#xff1a; 零代码实现&#xff1a; 步骤1 步骤2 步骤3

【专题】支持向量机(Support Vector Machines,SVM)

​​​​​ ​​ 支持向量机&#xff08;Support Vector Machines&#xff0c;SVM&#xff09;是一种强大的监督学习模型&#xff0c;常用于分类、回归和异常值检测任务。它的核心思想是通过构建一个最大间隔超平面来有效地分隔不同类别的数据点。 在SVM中&#xff0c;数据点…

【C++】类型转换 ⑤ ( 常量和非常量之间的类型转换 - 常量类型转换 const_cast | const 左数右指原则 | 代码示例 )

文章目录 一、const 关键字简介1、const 修饰普通数据2、const 修饰指针 ( 左数右指原则 | 指针常量 | 常量指针 ) 二、常量和非常量 之间的类型转换 - 常量类型转换 const_cast1、常量类型转换 const_cast2、常量不能直接修改3、修改常量值的方法4、特别注意 - 确保指针指向的…

前后端分离开发出现的跨域问题

先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如&#xff1a; 当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt…

消息队列进阶-1.消息队列的应用场景与选型

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

“2024上海智博会、2024北京智博会”双展联动,3月上海,6月北京

“2024上海智博会、2024北京智博会”双展联动&#xff0c;将分别于3月和6月在上海和北京举办。这两个展会旨在充分展示智慧城市、人工智能、物联网、大数据、软件等新兴行业的最新产品和技术。 作为中国最具影响力和创新力的智能科技展会&#xff0c;上海智博会和北京智博会吸引…

常用的正则表达式

文章目录 一、前言二、语法2.1、简单字符2.2、转义字符2.3、字符集和2.4、量词2.5、字符边界2.6、选择表达式2.7、分组与引用2.8、预搜索2.9、修饰符 三、常用3.1、校验数字的表达式3.2、校验字符的表达式3.3、特殊需求表达式 四、最后 一、前言 正则表达式的语法一般如下js&a…

房屋租赁出售经纪人入驻小程序平台

一款专为房屋中介开发的小程序平台&#xff0c;支持独立部署&#xff0c;源码交付&#xff0c;数据安全无忧。 核心功能&#xff1a;房屋出租、经纪人独立后台、分佣后台、楼盘展示、房型展示、在线咨询、地址位置配套设施展示。 程序已被很多房屋交易中介体验使用过&#x…

XXDD——UUII(交互设计)

今天我们再次回到Adobe全家桶的怀抱&#xff0c;今天介绍的这一位成员&#xff0c;是最直接帮助大家进行平面交互式设计的软件。他就是XD~ Adobe XD全称Adobe Experience Design CC&#xff0c; 官方版跨平台支持Win10 与 macOS&#xff0c;并且所有用户均可免费下载使用。Adob…