STM32 ADC详解 | 您所在的位置:网站首页 › STM32ADC采集±5V › STM32 ADC详解 |
目录 01、ADC简介 02、STM32的ADC外设 03、STM32ADC框图讲解 04、触发源 05、转换周期 06、数据寄存器 07、中断 08、电压转换 09、电路图设计 10、代码设计 01、ADC简介ADC是Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。 从STM32F207的数据手册中下图看到,STM32F207VC有3个精度为12bit的ADC控制器,有16个外部通道,而144脚的STM32F207Zx和176脚的STM32F207Ix因为带PF脚,所以多8个通道,为24个外部通道。各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。 上面说到,STM32F207有3个12bit的ADC控制器,下文将以ADC3的通道10讲解。 首先我们确认下ADC外设所在的地址总线,从STM32F207数据手册中下图看到,ADC属于APB2总线下,APB2时钟频率是60MHz。具体STM32如果通过外部25M晶振得到的60MHz的APB2,请看《STM32F207时钟系统解析》。 对应GPIO,我们从STM32F207数据手册中看到,我们可以使用PC0作为ADC3的通道10。 这里需要说明的是,之前的文章使用其他外设时,比如《STM32PWM输出》中,寻找对应的管脚时,我们都是从STM32F207数据手册的Alternatefunctionmapping表中寻找,这是因为ADC对应的管脚使用的是Additionalfunctions,PWM对应的管脚使用的是Alternatefunctions。 区别是: Additionalfunctions:附加,辅助功能,引脚被连接到其他模块使用,使用时直接普通配置即可,例如ADC的采用输入通道,配置为模拟输入。 Alternate functions:复用功能,即将IO口用作普通输入输出以外的功能,例如串口输入输出,使用时需要配置复用模式。 在之前的文章《STM32GPIO详解》中有如下介绍。 STM32标准外设库中有如下代码 typedef enum { GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */ GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */ GPIO_Mode_AF = 0x02, /*!< GPIO Alternate function Mode */ GPIO_Mode_AN = 0x03 /*!< GPIO Analog Mode */ }GPIOMode_TypeDef;其中GPIO_Mode_AF对应的就是Alternate functions:复用功能,GPIO_Mode_AN对应的就是Additional functions:附加,辅助功能。 03、STM32ADC框图讲解下图是STM32ADC的结构框图,我们将其划分为7个部分进行讲解。 1、输入电压范围 ADC所能测量的电压范围就是VREF-≤ VIN ≤ VREF+,把VSSA 和VREF-接地,把VREF+和VDDA 接3V3,得到ADC的输入电压范围为:0~3.3V。 2、输入通道 ADC的信号时通过输入通道进入单片机内部的,单片机通过ADC模块将模拟信号转换为数字信号。上图标记②的部分显示了外部的16个通道,连接的GPIO,对应的关系如上面讲解的,需要在STM32F207数据手册的STM32F20xpin and ball definitions表格中寻找。实际上STM32还有内部通道,ADC1的通道 16连接到了芯片内部的温度传感器,Vrefint 连接到了通道17。ADC2的模拟通道 16和 17连接到了内部的VSS。 3、转换通道 外部的16个通道在转换时又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4路(注入通道貌似使用不多),下面简单介绍一下俩种通道: 规则通道 规则通道顾名思义就是,最平常的通道、也是最常用的通道,平时的ADC转换都是用规则通道实的。规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中。 注入通道 注入通道是相对于规则通道的,注入通道可以在规则通道转换时,强行插入转换,相当于一个“中断通道”吧。当有注入通道需要转换时,规则通道的转换会停止,优先执行注入通道的转换,当注入通道的转换执行完毕后,再回到之前规则通道进行转换。最多4个通道,注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中。 一个ADC控制器有多个通道,这就涉及使用多个通道进行转换就涉及到一个先后顺序的问题了,毕竟规则转换通道只有一个数据寄存器。多个通道的使用顺序分为俩种情况:规则通道的转换顺序和注入通道的转换顺序。 规则通道转换顺序 规则通道中的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3,它们都是32位寄存器。SQR寄存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位SQx中写入相应的通道,这个通道就是第x个转换,通过SQR1寄存器就能了解其转换顺序在寄存器上的实现了。 注入通道转换顺序 和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个JSQR寄存器来控制,控制关系如下: 需要注意的是,只有当JL=4的时候,注入通道的转换顺序才会按照JSQ1、JSQ2、JSQ3、JSQ4的顺序执行。当JL |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |