ARM技术与应用第9章ADC_第1页
ARM技术与应用第9章ADC_第2页
ARM技术与应用第9章ADC_第3页
ARM技术与应用第9章ADC_第4页
ARM技术与应用第9章ADC_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*嵌入式系统原理与应用1课程回顾:GPIO给相应GPIO端口时钟信号RCC_APB2PeriphClockCmd(RCC_APB2_Periph_GPIOx,ENABLE);初始化相应端口GPIO_DeInit(GPIOA);GPIO_Init(GPIOA,&GPIOInitStructure);*嵌入式系统原理与应用2课程回顾:GPIO设置相应IO端口GPIO_SetBits(GPIOA,GPIO_Pin_3);GPIO_ResetBits(GPIOA,GPIO_Pin_3);GPIO_WriteBit(GPIOA,GPIO_Pin_3,Bit_SET);GPIO_Write(GPIOC,0x3A4B)*嵌入式系统原理与应用3课程回顾:GPIO读取输出IO端口状态GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_2);GPIO_ReadOutputData(GPIOB);读取输入IO端口状态GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2);GPIO_ReadInputData(GPIOB);*嵌入式系统原理与应用4课程回顾:中断和事件什么是中断?抢占式优先级与响应优先级的概念外部中断的使用方法使能时钟初始化GPIO(输入、外部中断管脚)使能EXTI(触发模式)使能NVIC对应的中断(中断优先级)*嵌入式系统原理与应用5课程回顾:中断和事件NVIC_PriorityGroupConfigNVIC_InitGPIO_EXTILineConfigEXTI_DeInitEXTI_InitEXTI_GetFlagStatusEXTI_ClearFlag*嵌入式系统原理与应用6课程回顾:中断和事件EXTI_GetITStatusEXTI_ClearITPendingBit第九章ADC*嵌入式系统原理与应用8内容提纲ADC概述STM32ADC设置ADC转换模式总结*嵌入式系统原理与应用9ADC概述ADC,Analog-to-DigitalConverter的缩写,指模/数转换器或者模拟/数字转换器。真实世界的模拟信号,例如温度、压力、声音或者图像等,需要转换成更容易存储、处理或发射的数字形式,ADC可以实现这个功能。ADC是计算机感知世界的窗口*嵌入式系统原理与应用10STM32的ADC18通道2X12位逐次比较型,最大速度1MSPS支持单次和连续转换模式,双重模式,自动扫描模式,规则和注入转换模式可由外部中断、定时器或软件触发转换采样时间可按通道分别编程转换结束、注入转换结束和发生模拟看门狗事件时会产生中断*嵌入式系统原理与应用11STM32ADC功能框图*嵌入式系统原理与应用12内容提纲ADC概述STM32ADC基本设置ADC时钟ADC开关通道选择ADC校准数据对齐温度传感器和内部参考电压ADC转换模式编程实例总结*嵌入式系统原理与应用13ADC时钟STM32ADC最大工作时钟为14MHz,设置时应使时钟接近而不超过14MHz。ADC的时钟由APB2时钟经RCC提供的ADC预分频器后产生,我们的系统APB2频率为72MHz,ADC预分频值(2/4/6/8)取6时可产生最接近最大频率的12MHz时钟。ADC预分频器由RCC_ADCCLKConfig函数设置*嵌入式系统原理与应用14ADC时钟设置函数函数原型voidRCC_ADCCLKConfig(u32RCC_ADCCLKSource)功能描述设置ADC时钟(ADCCLK)输入参数RCC_ADCCLKSource:RCC_PCLK2_Divx,x=2,4,6,8输出参数无返回值无先决条件无应用示例RCC_ADCCLKConfig(RCC_PCLK2_Div6);*嵌入式系统原理与应用15ADC开关调用ADC_Cmd(ADCx,ENABLE)函数可给ADC上电,它将ADC从断电状态下唤醒。调用ADC_Cmd(ADCx,DISABLE)函数可将ADC断电,断电后ADC几乎不耗电*嵌入式系统原理与应用16ADC开关控制函数函数原型voidADC_Cmd(ADC_TypeDef*ADCx,FunctionStateNewState)功能描述使能或失能ADC输入参数ADCx:x=1,2,用于选择ADC1或ADC2NewState:ENABLE或DISABLE输出参数无返回值无先决条件无应用示例ADC_Cmd(ADC1,ENABLE);*嵌入式系统原理与应用17ADC通道选择STM32的ADC有16个多路通道和额外的温度传感器(通道16)和参考电压通道(通道17),额外通道只能出现在主ADC1中每个通道的采样时间都可以独立设置通道选择由ADC_RegularChannelConfig函数和ADC_InjectedChannelConfig函数实现*嵌入式系统原理与应用18ADC规则组通道配置函数函数原型voidADC_RegularChannelConfig(ADC_TypeDef*ADCx,u8ADC_Channel,u8Rank,u8ADC_SampleTime)功能描述设置ADC规则组通道的转化顺序和采样时间输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_Channel:ADC_Channel_x,x=0~17Rank:规则组采样顺序,1~16ADC_SampleTime:ADC_SampleTime_xCycles5,x=1,7,13,28,41,55,71,239应用示例ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5)*嵌入式系统原理与应用19ADC校准STM32的ADC有一个内置自校准模式,校准可大幅减小因内部电容器组变化而造成的精度误差,在校准期间,每个电容器上都会计算出一个误差修正码,这个码用于消除在随后的转换中每个电容器上产生的误差。建议每次上电后执行一次校准*嵌入式系统原理与应用20ADC校准:ADC_ResetCalibration函数原型voidADC_ResetCalibration(ADC_TypeDef*ADCx)功能描述重置指定的ADC校准寄存器输入参数ADCx:x=1,2,用于选择ADC1或ADC2输出参数无返回值无先决条件无应用示例ADC_ResetCalibration(ADC1);*嵌入式系统原理与应用21ADC校准:ADC_GetResetCalibrationStatus函数原型FlagStatusADC_GetResetCalibrationStatus(ADC_TypeDef*ADCx)功能描述获取ADC重置校准寄存器的状态输入参数ADCx:x=1,2,用于选择ADC1或ADC2输出参数无返回值ADC重置校准寄存器的新状态,SET(正在重置),RESET(重置完毕)先决条件无应用示例Status=ADC_GetResetCalibrationStatus(ADC1);*嵌入式系统原理与应用22ADC校准:ADC_StartCalibration函数原型voidADC_StartCalibration(ADC_TypeDef*ADCx)功能描述开始指定ADC的校准输入参数ADCx:x=1,2,用于选择ADC1或ADC2输出参数无返回值无先决条件无应用示例ADC_StartCalibration(ADC1);*嵌入式系统原理与应用23ADC校准:ADC_GetCalibrationStatus函数原型FlagStatusADC_GetCalibrationStatus(ADC_TypeDef*ADCx)功能描述获取指定ADC的校准状态输入参数ADCx:x=1,2,用于选择ADC1或ADC2输出参数无返回值ADC校准的新状态,SET(正在校准),RESET(校准完毕)先决条件无应用示例Status=ADC_GetCalibrationStatus(ADC1);*嵌入式系统原理与应用24ADC校准过程ADC_ResetCalibration(ADC1);while(ADC_GetResetCalibrationStatus(ADC1));ADC_StartCalibration(ADC1);while(ADC_GetCalibrationStatus(ADC1));*嵌入式系统原理与应用25ADC数据对齐ADC的转换结果可以选择左对齐或右对齐,其定义如下所示,SEXT为扩展符号值,对齐模式在ADC_Init函数中指定*嵌入式系统原理与应用26温度传感器/内部电压参考温度传感器和通道16连接,内部电压参考和通道17连接,在使用前需调用函数ADC_TempSensorVerfintCmd函数开启。温度(℃)=(1.43-Vsense)/0.0043+25内部参考电压固定为1.2V,可用来测供电电压。1.2=VCC*AD/4096,VCC=1.2*4096/AD这两通道只能被ADC1采集*嵌入式系统原理与应用27温度传感器/内部电压参考使能函数函数原型voidADC_TempSensorVrefintCmd(FunctionalStateNewState)功能描述打开或关闭温度传感器/内部电压参考输入参数NewState:ENABLE/DISABLE输出参数无返回值无先决条件无应用示例ADC_TempSensorVrefintCmd(ENABLE);*嵌入式系统原理与应用28ADC复位:ADC_DeInit函数原型voidADC_DeInit(ADC_TypeDef*ADCx)功能描述将ADCx的全部寄存器重设为默认值输入参数ADCx:x=1,2,用于选择ADC1或ADC2输出参数无返回值无先决条件无应用示例ADC_DeInit(ADC1);*嵌入式系统原理与应用29ADC初始化:ADC_Init函数原型voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)功能描述根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_InitStruct:指向ADC_InitTypeDef的指针,包含了指定外设ADC的配置信息返回值无先决条件无应用示例ADC_Init(ADC1,&ADC_InitStruct);*嵌入式系统原理与应用30ADC_InitStruct具体可参见库函数参考手册*嵌入式系统原理与应用31ADC配置过程设置时钟:RCC_APB2PeriphClockCmd和RCC_ADCCLKConfig函数;设置ADC工作模式:ADC_Init,ADC_RegularChannelConfig等函数打开ADC:ADC_Cmd函数校准ADC:ADC_ResetCalibration和ADC_StartCalibration函数测量ADC参考电压*嵌入式系统原理与应用32内容提纲ADC概述STM32ADC基本设置ADC工作模式单次转换模式连续转换模式模拟看门狗扫描模式双ADC模式总结*嵌入式系统原理与应用33单次转换模式单次转换模式下,ADC只执行一次转换,转换可由ADC_SoftwareStartConvCmd函数或外部触发启动。转换完成,EOC标志被置位,如果设置了EOCIE,则产生中断,转换结果由ADC_GetConversionValue

