单片机——ADC采样

5.dsp-ADC采样 F28335 片内集成的 ADC 转换模块的核心资源是一个 12 位的模数转换器,这 个精度已经能够满足大多数测量需要,如果需要用到更高精度的 AD,比如 16 位 或者 24 位的,就需要外扩高精度的 AD 芯片。F28335 ADC 转换模块具有 16 个通道,由 2 个独立的 8 通道模块组成,这两 个独立的 8 通道模块也可以级联成一个 16 通道模块。尽管 AD 转换器中有多个输 入通道和两个序列发生器,但只有一个转换器。由此需要排序器。 阅读详情
AI摘要

本文详细介绍了STM32F103系列ADC的工作原理,包括如何理解采集数值、采样步骤,以及ADC的通道选择、转换模式、校准和代码实例。

1、什么是ADC采样?

        ADC是指将模拟信号转换成数字信号的过程。通俗理解ADC采样就是采集电路中的电压,通过数值的方式表现出来。以STM32F103系列为例,它可以反应0~4095,换句话说,它采集的电压数值上表现为0~4095,也就是12位ADC(2^12)。

2、如何理解采集的数值?

        以STM32F103芯片为例,供电电压是3.3V,它能检测的电压也是0~3.3V。这就好理解了,0~3.3V电压对应的是0~4095数值。通俗理解为把3.3V分成了4096份,采集上来多少份占3.3V的比例。

        采集电压=(采集数值/4095)*3.3V

3、ADC采样具体知识和步骤

3.1、步骤

(1)使能用于ADC检测的引脚对应的GPIO口,使能ADC2通道时钟(ADC1也可以,这款芯片有俩个ADC外设)

(2)时钟分频

(3)初始化GPIO引脚并配置成输入模式

(4)配置ADC的工作模式

(5)使能指定的ADC

(6)开启复位校准

注:ADC的输入时钟不得超过14MHZ,它是由PCLK2经分频产生。

3.2、 ADC知识讲解

3.2.1、通道选择

         每个 ADC有 18 个通道,其中有16个外部通道(不同引脚数的STM32外部通道数可能有所差异),其余两个是内部通道。

        ADC通道和引脚对应关系如下(STM32F103C8T6为例):

  3.2.2、单次转换和连续转换

  3.2.3、独立模式和多重模式

        独立模式即所有ADC转换器(ADC1、ADC2和ADC3)均独立地工作,互不影响。

        多重模式即多个ADC(如果存在)根据通用寄存器中的设置,按照指定的方式协同工作。

3.2.4、数据对齐

        比如说AD转换后数字量保存在ADCH,ADCL两个寄存器中
        左对齐就是AD值的最高位就是ADCH的最高位了,ADCL的低位就会有的用不到,读出来为0
        右对齐就是AD值的最低位是ADCL的最低位,而ADCH的高位就会有的用不到,读出来也为0
        左对齐:11111111 11110000
        MSB LSB
        右对齐:00001111 11111111
        MSB LSB

3.2.5、注入组和规则组

注:

(1)当完成所有注入通道转换,下个触发启动第1个注入通道的转换。在上述例子中,第四个
触发重新转换第1个注入通道1。
(2)不能同时使用自动注入和间断模式。
(3)必须避免同时为规则和注入组设置间断模式。间断模式只能作用于一组转换。

3.2.6、 ADC校准

3.3、代码示例

3.3.1、初始化

void Adc_Init(void)
{ 
	u8 i;
	ADC_InitTypeDef ADC_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC2, ENABLE ); //使能 ADC2 通道时钟

	RCC_ADCCLKConfig(RCC_PCLK2_Div4); 									//设置 ADC 分频因子 6

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;						//模拟输入
	GPIO_Init(GPIOA, &GPIO_InitStructure);								//初始化 GPIOA
	
	ADC_DeInit(ADC2);

	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;					//ADC 独立模式
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;						//连续多通道模式
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;					//连续转换模式关
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//转换由软件触发
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;				//ADC 数据右对齐
	ADC_InitStructure.ADC_NbrOfChannel = 1;								//顺序进行规则转换的ADC通道的数目
	ADC_Init(ADC2, &ADC_InitStructure);									//根据指定的参数初始化外设 ADCx
	
	ADC_Cmd(ADC2, ENABLE);												//使能指定的 ADC2
	for(i=0;i<100;i++);

	ADC_ResetCalibration(ADC2); 											//开启复位校准
	while(ADC_GetResetCalibrationStatus(ADC2));							//等待复位校准结束
	ADC_StartCalibration(ADC2);											//开启 AD 校准
	while(ADC_GetCalibrationStatus(ADC2));								//等待校准结束
}

3.3.2、获取ADC数值

u16 Get_Adc1(void)
{
	ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5); //通道1
	ADC_SoftwareStartConvCmd(ADC2, ENABLE);							//使能指定的 ADC2 的软件转换功能
	while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC ));					//等待转换结束
	return ADC_GetConversionValue(ADC2);							//返回最近一次 ADC2 规则组的转换结果
}


u16 Get_Adc2(void)
{
	ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 1, ADC_SampleTime_239Cycles5); //通道2
	ADC_SoftwareStartConvCmd(ADC2, ENABLE);							//使能指定的 ADC2 的软件转换功能
	while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_EOC ));					//等待转换结束
	return ADC_GetConversionValue(ADC2);							//返回最近一次 ADC2 规则组的转换结果
}

3.3.3、主函数

u8 Val;
u8 ADC;
int main(void)
{

   	Adc_Init();                        //ADC初始化
	while (1)
	{	
        ADC = Get_Adc1();                //将1通道检测的数值传给ADC变量
        Val = (ADC*3.3)/4095             //计算得到1通道检测的电压
	}
	
}

注:上述配置下, 多通道采集时,俩个通道采集之间要有一定的间隔。

电源常用电路:采样电路 在之前的帖子中,我们已经介绍了数字及其核心控制器PPEC。当然,数字电源除了包含电源拓扑以及数字控制核心外,还包括采样、驱动和通讯等外围电路。本篇就先对电源的ADC采样原理和常用的采样调理电路进行介绍吧。 阅读详情

相关推荐

ADC电压采集(基于STM32hal库)(详细介绍)

以STM32F407ZGT6为例它拥有3个分辨率为12bit,最大转换速率为2.4M,有24个通道,三个ADC交替采集同一个通道可以达到的最大转换速率为7.2M。其中SPS指的是转换速率,表示1S内完成模拟量转换为数字量的次数,所以单次转换时间为1/24000000我们STM32所有ADC的外设都是逐次比较型或者也叫逐渐逼近型。ADC转换器就速度划分有三种,一种为积分型ADC,它的转换时间是毫秒级,属于低速ADC;逐次比较型ADC的转换时间是微秒级;

qq_25218501的博客 8453

ADC采样原理

现状 尽管国内有华为、紫光、中芯微等一定知名度的芯片企业,但与欧美等企业差距很大,尤其在ADC芯片上表现尤为显著。目前ADC的供应商主要有德州仪器、亚德诺等企业。中国是全球最主要的芯片需求方,但是国内能造出高精度ADC芯片的企业微乎其微,即便造出来性能与价格也跟不上市场节奏故市场占有率几乎为0。 芯片千万种,ADC芯片就是最难造的之一。真实世界的模拟信号,例如温度、压力声音或者图像等需要转换成 更容易存储、处理和发射的数字形式 。模/数转换器(ADC)就实现了这个功能,在实际应用中为了微型化...

Gordennizaicunzai的博客 2万+

STM8单片机通过PWM触发ADC同步采样

  在做数字开关电源开发过程中使用最多的就是PWM功能和ADC采样功能。ADC采样时采样的时间点很重要,必须在PWM输出高电平的时候取采样,这样采样出来的数据才是最准确的。在STM8单片机中,可以通过定时器的TRG信号去触发ADC采样,这样就可以将PWM波形的输出和ADC采样结合在一起了。   下面就演示一下,如何在输出PWM波的过程中触发ADC采样。   首先看ADC的初始化代码。 #include "adc.h" #include "main.h" #include "led.h" u16 DATA

HXYDJ的博客 8439

通俗理解什么是ADC

通俗理解什么是ADC 学懂,用熟练之后,从头介绍一些概念时,总是比较困难的。很难站在一个什么都不懂的角度去讲明白一个概念。 入之不深,则有浅易之病;出之不显,则有艰涩之患。 ——《湖楼笔谈》 文章目录通俗理解什么是ADC什么是ADCADC的采样率采样位数采样精度 建议看完“什么是ADC”后,去实操ADC采集直流。实操结束后再往后看。 ADC实际没有这么的简单,深入了解需要去学各种寄存器之间如何协作,信号如何走通。这些概念在后面会有讲解。 什么是ADC 我们在高中物理学习时都了解过电压表,在生活中也都

qq_34022877的博客 3万+

STM8单片机ADC采样功能通过定时器触发

  在使用STM8单片机的ADC功能时,读取ADC数据时一般有两种方式,一种是通常不断地读取采样标志位,来判断ADC采样是否结束,一种是通过中断的方式来通知系统采样是否结束。   有时候采样ADC数据的时候,需要按照一定的时间间隔,定点的去采样数据。一般使用的方式就是通过定时器定时,然后在定时中断函数中再去读取ADC采样的数据。但是这种方式采样的时间是不固定的,比如进入定时器中断后,ADC采样刚结束,就可以直接使用当前采样到的数据。但是如果运气不好的话,进入定时中断后,ADC采样刚开始,那么此时就需要等到A

