adc

STM32 ADC做触摸按键

陌路散爱 提交于 2020-03-06 18:54:17
一、 12位逐次逼近型ADC转换原理 1、 ADC原理 ADC中输入的模拟信号是连续的,而输出的数字信号是离散的,所以转换时必须对输入的模拟信号进行采样;然后再把采样值转换成为输出的数字信号;这个过程需要经过采样、保持、量化、编码。 前置滤波器 由于采样信号输出的是窄脉冲信号需要抗混叠滤波器来避免高频信号影响基带信号。 采样 是将连续的模拟信号转换成时间上离散的采样信号;需要注意的是;根据奈奎斯特采样定理,采样频率必须大于或者等于2陪的采样信号的频率,才可以完整无失真的恢复被采样信号。 AD转换是通过量化这一步骤完成的, 量化器 是将参考信号Vref分割成2N个子域,N是数字编码输出的位数。在2^N个子域中分别对应着不同的模拟输入量,量化则要找出不同的模拟量对应的子域,找到之后才可以允许编码器编码输出,这样输入信号某一段就会对应到同一个输出码字,是因为有了最小步长也就是精度,产生了一个码字到另一个码字的转换。因此在转换时间内,被采样的模拟输入信号被转换成等价的数子码输出。 分辨率 是ADC可以识别的最小信号变化的能力,有数字和模拟之分。数字分辨是指输出码字的位数,位数越多,分辨率越高。模拟分辨率是指能识别的最小模拟增量。用满刻度表示也就是1bit表示的模拟量,比如:Verf/2^12,取Verf=3.3V,则1bit分辨就是0.8mV。 2、 逐次逼近型ADC 逐次比较型A

学习日记——ADC工作原理(2020.2.9)

我的梦境 提交于 2020-02-15 01:18:28
ADC介绍 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阈值。ADC的输入时钟不得超过14MHZ,它是由PCLK2经分频产生。 ADC概念 ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器。 典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。然而,有一些模拟数字转换器并非纯的电子设备,例如旋转编码器,也可以被视为模拟数字转换器。 ADC 背景发展 随着CMOS制作工艺的迅速发展,越来越多的信号被移到数字领域来处理,从而达到降低成本,降低功耗,提高速度的目的。 这就使我们迫切需要一种低功耗、低电压且能够用标准深亚微米技术实现的ADC。 ADC主要特征 12位分辨率 转换结束、注入转换结束和发生模拟看门狗事件时产生中断 单次和连续转换模式 从通道0到通道n的自动扫描模式 间断模式执行 自校准 带内嵌数据一致性的数据对齐 采样间隔可以按通道分别编程

外置ADC

允我心安 提交于 2020-02-12 16:56:00
美信关于 如何简化微控制器与温度传感器的接口设计?:    一般外置ADC与单片机UC之间通过SPI或SMBUS接口通信 当IO口比较紧张时可以选择脉冲或频率方波正比与测量值输出的外置ADC,此时也可以实现光耦隔离 对于测温目的是达到某一临界值时触发联动输出,此时可以用比较器(温度比较器);或者开关输出型ADC(温度二极管);也有高于二级预警低于一级预警才输出的开关量输出ADC,单片机平时无需实时查询,该类ADC可异步通知。 来源: https://www.cnblogs.com/jieruishu/p/12299408.html

STM32f1xx单片机ADC

旧时模样 提交于 2020-02-08 07:31:38
ADC介绍: ADC,Analog-to-DigitalConverter的缩写,指模/数转换器或者模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。 STM32F103ZET 包含有 3 个 ADC。一共支持23个通道,包括21个外部和2个内部信号源;但是每个ADC控制器最多只可以有18个通道,包括16个外部和2个内部信号源。 最大的转换速率为 1Mhz,当ADC 的时钟超过 14M时,结果准确度会下降。ADC 的转换分为 规则通道组和注入通道组。规则通道是正常运行的程序,而注入通道相当于中断,注入通道是可以打断程序的执行,也可以打断规则通道的转换 ADC转换方式: 单次转换、连续转换、扫描转换模式。 单次转换模式: 单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。 连续转换模式 在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。 扫描模式 此模式用来扫描一组模拟通道。扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道

STM32ADC转换速度(以F103为例)

懵懂的女人 提交于 2020-01-29 04:28:45
文章目录 系统时间查看 ADC转换时间 采集精度 提高稳定性 示例代码 系统时间查看 ADC挂在APB2上,对应的时钟为PCLK2,由系统时钟SYSCLK 分频得到,一般不做分频,也就是说ADC模块的时钟等于系统时钟,F103也就是72MHz,如下代码也可获取并查看: RCC_ClocksTypeDef get_rcc_clock ; RCC_GetClocksFreq ( & get_rcc_clock ) ; ADC转换时间 手册中也有提到ADC的频率不能超过14MHz,也就是说F103需要至少6分频(最低只有这个分频系数h合适,再有就是4分频已经超过14MHz)。 转化时间计算公式为: Tconv = Sampling time + 12.5 cycles 如果ADC配置如下: RCC_ADCCLKConfig ( RCC_PCLK2_Div6 ) ; ADC_RegularChannelConfig ( ADC1 , ADC_Channel_1 , 1 , ADC_SampleTime_239Cycles5 ) ; ADC的工作频率为: 72MHz/6 = 12MHz 采样周期数为: 239.5+12.5=252 总时间为: 1000000us/12000000Hz*252=21us 也就是ADC转换一次需要耗时21us。 采集精度 VREF参考电压值3.3V情况下

