STM32:ADC

目录

一、简介

二、结构

三、工作模式

四、使用流程


 

一、简介

        模数转换器,ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的电子设备。在STM32中,ADC用于处理来自传感器、麦克风等的模拟信号。STM32的ADC具有高分辨率、高速转换以及丰富的功能和配置选项,能够满足多种应用需求。

 

二、结构

        ADC可以分为逐次逼近型、双积分型和电压-频率变换型,STM32的12位ADC是一种逐次逼近型ADC,它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以选择单次或连续、扫描或间断模式执行,选择规则组或者注入组,一般选择规则组。转换结果范围:0~4095。

三、工作模式

1.单次/连续转换模式

        单次转换模式下,ADC只执行一次转换。连续转换模式下,当前ADC转换结束后立即启动下一次转换。

2.扫描/间断转换模式

        扫描转换模式下,ADC扫描被选中的所有通道,每个组的每个通道执行单次转换。如果设置了连续转换模式,当组里的最后一个被选中的通道被转换后,又从第一个通道开始转换。

        间断转换模式下,每次转换一定数量的通道后就停下。

3.ADC中断

        规则组和注入组转换结束是能产生中断,当模拟看门口状态位被设置为1时,也能产生中断。它们都有独立的中断使能位。

4.DMA请求

        因为规则组通道转换的值存储在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用DMA及时取出数据。

5.模拟看门狗

        略。

6.温度传感器

        温度传感器用来测量器件周围的温度,适合检测温度的变化,而不是测量绝对的温度。如果需要测量精确的温度,应该使用一个外置的温度传感器。

7.校准

        ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。校准期间,在每个电容器上都会计算出一个误差修正码,这个码用于消除在随后的转换中每个电容器上产生的误差。

8.数据对齐

 右对齐模式(常用):

左对齐模式:

 

四、使用流程

        STM32的ADC功能较多,可以DMA、中断等方式进行数据的传输,如果要使用DMA或者中断的功能,需要额外配置DMA和中断。这里介绍最简单的使用方式,即接收一个模拟信号,占用一个规则组通道,然后转换为数字信号。

void AD_Init(void)
{
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_ADC2 ,ENABLE );
	RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA ,ENABLE );
	
	RCC_ADCCLKConfig (RCC_PCLK2_Div6);                 //选择6分频,ADCCLK=72MHz/6=12MHz
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;            //配置PA2为模拟输入,PA2对应通道2
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init (GPIOA,&GPIO_InitStructure);
	
	ADC_RegularChannelConfig (ADC2,ADC_Channel_2 ,1,ADC_SampleTime_55Cycles5 );//规则组序列1的位置,配置为通道2

	ADC_InitTypeDef ADC_InitStructure;
	ADC_InitStructure.ADC_Mode=ADC_Mode_Independent ;                  //独立模式,即单独使用ADC2
	ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right ;              //数据对齐,右对齐
	ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None ; //外部触发中断,不使用
	ADC_InitStructure.ADC_ContinuousConvMode=ENABLE ;                  //连续转换模式
	ADC_InitStructure.ADC_ScanConvMode=DISABLE ;                       //间断转换模式
	ADC_InitStructure.ADC_NbrOfChannel=1;
	ADC_Init (ADC2,&ADC_InitStructure);
	
	ADC_Cmd (ADC2,ENABLE );                                            //使能ADC1
	
	ADC_ResetCalibration (ADC2);                                       //复位校准          
	while(ADC_GetResetCalibrationStatus (ADC2)==SET);
	ADC_StartCalibration (ADC2);                                       //开始校准
	while(ADC_GetCalibrationStatus (ADC2)==SET);
	
	ADC_SoftwareStartConvCmd (ADC2,ENABLE );                           //开始转换
}

uint16_t Get_AD_Value(void)                                            //获取AD转换值
{
	return ADC_GetConversionValue (ADC2);
}

通过上述代码可以将一个外部模拟信号输入到PA2引脚,使用Get_AD_Value()函数获取AD值(0~4095)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

candence : 如何利用EXCEL 绘制复杂、多管脚元件

如何利用EXCEL 绘制复杂、多管脚元件 前面的步骤直接略过 我们以STM32F407VEXX 系列 100pin 芯片为例讲解: 1、新建好一个空元件 2、使用阵列,放置管脚 点击 “ ok ” 3、选中所有管脚 右键 “edit properites” 出现如下页面 4、点击 左上角&…

vue内置指令和自定义指令

常见的指令: v-bind : 单向绑定解析表达式, 可简写为 :xxx v-model : 双向数据绑定 v-for : 遍历数组/对象/字符串 v-on : 绑定事件监听, 可简…

【ict基础软件赛道】真题-50%openGauss

题目取自赛前测试链接 OpenGauss安装前使用哪个工具检查环境是否符合安装哪个功能不是gs_guc工具提供的opengauss数据库逻辑复制的特点描述正确的是opengauss的全密态数据库等值查询能力描述正确的是哪个不属于ssh客户端工具opengauss三权分立说法正确的是opengauss wdr snapsh…

乐理的学习(音程)

二度,三度,六度,七度的大n度都是直接的音名到音名,如#A到#G的,这样为大n度 而这个基础上向内收,收半音为小n度,在小n度再收,为减n度 在大n度的基础上再向外扩半音,为增…

WinDefender Weaker

