网站大量收购独家精品文档,联系QQ:2885784924

STM32ADC电压测试实验报告.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32ADC电压测试实验报告

STM32 ADC电压测试实验报告 一、实验目的 1.了解STM32的基本工作原理 2. 通过实践来加深对ARM芯片级程序开发的理解 3.利用STM32的ADC1通道0来采样外部电压值值,并在TFTLCD模块上显示出来 二、实验原理 STM32拥有1~3个ADC,这些ADC可以独立使用,也可以使用双重模式(提高采样率)。STM32的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中 接下来,我们介绍一下执行规则通道的单次转换,需要用到的ADC寄存器。第一个要介绍的是ADC控制寄存器(ADC_CR1和ADC_CR2)。ADC_CR1的各位描述如下: ADC_CR1的SCAN位,该位用于设置扫描模式,由软件设置和清除,如果设置为1,则使用扫描模式,如果为0,则关闭扫描模式,ADC_CR1[19:16]用于设置ADC的操作模式 我们要使用的是独立模式,所以设置这几位为0就可以了。 第二个寄存器ADC_CR2,该寄存器的各位描述如下: ADCON位用于开关AD转换器。而CONT位用于设置是否进行连续转换,我们使用单次转换,所以CONT位必须为0。CAL和RSTCAL用于AD校准。ALIGN用于设置数据对齐,我们使用右对齐,该位设置为0。EXTSEL[2:0]用于选择启动规则转换组转换的外部事件,我们这里使用的是软件触发(SWSTART),所以设置这3个位为111。 第三个要介绍的是ADC采样事件寄存器(ADC_SMPR1和ADC_SMPR2),这两个寄存器用于设置通道0~17的采样时间,每个通道占用3个位 对于每个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降低ADC的转换速率。ADC的转换时间可以由下式计算: Tcovn=采样时间+12.5个周期 第四个要介绍的是ADC规则序列寄存器(ADC_SQR1~3), 第五个要介绍的是ADC规则数据寄存器(ADC_DR)。 最后一个要介绍的ADC寄存器为ADC状态寄存器(ADC_SR),该寄存器保存了ADC转换时的各种状态。 三.实验内容 一.实验步骤 1)开启PA口时钟,设置PA0为模拟输入。 STM32F103RBT6的ADC通道0在PA0上,所以,我们先要使能PORTA的时钟,然后设置PA0为模拟输入。 2)使能ADC1时钟,并设置分频因子。 要使用ADC1,第一步就是要使能ADC1的时钟,在使能完时钟之后,进行一次ADC1的复位。接着我们就可以通过RCC_CFGR设置ADC1的分频因子。分频因子要确保ADC1的时钟(ADCCLK)不要超过14Mhz。 3)设置ADC1的工作模式。 在设置完分频因子之后,我们就可以开始ADC1的模式配置了,设置单次转换模式、触发方式选择、数据对齐方式等都在这一步实现。 4)设置ADC1规则序列的相关信息。 接下来我们要设置规则序列的相关信息,我们这里只有一个通道,并且是单次转换的,所以设置规则序列中通道数为1,然后设置通道0的采样周期。 5)开启AD转换器,并校准。 在设置完了以上信息后,我们就开启AD转换器,执行复位校准和AD校准,注意这两步是必须的!不校准将导致结果很不准确。 6)读取ADC值。 在上面的校准完成之后,ADC就算准备好了。接下来我们要做的就是设置规则序列0里面的通道,然后启动ADC转换。在转换结束后,读取ADC1_DR里面的值就是了。 通过以上几个步骤的设置,我们就可以正常的使用STM32的ADC1来执行AD转换操作了。 二,程序代码 void Adc_Init(void) { //先初始化IO口 RCC-APB2ENR|=12; //使能PORTA口时钟 GPIOA-CRL=0XFFFF0000;//PA0 1 2 3 anolog输入 //通道10/11设置 RCC-APB2ENR|=19; //ADC1时钟使能 RCC-APB2RSTR|=19; //ADC1复位 RCC-APB2RSTR=~(19);//复位结束 RCC-CFGR=~(314); //分频因子清零 //SYSCLK/DIV2=12M ADC时钟设置为12M,ADC最大时钟不能超过14M! //否则将导致ADC准确度下降! RCC-CFGR|=214; ADC1-CR1=0XF0FFFF; //工作模式清零 ADC1-CR1|=016; //独立工作模式 ADC1-CR1=~(18); //非扫描模式 ADC1-CR2=~(11); //单次转换模式 ADC1-CR2=~(717); ADC1-CR2|=717; //软件控制转换 ADC1-C

文档评论(0)

youshen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档