函数读取在读取转换结果后,EOC自动清除*嵌入式系统原理与应用34ADC_SoftwareStartConvCmd函数原型voidADC_SoftwareStartConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述启动ADC转换输入参数ADCx:x=1,2,用于选择ADC1或ADC2NewState:ENABLE/DISABLE返回值无先决条件无应用示例ADC_SoftwareStartConvCmd(ADC1,ENABLE)*嵌入式系统原理与应用35ADC_GetFlagStatus函数原型FlagStatusADC_GetFlagStatus(ADC_TypeDef*ADCx,u8ADC_FLAG)功能描述检查ADC标志位是否置1输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_FLAG:指点需检查的标志位,ADC_FLAG_EOC返回值SET/RESET应用示例While(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==RESET);*嵌入式系统原理与应用36ADC_ClearFlag函数原型voidADC_ClearFlag(ADC_TypeDef*ADCx,u8ADC_FLAG)功能描述清除ADC标志位输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_FLAG:指点需清除的标志位,ADC_FLAG_EOC返回值无应用示例ADC_ClearFlag(ADC1,ADC_FLAG_EOC);*嵌入式系统原理与应用37ADC_GetITStatus函数原型FlagStatusADC_GetITStatus(ADC_TypeDef*ADCx,u8ADC_IT)功能描述检查ADC中断是否发生输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_IT:指点需检查的中断标志位,ADC_IT_EOC返回值SET/RESET应用示例ADC_GetITStatus(ADC1,ADC_FLAG_EOC);*嵌入式系统原理与应用38ADC_ClearITPendingBit函数原型voidADC_ClearITPendingBit(ADC_TypeDef*ADCx,u8ADC_IT)功能描述清除ADC标志位输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_IT:指点需清除的中断标志位,ADC_IT_EOC返回值无应用示例ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);*嵌入式系统原理与应用39ADC_ITConfig函数原型voidADC_ITConfig(ADC_TypeDef*ADCx,u8ADC_IT,FunctionalStateNewState)功能描述使能或失能ADC中断输入参数ADCx:x=1,2,用于选择ADC1或ADC2ADC_IT:指点需清除的中断标志位,ADC_IT_EOCNewState:ENABLE/DISABLE返回值无应用示例ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);*嵌入式系统原理与应用40ADC_GetConversionValue函数原型u16ADC_GetConversionValue(ADC_TypeDef*ADCx)功能描述读取转换结果输入参数ADCx:x=1,2,用于选择ADC1或ADC2返回值转换结果先决条件无应用示例Result=ADC_GetConversionValue(ADC1);*嵌入式系统原理与应用41ADC单次转换实例读取开发板上CPU温度和变阻器上的电压,变阻器连接到PC0,对应的ADC通道为通道10,CPU温度对应通道16*嵌入式系统原理与应用42ADC单次转换(轮询):基本思路初始化:设置并开启ADC时钟,设置输入管脚,设置ADC工作模式为单次转换,开启温度传感器和内部参考电压,使能ADC,校准ADC,利用内部参考电压计算ADC参考电压;转换:设置转换通道,启动AD转换,等待AD转换完成,读取转换结果,清除转换完成标志*嵌入式系统原理与应用43ADC单次转换(中断):基本思路初始化:设置并开启ADC时钟,设置输入管脚,设置ADC工作模式为单次转换,开启温度传感器和内部参考电压,使能ADC,校准ADC,利用内部参考电压计算ADC参考电压;设置NVIC对应的ADC中断。开始转换:设置转换通道,使能ADCEOC中断,启动AD转换中断服务程序:读取转换结果,设置下一转换通道,如果几个通道转换都已完成,关ADC中断,否则启动下一通道转换*嵌入式系统原理与应用44连续转换模式连续转换模式下,CONT位设为1,前面ADC转换一结束马上就启动另一次转换;每次转换完成,EOC标志被置位,如果设置了EOCIE,则产生中断,转换结果由ADC_GetConversionValue

函数读取在读取转换结果后,EOC自动清除*嵌入式系统原理与应用45扫描模式扫描模式可用来扫描一组模拟通道,可以通过将ADC_InitTypeDef结构体中的ADC_ScanConvMode使能实现。扫描的顺序由ADC_RegularChannelConfig函数指定,扫描模式启动后,ADC在每个组的每个通道上执行单次转换,每次转换结束,同一组的下一个通道被自动转换。扫描模式需与DMA协同以实现自动将转换结果传输到SRAM中。*嵌入式系统原理与应用46双ADC模式STM32的两个ADC可以协同工作,共有9种模式:同步规则模式同步注入模式快速交叉模式慢速交叉模式交替触发模式独立模式同步注入+同步规则模式同步规则+交替触发模式同步注入+交叉模式*嵌入式系统原理与应用47双ADC模式在同步规则模式下,ADC初始化时ADC_Mode应设为ADC_Mode_RegSimult,并使能ADC2的外部触发转换不能两个ADC同时转换一个通道转换结束时产生一个32位DMA传输请求和EOC标志,为了读取ADC2的结果,必须使能ADC的DMA,ADC1转换结果保存在ADC1_DR的低16位,ADC2转换结果保存在高16位*嵌入式系统原理与应用48双ADC的同步规则模式实例在同步规则模式下,读取并显示芯片温度和变阻器电压*嵌入式系统原理与应用49ADC_ExternalTrigConvCmd函数原型voidADC_ExternalTrigConvCmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述使能/失能ADC外部触发转换输入参数ADCx:x=1,2,用于选择ADC1或ADC2NewState:ENABLE/DISABLE返回值无先决条件无应用示例ADC_ExternalTrigConvCmd(ADC2,ENABLE);*嵌入式系统原理与应用50ADC_DMACmd函数原型voidADC_DMACmd(ADC_TypeDef*ADCx,FunctionalStateNewState)功能描述使能ADC的DMA传输输入参数ADCx:x=1,2,用于选择ADC1或ADC2NewState:ENABLE/DISABLE返回值无先决条件无应用示例ADC_DMACmd(ADC1,ENABLE);*嵌入式系统原理与应用51ADC_GetDualModeConversionValue函数原型u32ADC_GetDualModeConversionValue(void)功能描述读取双ADC模式转换结果输入参数无返回值32位无符号数,高16位为ADC2转换结果,低16位为ADC1转换结果先决条件无应用示例result=ADC_GetDualModeConversionValue();*嵌入式系统原理与应用52作业根据应用需求,需要对ADC通道0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论