PPL Windows Vista / Server 2008引入 了受保护进程的概念,其目的不是保护您的数据或凭据。其最初目标是保护媒体内容并符合DRM (数字版权管理)要求。Microsoft开发了此机制,以便您的媒体播放器可以读取例如蓝光,同时…

centos7 升级openssl 与升级openssh 安装卸载 telnet-server

前言: 服务器被安全扫描,扫出了漏洞需要修复,根据提示将openssh升级为9.8p1的版本,同时需要升级openssl,但是升级openssh可能会导致ssh连接失败,从而无法继续操作,特别是远程机房尤为危险&#…

正则表达式完全指南,总结全面通俗易懂

目录 元字符 连接符 限定符 定位符 修饰符(标记) 运算符优先级 普通字符集及其替换 零宽断言 正向先行断言 负向先行断言 正向后发断言 负向后发断言 正则表达式在线测试: 正则在线测试工具 元字符 字符描述\d 匹配一个数字字符。等价于 …

知识库管理系统:企业数字化转型的加速器

在数字化转型的大潮中,知识库管理系统(KBMS)已成为企业提升效率和创新能力的关键工具。本文将探讨知识库管理系统的定义、企业建立知识库的必要性,以及如何快速搭建企业知识库。 知识库管理系统是什么? 知识库管理系统…

【珠海科技学院主办,暨南大学协办 | IEEE出版 | EI检索稳定 】2024年健康大数据与智能医疗国际会议(ICHIH 2024)

#IEEE出版|EI稳定检索#主讲嘉宾阵容强大!多位外籍专家出席报告 2024健康大数据与智能医疗国际会议(ICHIH 2024)2024 International Conference on Health Big Data and Intelligent Healthcare 会议简介 2024健康大数据与智能医疗国际会议…

【软件测试】一个简单的自动化Java程序编写

文章目录 自动化自动化概念回归测试常见面试题 自动化测试金字塔 Web 自动化测试驱动 Selenium一个简单的自动化示例安装 selenium 库使⽤selenium编写代码 自动化 自动化概念 自动的代替人的行为完成操作。自动化在生活中处处可见 生活中的自动化可以减少人力的消耗&#x…

️️一篇快速上手 AJAX 异步前后端交互

AJAX 1. AJAX1.1 AJAX 简介1.2 AJAX 优缺点1.3 AJAX 前后端准备1.4 AJAX 请求基本操作1.5 AJAX 发送 POST 请求1.6 设置请求头1.7 响应 JSON 数据1.8 AJAX 请求超时与网络异常处理1.9 取消请求1.10 Fetch 发送 Ajax 请求 2. jQuery-Ajax2.1 jQuery 发送 Ajax 请求(G…

【星海随笔】ZooKeeper-Mesos

开源的由 Twitter 与 伯克利分校的 Mesos 项目组共同研发设计。 两极调度架构 支持高可用集群,通过ZooKeeper进行选举。 Mesos master 管理着所有的 Mesos slave 守护进程 每个slave运行具体的任务或者服务。 Franework 包括的调度器和执行机两部分 执行器运行在Me…

计算机网络中的域名系统(DNS)及其优化技术

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机网络中的域名系统(DNS)及其优化技术 计算机网络中的域名系统(DNS)及其优化…

Vulnhub靶场案例渗透[10]- Momentum2

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建 1. 靶场描述 - Difficulty : medium - Keywords : curl, bash, code reviewThis wor…

如何在 Ubuntu 上安装 Emby 媒体服务器

Emby 是一个开源的媒体服务器解决方案,它能让你整理、流媒体播放和分享你的个人媒体收藏,包括电影、音乐、电视节目和照片。Emby 帮你集中多媒体内容,让你无论在家还是在外都能轻松访问。它还支持转码,让你能够播放各种格式的内容…

java作业项目以及azkaban的操作

参考内容: azkaban简介及azkaban部署、原理和使用介绍 1.在azkaban创建project 2.上传flow文件和project文件的压缩包 flow文件内容: nodes:- name: Testtype: commandconfig:command: java -jar /data/job/mtm-job-0.0.1-SNAPSHOT.jar --spring.profiles.activ…

2024-11-15 Element-ui的tab切换中table自适应宽度无法立即100%的问题

前言 今天在写一个统计图表的时候,将所有的table表格和echarts图表放到一个页面中,这样会在纵向上出现滚动条,上下滑动对用户体验不好,于是改成tab切换的形式 遇到的问题 正如标题所述,elementui在tab中使用table时&…

HarmonyOS 开发环境搭建

HarmonyOS(鸿蒙操作系统)作为一种面向全场景多设备的智能操作系统,正逐渐在市场上崭露头角。为了进入HarmonyOS生态,开发者需要搭建一个高效的开发环境。本文将详细介绍如何搭建HarmonyOS开发环境,特别是如何安装和配置…

Vue全栈开发旅游网项目(10)-用户管理后端接口开发

1.异步用户登录\登出接口开发 1.设计公共响应数据类型 文件地址:utils/response404.py from django.http import JsonResponseclass BadRequestJsonResponse(JsonResponse):status_code 400def __init__(self, err_list, *args, **kwargs):data {"error_c…

快速了解Memcached

快速了解Memcached 官方定义 Memcached 是一个高性能的分布式内存对象缓存系统,用于减轻数据库负载,通过在内存中缓存数据和对象来提高动态 web 应用程序的响应速度。 主要特点 简单高效:其设计理念就是简单,易于部署和使用。它是…