STM32F1笔记(十一)ADC

查看《STM32中文参考手册》里ADC的介绍和特性

 

STM32的ADC最大转换速率为1Mhz,即1us,在ADCCLK=14M,采样周期为1.5个ADC时钟下得到。当ADC的时钟超过14M时,将导致结果准确度下降。

 

规则通道相当于正常运行的程序。注入通道就相当于中断。因此注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才得以继续转换。

 

单次、连续、扫描模式的理解

举例,用ADC1规则通道的顺序为CH0,CH1,CH2,CH3。

1、非扫描模式

        在单次转换模式下,启动ADC1,则①开始转换CH0,转换完成后停止,等待ADC的下一次启动,继续从第①步开始转换。

        在连续转换模式下,启动ADC1,则①开始转换CH0,转换完成后回到第①步。

2、扫描模式

        在单次转换模式下,启动ADC1,则

        ①开始转换CH0;

        ②转换完成后自动开始转换CH1;

        ③转换完成后自动开始转换CH2;

        ④转换完成后自动开始转换CH3;

        ⑤转换完成停止,等待ADC的下一次启动下一次ADC启动后从第①步开始转换。

 

        在连续转换模式下,启动ADC1,则

        ①开始转换CH0;

        ②转换完成后自动开始转换CH1;

        ③转换完成后自动开始转换CH2;

        ④转换完成后自动开始转换CH3;

        ⑤转换完成后返回第一步。

 

下面以规则通道的单次转换为例。

 

 

ADC初始化配置示例:

void Adc_Init(void)
{ 	ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE );	  RCC_ADCCLKConfig(RCC_PCLK2_Div6);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOA, &GPIO_InitStructure);	ADC_DeInit(ADC1);ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;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_InitStructure.ADC_NbrOfChannel = 1;ADC_Init(ADC1, &ADC_InitStructure);  ADC_Cmd(ADC1, ENABLE);ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));
}	

 

单次转换获取ADC值示例:

u16 Get_Adc(u8 ch)   
{ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5);		    ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));return ADC_GetConversionValue(ADC1);
}

 

通常我们不会直接使用单次采集得到的ADC,而是多采集几次,可以求算术平均值,也可以去掉一个最高值和一个最低值再求算术平均值。这样处理后得到的ADC值更可靠。

代码示例:

u16 Get_Adc_Average(u8 ch, u8 times)
{u32 temp_val = 0;u8 t;for(t = 0; t < times; t++){temp_val += Get_Adc(ch);delay_ms(5);}return (temp_val / times);
}

 

获取电压值是ADC常见的应用,计算公式为:U = adc_value * (3.3 / 4096)。 STM32 ADC的分辨率为12,所以2^{12}=4096。3.3V为参考电压值,注意不是VCC!

正点原子战舰开发板ADC参考电压电路如下

可以简单理解为VDDA就是ADC的参考电压值,即3.3V。

《STM32中文参考手册》里ADC引脚的定义

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

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

相关文章

java epoll select_字节跳动高频面试题,操作系统/算法/Java等。

字节跳动# Java▲ 20 Java 中垃圾回收机制中如何判断对象需要回收&#xff1f;常见的 GC 回收算法有哪些&#xff1f;▲ 18 synchronized 关键字底层是如何实现的&#xff1f;它与 Lock 相比优缺点分别是什么&#xff1f;▲ 17 hashmap 和 hashtable 的区别是什么&#xff1f;▲…

STM32F1笔记(十二)DAC

先看《STM32中文参考手册》中DAC的介绍 引脚的定义与ADC类似 这里需要留意手册提供的注意&#xff0c;DAC应该是输出&#xff0c;但是GPIO初始化配置时却要设置为模拟输入。 DAC配置示例 void DAC_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;DAC_InitTypeDef DAC_Init…

STM32F1笔记(十三)SPI

SPI&#xff1a;Serial Peripheral interface&#xff0c;串行外围设备接口。 SPI接口一般使用4条线通信&#xff1a; MISO主设备数据输入&#xff0c;从设备数据输出。 MOSI主设备数据输出&#xff0c;从设备数据输入。 SCLK时钟信号&#xff0c;由主设备产生。 从图中可以…

在WebLogic 12c上运行RichFaces 4.1.0.Final

您可能已经注意到&#xff0c;我只是喜欢JSF。 不仅是Mojarra的规范和参考实现&#xff0c;而且是市场上最具创意的组件套件。 这是我一直以来最喜欢的PrimeFaces &#xff0c;当然还有RichFaces 。 这就是为什么在这里找到“在xxx上运行xxx”帖子的原因:)今天是我的RichFaces和…

C语言开发笔记(一)自动转换和强制转换

整型数据和实行数据之间可以进行运算&#xff0c;而且字符型数据可以和整型数据通用&#xff0c;所以整型、实型、字符型数据之间也是可以进行运算的&#xff0c;但在运算处理之前&#xff0c;不同类型的数据要事先转换成同一种数据类型。转换方法有两种&#xff1a;自动转换和…

Maven 导出依赖Jar,生成source.jar,javadoc.jar

下载最新版的Maven http://maven.apache.org/download.cgi 解压到本地文件夹新建环境变量 MAVEN_HOME maven解压目录在path加入 %MAVEN_HOME%/bin;需要确保已经有Java环境变量 &#xff08;打开cmd java -version,javac -version两个命令看正常不&#xff09;一、导出到默认目…

