《嵌入式技术入门与实战(基于STM32)》 课件 7-ADC_第1页
《嵌入式技术入门与实战(基于STM32)》 课件 7-ADC_第2页
《嵌入式技术入门与实战(基于STM32)》 课件 7-ADC_第3页
《嵌入式技术入门与实战(基于STM32)》 课件 7-ADC_第4页
《嵌入式技术入门与实战(基于STM32)》 课件 7-ADC_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第7章STM32模拟数字转换模块《嵌入式技术入门与实战(基于STM32)》目录认识STM32的ADC任务1STM32ADC应用实战1认识STM32的ADC第7章STM32模拟数字转换模块PartOneADC简介ADC(AnalogDigitalConverter)-主要完成模拟数字转换功能模拟量只有转换成数字量才能被计算机采集,分析和计算。STM32的ADCSTM32F4xx系列芯片上有3个ADC模块,最高分辨率为12位,是逐次趋近型模数转换器。可配置12位、10位、8位或6位分辨率。具有多达19个复用通道,可测量来自16个外部源、内部温度、内部参考电压和备用电压VBAT通道的信号。多通道输入时,可以划分为规则通道和注入通道,规则通道转换期间可产生DMA请求。各通道的A/D转换支持单次转换、连续转换,多个通道输入时,支持扫描转换模式。可独立设置各通道采样时间。ADC内部结构-2ADC内部结构-2ADC的引脚单个ADC引脚共有22个名称信号类型备注VREF+正模拟参考电压输入ADC正参考电压,1.8V≤VREF+≤VDDAVDDA模拟电源输入模拟电源电压等于VDD,全速运行时,2.4V≤VDDA≤VDD(3.6V)低速运行时,1.8≤VDDA≤VDD(3.6V)VREF-负模拟参考电压输入ADC低/负参考电压,VREF-=VSSAVSSA模拟电源接地输入模拟电源接地电压等于VssADCx_IN[15:0]模拟输入信号16个模拟输入通道EXTI_15外部事件启动触发输入EXTI线15,触发注入组的转换EXTI_11外部事件启动触发输入EXTI线11,触发规则组的转换ADC开关控制可通过将ADC_CR2寄存器中的ADON位置1来为ADC供电。首次将ADON位置1时,会将ADC从掉电模式中唤醒。SWSTART(规则通道)或JSWSTART(注入通道)位置1时,启动AD转换。可通过将ADON位清零来停止转换并使ADC进入掉电模式。在此模式下,ADC几乎不耗电(只有几μA)。ADC输入通道ADC共有19个复用通道,其中有16个外部源和3个内部通道。16个外部输入通道的输入源对应于ADCx_IN[15:0]外部模拟输入引脚输入,引脚通过复用方式映射到GPIO端口,其复用关系可以查看STM32F407xx数据手册上的引脚定义。ADC通道选择STM32特别地加入了多种成组转换的模式,模拟转换器中将它们分成两组:规则通道组和注入通道组。在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。ADC转换方式ADC单个通道的转换支持单次转换和连续转换,多通道有扫描模式和不连续采样模式在单次转换模式下,ADC只执行一次转换。完成所选通道的转换之后,如果转换了规则通道,转换数据存储在16位ADC_DR寄存器中,如果转换了注入通道,转换数据存储在16位ADC_JDR1寄存器中,如果开启中断,则产生中断,然后ADC停止。本任务中我们将使用单次转换模式。ADC的数据对齐ADC_CR2寄存器中的ALIGN位用于选择转换后存储的数据的对齐方式。可选择左对齐和右对齐两种方式。(a)12位数据的右对齐(b)12位数据的左对齐ADC转换时间STM32F407xx系列芯片的ADC模块挂接在APB2总线下,其时钟是对APB2时钟频率进行预分频得到,预分频值由ADC通用控制寄存器ADC_CCR中的ADCPRE位决定,取值有:00:PCLK22分频01:PCLK24分频10:PCLK26分频11:PCLK28分频例如,在后面的任务中,APB2设置为最大时钟频率84MHz,分频值为4分频,因此,ADC的时钟频率为21MHz。ADC会在数个ADC时钟周期内对输入电压进行采样,可使用ADC采样时间寄存器ADC_SMPR1和ADC_SMPR2中的SMP[2:0]位修改周期数(取值3~480)。每个通道均可以使用不同的采样时间进行采样。而不同数据位数的转换所需的时间为:N位数据*ADC时钟周期,总转换时间的计算公式如下:

Tconv=采样时间+N个周期例如:在本章任务1中,APB2设置为最大时钟频率84MHz,ADC时钟分频值为4分频,因此,ADC的时钟频率为21MHz。设置480个周期的采样时间,转换数据设置为12位,那么总的转换时间为:Tconv=(480+12)/21000000=23.43us。2任务1STM32ADC应用实战第7章STM32模拟数字转换模块PartTwo案例引入ADC实验使用STM32F407ZGT6芯片的ADC模拟输入通道读取实验板提供的模拟电压进行转换,并显示在串口调试助手上。任务分析本任务硬件设计上需要确定板级引脚和ADC通道关系,ADC参考电源的连接,搭建输入电压环境,本任务中ADC使用实验板引出的PA5引脚可对应ADC1_IN5的模拟输入,软件设计的主要内容是ACD初始化配置、ADC转换控制以及ADC结果处理的实现。

1、硬件设计与实现ADC供电设计:本任务中,参考电压设置为3.3VADC的模拟电压输入设计我们使用ADC1,选用通道5,其对应的模拟输入引脚为PA5ADC的模拟电压输入设计用一跟杜邦线,一头插在多功能端口P12的2号STMADC插针上,另外一头就接要测试的电压点(不大于3.3V)。

2、软件设计与实现ADC常用HAL库函数:HAL_ADC_Init()功能:完成某个ADC初始化配置,入参为ADC_HandleTypeDef结构体类型的ADC外设对象指针,返回HAL状态值。该函数一般由开发工具自动生成,函数内将调用MCU底层初始化函数HAL_ADC_MspInit()完成引脚、时钟和中断的设置。函数原型:HAL_StatusTypeDefHAL_ADC_Init(ADC_HandleTypeDef*hadc)HAL_ADC_ConfigChannel()功能:配置某个ADC通道参数,返回HAL状态值。该函数一般由开发工具自动生成。函数原型:HAL_StatusTypeDefHAL_ADC_ConfigChannel(ADC_HandleTypeDef*hadc,ADC_ChannelConfTypeDef*sConfig)

HAL_ADC_Start()功能:使能ADC,软件方式启动规则通道转换,返回HAL状态值。一般和HAL_ADC_PollForConversion()配合使用,启动后,通过HAL_ADC_PollForConversion()查询转换结果。去使能ADC使用函数HAL_ADC_Stop()。HAL_ADC_PollForConversion()功能:轮询方式等待ADC规则通道转换完成,返回HAL状态值。可设置超时退出(第二个入参),即超过设定时间未检测到转换完成信号EOC,退出等待。函数原型:HAL_StatusTypeDefHAL_ADC_PollForConversion(ADC_HandleTypeDef*hadc,uint32_tTimeout)HAL_ADC_GetValue功能:从ADC规则数据寄存器(ADC_DR)获取ADC规则通道转换结果,返回值为32位整形数字。函数原

温馨提示

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

评论

0/150

提交评论