STM32的ADC的原理与使用

发布者:忙中取乐最新更新时间:2019-04-23 来源: eefocus关键字:STM32  ADC  原理与使用 手机看文章 扫描二维码
随时随地手机看文章

一、ADC的原理及定义


Analog-to-Digital Converter的缩写。中文译名:模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。其实就是一个取样、量化、编码的一个过程。


典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。比如电量、光照传感器等常用。


----------------------------------------------------------------------------------------------------------------------------------------------------------------


二、模拟信号


模拟信号是指用连续变化的物理量表示的信息,其信号的幅度,或频率,或相位随时间作连续变化,如目前广播的声音信号,或图像信号等。


----------------------------------------------------------------------------------------------------------------------------------------------------------------


三、数字信号


数字信号指幅度的取值是离散的,幅值表示被限制在有限个数值之内。 二进制码就是一种数字信号。二进制码受噪声的影响小,易于有数字电路进行处理,所以得到了广泛的应用。


----------------------------------------------------------------------------------------------------------------------------------------------------------------


四、单次转化与连续转换对比


 

----------------------------------------------------------------------------------------------------------------------------------------------------------------


五、扫描模式


其他请参考其中文参考手册


----------------------------------------------------------------------------------------------------------------------------------------------------------------


六、STM32F40x系列ADC外部通道和引脚对应关系 


----------------------------------------------------------------------------------------------------------------------------------------------------------------


七、实现过程


1、开启PA口时钟和ADC1时钟,设置PA1为模拟输入。


RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);

 

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

 对应的GPIO初始化  


 GPIO_Init();      

2、复位ADC1,同时设置ADC1分频因子。


 ADC_DeInit(ADC1);

3、初始化ADC_CCR寄存器


  ADC_CommonInit();

4、初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息。


  void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);

5、使能ADC。


 ADC_Cmd(ADC1, ENABLE);

6、配置规则通道参数:


  ADC_RegularChannelConfig();

7、开启软件转换:


ADC_SoftwareStartConvCmd(ADC1);

8、等待转换完成,读取ADC值。


 ADC_GetConversionValue(ADC1);

----------------------------------------------------------------------------------------------------------------------------------------------------------------

关键字:STM32  ADC  原理与使用 引用地址:STM32的ADC的原理与使用

上一篇:STM32家族介绍、区别及命名规则
下一篇:STM32的窗口看门狗(WWDG)

推荐阅读最新更新时间:2024-11-06 18:44