STM32-CUBE-ADC-DMA-STM32F13RCT6- PC1管脚

若如初见. 提交于 2020-01-28 12:01:58
1、配置cube RCC SYS 2、管脚定义 3、配置 4、DMA配置 5、NIVC配置 6、配置时钟,生成工程 7、 开始 :HAL_ADC_Start(&hadc1); 8、读取20次的值放入数值 HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_ConvertedValue[0], 20); 9、 求电压值 HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_ConvertedValue[0], 20); for(i = 0; i < 20; ++i) { ADC_Value += ADC_ConvertedValue[i]; } ADC_Value = ADC_Value / 20; ADC_Volt= ((float)ADC_Value/4096)*3.3; 来源: CSDN 作者: cw0617 链接: https://blog.csdn.net/cw0617/article/details/100160169

STM32CubeIDE ADC 单次转换模式

时光怂恿深爱的人放手 提交于 2020-01-21 19:29:34
目录 一、先贴三张官方文档的截图 二、整理一下流程 三、CubeMX的配置 四、代码生成及分布 五、需要用户自己添加的代码 附:官方例程 一、先贴三张官方文档的截图 翻译一下大概的意思: 1)顶层参数配置 a. ADC的时钟不能高于14MHz b. 可用HAL_ADC_MspInit()使能时钟 c. 时钟源选择、时钟分频配置。 2)基础配置 a. 使用HAL_ADC_Init() 来初始化一些参数 ( 使用了大量的SET_BIT()函数 ) b. 使用HAL_ADC_ConfigChannel() 来初始化ADC通道参数 3)如何执行来获取ADC值 a. HAL_ADC_Start() 开始转换 b. HAL_ADC_PollForConversion() 判断转换是否完成 c. HAL_ADC_GetValue() 获取结果 二、整理一下流程 1.配置时钟、ADC参数 2. 时钟使能 3. 端口初始化 4. ADC通道参数、执行转换 三、CubeMX的配置 新版的IDE在配置时钟时,使用时钟树,而不再在ADC配置下。 72MHz 6分频以后为12MHz,低于14MHz,使用时钟树更加直观! 四、代码生成及分布 1、ADC时钟配置 在 SystemClock_Config() 中 2、ADC配置、端口配置、时钟使能 见adc.h 五、需要用户自己添加的代码 1、"adc.c"

ADC

偶尔善良 提交于 2020-01-18 01:19:54
模拟–数字转换器 共3个独立ADC(ADC1、ADC2、ADC3) 12位分辨率 每个独立ADC有18个通道,16个是外部通道 ADC的通道并没有固定的引脚,可以根据自己随意选用。 转换结束、注入转换结束和发生模拟看门狗事件时产生中断 ADCCLK最大是14MHz。 转换时间=采样时间+12.5个时钟周期。采样时间通过寄存器来配置 有俩种模式: 注入模式和规则模式(没搞懂) (也不需要搞懂,因为开发板只放了一个ADC设备) 函数: typedef struct { uint32_t ADC_Mode; //模式,一般使用ADC_Mode_Independent表示使用一个ADC FunctionalState ADC_ScanConvMode; //扫描模式 FunctionalState ADC_ContinuousConvMode; //连续转换模式 uint32_t ADC_ExternalTrigConv; //外部触发选择模式 uint32_t ADC_DataAlign; //对齐方式 uint8_t ADC_NbrOfChannel; //转换的通道 }ADC_InitTypeDef; void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);//初始化ADC void ADC_Cmd(ADC

【STM32H7教程】第46章 STM32H7的ADC应用之DMA方式多通道采样

那年仲夏 提交于 2020-01-16 15:42:09
完整教程下载地址: http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第46章 STM32H7的ADC应用之DMA方式多通道采样 本章教程为大家讲解ADC+DMA方式的多通道数据采集,实际项目中有一定的使用价值,使用一路ADC就可以采集多个通道的数据。 46.1 初学者重要提示 46.2 ADC稳压基准硬件设计 46.3 ADC驱动设计 46.4 ADC板级支持包(bsp_adc.c) 46.5 ADC驱动移植和使用 46.6 实验例程设计框架 46.7 实验例程说明(MDK) 46.8 实验例程说明(IAR) 46.9 总结 46.1 初学者重要提示 学习本章节前,务必优先学习第44章,需要对ADC的基础知识和HAL库的几个常用API有个认识。 开发板右上角有个跳线帽,可以让ADC的稳压基准接3.3V或者2.5V,本章例子是接到3.3V。 STM32H7的ADC支持偏移校准和线性度校准。如果使用线性度校准的话,特别要注意此贴的问题: http://www.armbbs.cn/forum.php?mod=viewthread&tid=91436 。 ADC的专业术语诠释文档,推荐大家看看: http://www.armbbs.cn/forum.php?mod=viewthread&tid=89414 。

STM32F4XX——ADC采集时AD值大于4095的问题解决方法

风格不统一 提交于 2020-01-14 03:31:47
参考: https://blog.csdn.net/u014470361/article/details/81987313 原因:AD C_InitStructure 结构体有一项ADC_ExternalTrigConv的值随意,不为0。 方法1: 进行adc结构体的初始化操作,在配置之前恢复默认值。即调用ADC_StructInit(&ADC_InitStructure),调用ADC_StructInit(&ADC_InitStructure)语句,ADC_ExternalTrigConv会恢复默认值0 代码如下: ADC_StructInit(&ADC_InitStructure); ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //12位模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; //非扫描模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //关闭连续转换 ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //禁止触发检测,使用软件触发 ADC_InitStructure.ADC_DataAlign