HXYDJ的博客 6677

STM8单片机5通道ADC采样深入解析与应用

STM8S003是STMicroelectronics公司生产的一款基于STM8内核的高性能8位微控制器。以其高性价比、丰富的外设和简单的开发过程,成为工业控制、汽车电子和消费类电子产品中广泛使用的单片机之一。它拥有内置的存储器、多种通信接口、多种计时器以及模拟外设等,可满足不同场景下的应用需求。逐次逼近型ADC(SAR ADC)是一种广泛使用的模数转换方法。它的工作原理是通过尝试和逼近的方式来找到与输入模拟信号相匹配的数字值。

weixin_35364187的博客 604

7. ADC采样

ADC模块是一个逐次逼近(SAR)型ADC,分辨率可选择为16位或12位。ADC由内核和封装器组成。核心由模拟电路组成,包括通道选择MUX、采样保持(S/H) 电路、逐次近电路、基准电压源电路和其他模拟支持电路。封装器由配置和控制模数转换器的数字电路组成。这些电路包括用于可编程转换的逻辑、结果寄存器、到模拟电路的接口、到外围总线的接口、后处理电路以及到其他片上模块的接口。每个ADC模块由单个采样保持 (S/H) 电路组成。ADC模块设计为在同一芯片上重复多次,允许同时采样或独立操作多个ADC。

weixin_56587640的博客 5811

深入探索单片机ADC采样与测准技术

单片机的ADC模块通常包括以下几个主要部分:模拟多路复用器(MUX):允许来自多个传感器或信号源的模拟输入共享一个ADC转换器。这对于资源受限的单片机来说尤为重要。采样和保持电路(S&H):在转换开始前,这一电路会暂存输入信号的电压水平,确保转换过程中信号保持稳定。转换核心:通常由逐次逼近寄存器(SAR)或Σ-Δ调制器等电路构成,负责将模拟信号转换为数字代码。参考电压源:为ADC转换提供参考点,通常是单片机的电源电压或单独的参考电压。控制逻辑。

weixin_42629522的博客 450

STC8单片机ADC采样注意事项

STC8单片机ADC采样注意事项 STC8单片机ADC采样注意事项 最近在做一个模块,使用宏晶公司的STC8单片机开发,模块主要使用了单片机的ADC采样功能,因为需要10个以上的通道,而且模块要经常震动,所以希望使用一种耐操一点的芯片, 于是我使用了STC8系列的单...

1万+

CRISPR筛选全流程指南:从文库构建到数据分析实战

功能基因组学研究需要高效解析基因型与表型的关联,高通量筛选技术是其中的关键工具。基于CRISPR系统的筛选方法通过大规模sgRNA文库扰动基因功能,结合慢病毒递送和测序分析,能够系统鉴定影响细胞增殖、耐药、病毒感染的候选基因。与RNAi或化学小分子筛选相比,CRISPR筛选具有覆盖全基因组、脱靶率低、信号清晰等优势,已广泛应用于药物靶点发现、合成致死和免疫治疗机制研究。本文围绕实验设计与操作中的核心要点展开,涵盖文库扩增、病毒滴度控制、MOI把握、筛选模式选择以及基于MAGeCK的sgRNA丰度分析,并针对

weixin_31188927的博客 282

用c++生成随机迷宫_自动生成随机迷宫(1)prim算法

“程序 = 数据 + 算法”,一款好的作品不单单是代码的堆砌,还有其灵魂的部分,那就是算法;算法是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法既然是解决某类型问题的规范,那么我们就学习它,并在我们的作品中使用它。从这一期开始做一个迷宫系列,包括用算法生成随机迷宫,用算法自动寻址走迷宫。 三大迷宫生成算法之一“随机Prim算法不是...

weixin_31787547的博客 2596

单片机如何提高ADC的采样精度以及电路设计

一、ADC介绍及性能指标①ADC简单介绍 ADC是模拟数字转换器的缩写,全称为Analog-to-Digital Converter。它的功能是将连续的模拟信号转换为离散的数字信号,以便数字系统进行处理和分析。单片机中采用的是SAR(successive approximation register)ADC,逐次逼近型模数转换模块。 ADC 转换包括采样、保持、量化、编码四个步骤。...

weixin_46158019的博客 1万+

谷歌(Google) Pixel 8/9 Pro(xl)如何获取 root 权限

谷歌(Google)Pixel8/9Pro(xl)等系列手机破解后,会在你的init_boot.img同路径生成一个magisk_patched.img,把这个文件拷贝到adb目录下,稍后还得把它刷回手机,这样手机才能获得Root权限,因为安卓14、15以后的内核结构调整,和Pixel7及以下的6、5、4、3、2等系列手机破解稍微不一致。因为ROOT权限的获取,需要使用ROM中的内核文件,个人强烈建议在官网下载ROM,直接刷最新版,其他地方的ROM如果没有校验码,请自行斟酌是否使用。

bugsycrack的博客 3486

单片机ADC采样算法之卡尔曼滤波

单片机ADC采样算法 之 卡尔曼滤波 算法的核心思想是,根据当前的仪器"测量值" 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量. 再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响。 下来先了解一个卡尔曼滤波中几个参数的含义:概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有Stat

qq_36296398的博客 1万+

c764-基于Vue的实时温湿度监控系统

🌟 毕业设计指导交流 🌟 同学们好!作为一名计算机专业的技术爱好者,我在毕业设计领域积累了一些经验,希望能和大家分享交流。从选题到答辩,欢迎一起探讨技术问题。💡 技术方向: 熟悉Java全栈(SSM/Spring Boot)、Python数据分析、微信小程序/安卓开发等技术栈,可以互相学习项目开发经验。📂 学习资源: 整理了一些开源项目案例(含代码和文档),需要参考的同学可以留言讨论,也欢迎分享你的项目经验。🛠 交流内容:✨ 欢迎在评论区留言讨论,一起进步!记得遵守社区规范,保持学术

weixin_39513710的博客 1069

STM32 ST-LINK Utility 无法烧录程序的解决方法

当你打开STM32 ST-LINK Utility,硬件连接好st-link V2,打开了要烧写的文件,点那个Program verify烧录时, 如果出错了: Programming error @ 0x08000000! 我的方法是: 点你想要烧录那个HEX文件的小格,复制 然后去到你前面的文件的格子里,点粘贴: 成功! ...

wocute的博客 9521

单片机ADC采样算法----有效值采样法

在使用单片机ADC功能采样数据时,通常情况下用平均值计算就够了,但是在计算功率时就需要用有效值来计算真正做功的情况。如果是标准的正弦波的话,正弦波的峰值是有效值得1.414倍,可以通过峰值来计算有效值。但是实际应用中波形往往会发生畸变,如果按照1.414这个比例计算的话,误差往往会比较大。所以必须通过计算正弦波的面积来求有效值。 有效值又叫均方根值,对数据的平方和取平...

HXYDJ的博客 3万+

SmartFusion从FPGA到ARM(一)——MSS_GPIO点灯

文章目录前言GPIO点灯 前言 GPIO点灯

whik1194的博客 5270

CH559L单片机ADC介绍以及ADC采样案例

CH559L单片机ADC多通道采样数据串口打印案例

perseverance51博客 1332

Jetson nano 系列之2—板载摄像头IMX219启动

我选用的是亚博科技jetson nano的开发板。

驽马十驾,功在不舍;锲而不舍,金石可镂。 4274

Nacos 从困惑到蒙圈(9)Nacos 适配 达梦数据库【最新版】

介绍Nacos适配达梦数据库的详细步骤,包括对最新版本的支持改造。

甘蓝的专栏 1376

关于单片机内部ADC采样率,采样精度的理解与计算整理

采样精度:12 位分辨率,对应约 0.805mV(3.3V 参考下),即能区分的最小电压变化。采样频率:由 ADC 时钟、采样时间、通道数决定。你的配置下,连续模式最大约 10.67kHz(2 通道同时采样),单次模式取决于触发频率。简单说:精度是 “测得多准”,频率是 “测得有多快”。//1、GPIO初始化,PC0、PC1模拟模式//模拟//2、ADC公共初始化//DMA访问模式不使用//单重模式用单个ADC,//分频//两次采样时间间隔-针对多个ADC。

GQli2296523792的博客 2552

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

单片机ADC采样算法----递推平均值采样法

在上一篇文章单片机ADC采样算法---平均值采样法中分析了平均值采样法的使用,上篇文章中的平均值采样法是连续采样100个数据,然后求平均值,这种方法存在一个问题,就是采集100个值之后,下一次又重新采集100个新的值,这两次采集的值是不连续的,相当于每次都是独立的采集来100个值,然后求平均值。这样计算出来的值有可能看不出来数据的变化趋势。希望在求平均值的时候每次读取到一个新的值,就...

HXYDJ的博客 6868

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

普中科技51单片机的ADC采样电位器功能实现以及特点

关于普中51单片机ADC模数转换,以及在实现过程中的小芝士

qq_46015224的博客 9307

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

单片机的ADC采样

用单片机读取硬件ADC

2301_78799455的博客 7035
上一篇: C51单片机串口通信以及管脚配置
下一篇: 单片机常见的复位方式
nolate_chen
博客等级 码龄3年 1万+粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值