asp.net 分布式应用开发

Net Framework推出的许多新技术为上述任务的实现提供了相对简单的解决方案。其中&#xff0c;基于SOAP的Web Service在处理分布式应用时具有比传统的DCOM/CORBA明显的优点&#xff0c;结合基于Web的ASP.NET页面开发技术和SQL Server数据存储技术&#xff08;或Xml文档&#xff…

C语言开发笔记(三)自加和自减

看到一段代码&#xff0c;被坑了。 #include <stdio.h>int main(void) {int a 7;printf("%d\n", a);printf("%d\n", a--);printf("%d\n", -a);printf("%d\n", -a--);printf("%d\n", a);return 0; } 结果为 -a的逻辑…

python语言属于哪一种语言_Python与Java:你应该学习哪种语言,他们有什么区别?...

在企业招聘中&#xff0c; Python和Java经常是需求最大的编程语言。这两种编程功能强大&#xff0c;灵活且面向对象的语言&#xff0c;通常在组织中和各种其他设置中使用。这可能会导致我们提出一个不可避免的问题&#xff1a;哪个更好&#xff1f; 这是一个复杂的问题&#xf…

关于手机端CSS Sprite图标定位的一些领悟

今天在某个群里面闲逛&#xff0c;看见一个童鞋分享了一个携程的移动端的页面。地址这里我也分享下吧&#xff1a;http://m.ctrip.com/html5/在手机端我都很少用雪碧图合并定位图标&#xff0c;用的比较多就是用字体图标来代替&#xff0c;有些图标不多的时候就自己单个的切出来…

c语言程序源代码_程序的编译、链接和执行

同学们总是抱怨每次见到一道面试题都很难把它转化为程序源代码。然而不幸的是&#xff0c;即使是程序源代码对于计算机来说也还是太高级了。要想让计算机执行一段程序&#xff0c;我们必须把它翻译成最底层的机器指令才行。这其中要经历很多步骤。幸运的是有很多现成的工具可以…

【程序员眼中的统计学(1)】信息图形化:第一印象

信息图形化&#xff1a;第一印象 作者 白宁超 2015年10月13日23:23:13 摘要&#xff1a;程序员眼中的统计学系列是作者和团队共同学习笔记的整理。首先提到统计学&#xff0c;很多人认为是经济学或者数学的专利&#xff0c;与计算机并没有交集。诚然在传统学科中&#xff0c;其…

JBoss AS 7.0.2“ Arc”发布–使用绑定选项

有关JBoss AS7方面的更多好消息。 JBoss AS 7.0.2.Final“ Arc”已经发布&#xff01; 自AS 7.0.1发布以来已经过去了一个月。 在这短时间内&#xff0c;已修复了许多错误&#xff0c;并实现了更多功能和改进。 所有这些错误修复和功能已包含在此7.0.2版本中。 此新版本主要包…

Android N 新特性 + APP开发注意事项

1. 多窗口MultiWindow 多窗口MultiWindow&#xff0c;这是Android N里对开发者影响比较大的特性&#xff0c;也是大家疑问比较多的地方。站在开发者的角度其实不必太担心这个特性会导致我们需要修改很多代码来适配系统。Google的工程师们也不希望这个特性导致很多应用出现问题&…

C语言开发笔记(六)实参和形参

举例说明 #include <stdio.h>void swap(int x, int y) {int temp 0;temp x;x y;y temp; }int main(void) {int a 1, b 2;swap(a, b);printf("a%d, b%d\n", a, b);return 0; }结果为 在函数调用时&#xff0c;a的值传给x&#xff0c;b的值传给y。执行完…

优化方案电子版_关于小区分支道路整修设计方案的讨论稿(No.2020121)

各位业主&#xff0c;大家好&#xff01; 关于绿洲比华利花园主干道翻新和次干道整修前期勘查和设计方案&#xff0c;经业委会及小区专家小组、设计单位申都设计公司工程设计人员结合本小区的实际情况进行了深入讨论&#xff0c;优化设计&#xff0c;形成如下三个独立方案&…

为什么有的开关电源需要加自举电容?

一、什么是自举电路&#xff1f; 1.1 自举的概念 首先&#xff0c;自举电路也叫升压电路&#xff0c;是利用自举升压二极管&#xff0c;自举升压电容等电子元件&#xff0c;使电容放电电压和电源电压叠加&#xff0c;从而使电压升高。有的电路升高的电压能达到数倍电源电压。…

VS2010报错 error:LINK1123:转换到COF期间失败,文件无限或损坏

右键工程-配置属性-清单工具-输入和输出&#xff0c;嵌入清单一项重新选择为否&#xff0c;如下图 修改后重新生成和运行&#xff0c;发现程序正常运行了。

springboot 整合mybatis_SpringBoot整合Mybatis、MybatisPuls

文末视频讲解SpringBoot的版本是2.2.0一、整合Mybatis1-1、引入pom文件<dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>8.0.19version> dependency> <dependency> &l…

为旧版代码创建存根–测试技术6

任何阅读此博客的人都可能已经意识到&#xff0c;目前我正在开发一个包含大量旧代码的项目&#xff0c;这些旧代码庞大&#xff0c;扩展且编写时从未进行过任何测试。 在使用此遗留代码时&#xff0c;有一个行为异常的类非常普遍&#xff0c;整个团队都一次又一次地犯错。 为了…