STM32中国峰会暨粉丝狂欢节2021重磅回归!
精选方案引领行业风向,首届Hackathon挑战赛见证科技偶像诞生! 2021年,STM32中国峰会重新回归!以 芯”生态、“助”安全、“连”未来”为主题,第五届STM32中国峰会暨粉丝狂欢节于4月28-29日在深圳如期举行。本次峰会,意法半导体携手 35个合作伙伴,展示200多个方案演示,带来54场技术专题会议及研讨会,并首次举办24小时Hackathon挑战赛。2020年,由于全球疫情,STM32中国峰会未能如期举办。2021年,我们再次相聚深圳!我们还增加了峰会现场网络直播,以方便全球观众观看峰会,并迎合不同观众的兴趣,提供演示活动视频点播。 本次峰会围绕4大应用方向展开:工业与安全、人工智能与传感技术、云接入与连
[单片机]
<font color='red'>STM32</font>中国峰会暨粉丝狂欢节2021重磅回归!
STM32实战四 定时器和按键
这一章编写定时器,包括定时器基类 Timer 和派生的通用定时器 GeneralTimer。基类对定时器参数进行封装,通用定时器封装一些定时应用,对应PLC的一些功能,包括: 1ms定时中断 100个32位数字时间继电器,最小1ms,最大0xffffffff,大约50天。 一个高精度回调函数,微秒级误差,最小定时间隔1ms。 按键抖动和干扰过滤,并产生按键上升沿和下降沿。 代码中有详细的说明,这里只解释几个知识点,其它文档介绍按键防抖和延时的时候一般都是死循环,官方文档也是这么用,如果有很多按键和延时就会一个一个等,效率很低。我这里用了另外一种高效的方法,就是模仿时间继电器,100个计数器同时工作,直到计数为0时执行对应操作,
[单片机]
DC-DC转换器和LDO驱动ADC电源输入
在《DC-DC转换器与ADC电源接口》中,讨论了使用DC-DC转换器(开关调节器)以及LDO来驱动ADC电源输入的情况。 使用DC-DC转换器对LDO的输入电压进行降压操作是驱动ADC电源输入的一个极为有效的方式。 回忆一下拓扑结构,如下图1所示。 输入电源电压为5.0 V,该电压降压至2.5 V,然后输入LDO;LDO输出为1.8 V,作为ADC电源电压。 图1 .采用DC-DC转换器和LDO驱动ADC电源输入 ADC基频输入信号音周围可能存在的杂散。 这些开关杂散的位置取决于DC-DC转换器的开关频率以及ADC的输入频率。 开关杂散会与输入信号相混合,而杂散会在fIN fSW和fIN + fSW处产生(
[电源管理]
DC-DC转换器和LDO驱动<font color='red'>ADC</font>电源输入
STM32中的WFI和WFE指令的意思
进入低功耗模式的两个指令,这是ARM里CMSIS内核中的指令。详情请参考链接里大神们的讨论链接http://www.wowotech.net/armv8a_arch/wfe_wfi.html cmsis_arm.cc里有如下说明 /** brief Wait For Interrupt details Wait For Interrupt is a hint instruction that suspends execution until one of a number of events occurs. */ #define __WFI __wfi /** brief Wait For E
[单片机]
STM32学习之GPIO
1,首先应该使能GPIO的时钟,GPIO全都挂载在总线AHB1上,库函数对应为 RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState); RCC_AHB1Periph为挂载在AHB1的所需要的外设,FunctionalState NewState可为ENABLE或DISABLE。 因为与时钟相关,所以在RCC文件里 2,配置GPIO结构体的成员,GPIO所需配置有 GPIO_Pin; GPIO具体的引脚 GPIO_Mode; GPIO端口模式寄存器,可配置为输入输出复用模拟 GPIO_Speed; GPIO
[单片机]
16位ADC提供19位分辨率的电路设计
许多数据采集系统都要求高精度和快速采集数据,以便允许该系统能够检测小信号并且能将更多的传感器通道*在同一系统。传感器通道越多,系统的外形就能够越小,成本和功耗也越低。远程光通信和医用设备(例如,CT扫描仪)即得益于快速和高精度的数据采集系统。在光功率系统(例如,激光泵)中,需要不断监视其功率水平。在这种数据采集系统中,对于需要≥90dB动态范围的输入激光功率,其激光控制环路响应时间要求具有1MSPS的采样率。在CT扫描仪中,数据采集系统必须具有16 b到22 b的分辨率,以便处理通过各种人体组织的宽动态范围的X射线信号。该系统需要大量的光检测器(较多的数据采集通道)和高精度数据采集以提高图像分辨率。 以上两个例子说明了系
[模拟电子]
STM32之关于USART以及波特率的一些思考
一、UART与USART?   UART:通用异步收发器    USART:通用同步和异步收发器   同步:发送端发送数据后,接收端回应后才发下一个数据包,是为阻塞模式   异步:发送端发送收据后,不需要等待接收端回应,接着发送下一个数据包,是为非阻塞模式   半双工:允许数据在两个方向上传输,但是某一时间,只允许数据在一个方向上传输   全双工:允许数据同时在两个方向上传输   SPI为同步全双工通信、IIC为同步半双工通信,UART为异步全双工通信、USART为同步或异步通信   UART数据格式:          数据帧格式:开始位、数据位、奇偶校验位、停止位       起始位:开始发送一个字节数据,数据线为逻辑0状态
[单片机]
<font color='red'>STM32</font>之关于USART以及波特率的一些思考
STM32 assert_param
在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。 这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。 它确实在程序的运行上牺牲了效率(但只
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved