历史上的今天
今天是:2025年08月13日(星期三)
2019年08月13日 | STM32-(29):ADC模数转换(实验)
2019-08-13 来源:eefocus
ADC的重要寄存器介绍

AWDEN:在规则通道上开启模拟看门狗
该位由软件设置和清除。
0:在规则通道上禁用模拟看门狗
1:在规则通道上使用模拟看门狗
DUALMOD[3:0]:双模式选择
软件使用这些位选择操作模式
SCAN:扫描模式
该位由软件设置和清除,用于开启或关闭扫描模式。在扫描模式中,由ADC_SQRx或ADC_JSQRx寄存器选中的通道被转换。
0:关闭扫描模式
1:使用扫描模式
注:如果分别设置了EOCIE或JEOCIE位,只在最后一个通道转换完毕才会产生EOC或JEOC中断。
JEOCIE:允许产生注入通道转换结束中断
该位由软件设置和清除,用于禁止或允许所有注入通道转换结束后产生中断。
0:禁止JEOC中断
1:允许JEOC中断。当硬件设置JEOC位时产生中断。
EOCIE:允许产生EOC中断
该位由软件设置和清除,用于禁止或允许转换结束后产生中断。
0:禁止EOC中断
1:允许EOC中断。当硬件设置EOC位时产生中断。
AWDCH[4:0]:模拟看门狗通道选择位
注意:STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是相当于一个标准电压测量点,内部参照电压VREFINT只能出现在主ADC1中使用。
ADCON 位用于开关 AD 转换器。而 CONT 位用于设置是否进行连续转换,我们使用单次转换,所以 CONT 位必须为0。 CAL 和 RSTCAL 用于 AD 校准 。ALIGN用于设置数据对齐,我们使用右对齐,该位设置为0。
EXTSEL [2:0] 用于选择启动规则转换组转换的外部事件。
使用的是软件触发(SWSTART),所以设罝这3个位为111,ADC_CR2的SWSTART位用于开始规则通道的转换,我们每次转换(单次转换模式下)都需要向该位写1。TSVREFE为用于使能温度传感器和 Vref.

时间计算
对于毎个要转换的通道,采样时间建议尽量长一点,以获得较高的准确度,但是这样会降低ADC的转换速率,ADC的转换时间可以由下式计算:
Tcovn=采样时间+12.5个周期(12.5是量化周期,固定的,采用逐次逼近)
其中:Tcovn为总转换时间, 采样时间是根据毎个通道的SMP位的设置来决定的.例如,当ADCCLK=14Mhz的时候,并设置 1.5个周期的采样时间,则得到:Tcovn=l.5+12.5=14个周期=1 us. 采样越慢,精度越高,因为抗干扰能力越强。

ADC_SQR2、3是定义余下的转换

规则序列中的AD转化结果都被存在这个寄存器里面,而注入通道的转换结果被保存在ADC_JDRx里面。
该寄存器的数据可以通过 ADC_CR2的ALIGN 位设置左对齐还是右对齐,在读取数据的时候要注意。


实验
单次转换出电压数据,JP2跳到滑动电阻端,测量数据显示在数码管上。


** ADC2连接的是CPU上的PC5,输入通道15(IN15)**
简析:右下角的ADC2 是外部给的信号,JP2连接到滑动变阻器一端时,可以通过改变滑动变阻器的位置,改变出来的电压。R36的作用是限流,防止外部给的信号电流过大。VIN2是外部测量使用的,用于校对电压值是否准确。
ADC1扩展

ADC1与ADC2相比多了一个U5 数字电位器,可以将外部电压按比例降低,这样就可以测量更宽范围的电压。
代码:
main.c
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_lib.h" //包含了所有的头文件 它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。
#include void Delay_Ms(u16 time); void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); extern void ADC_Configuration(void); extern u16 Test_ConversionResult(void); extern void SMG_Init(void); extern void NumbTube_Display(u32 data,u8 radix_point); /* Private functions ---------------------------------------------------------*/ /******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { #ifdef DEBUG debug(); #endif u32 ConversionValue; RCC_Configuration(); //使能外设时钟 NVIC_Configuration(); SMG_Init(); //数码管初始化 ADC_Configuration(); //ADC初始化 // GPIO_Configuration(); //初始化GPIO管脚 while (1) { ConversionValue = (u32)Test_ConversionResult(); //ConversionValue = ConversionValue * 1000; NumbTube_Display(ConversionValue,4); //在数码管中显示,第二个参数4是指位数 } } /******************************************************************************* * Function Name : Delay_Ms * Description : delay 1 ms. * Input : time (ms) * Output : None * Return : None *******************************************************************************/ void Delay_Ms(u16 time) //延时函数 { u16 i,j; for(i=0;i
史海拾趣
|
图中,7805的输入1脚接12V外加电源,3脚输出5V电压,这个用万用表的电压档一测就知道了,但是它的输出电流最大是多少呢? 答案是输出电流随负载的变化而变化,可是电流不能无限小和无限大吧?所以输出电流必定有个最小值和最大值。 ...… 查看全部问答> |
|
我的VS2005怎么了?新建工程不行,打开工程不行(只限智能设备工程),报这样的错误"从用户数据存储中检索信息时出错。XML文档必须包含一个顶层元素".好怪! 我的VS2005怎么了?新建工程不行,打开工程不行(只限智能设备工程),报这样的错误\"从用户数据存储中检索信息时出错。XML文档必须包含一个顶层元素\".好怪!… 查看全部问答> |
|
VISTA系统下安装 Tornado2.0后,运行时总出现 gdb error,是什么原因? 运行Tornado时,总弹出好几个错误的对话框,标题为 gdb error! 内容为:Failed to register COM Server. Error code = ox8002801c 将对话框点掉之后 Tornado 就启动起来了,运行还算正常,但每次一启动就出 ...… 查看全部问答> |
|
要求做一个动画控件。功能描述如下: 根据调用者的要求,决定图片显示的快慢,以及多少张图片循环显示以实现动画功能,同时根据图片要能自我缩放以匹配控件大小。控件大小由调用者决定! 有没有谁写过啊?各位达人救救我啊… 查看全部问答> |
|
本报讯: 日前,记者从国内著名的IT培训公司北大青鸟APTECH获悉,进入9月份以来,在一些城市出现了大量刚入学大学新生前来咨询职业培训,甚至已有人报名参加相关课程培训,在某些培训中心,这类刚入学大学新生在本阶段招生中已占到相当比例。IT职业 ...… 查看全部问答> |
|
有谁做过TI的430以太网,就是easyweb那个解决方案,我的cs8900A始终不能初始化,在这个循环里跳不出来: do Write8900(ADD_PORT, PP_SelfST); // set register while (!(Read8900(DATA_PORT) & INIT_DONE)); // wait un ...… 查看全部问答> |
|
【MSP430共享】 MC430F224例程:Keys+LED演示 【例 程】://基于MC430F224开发板实验例程//软件:IAR Embedded Workbench Version: 3.42A//编写:微控设计网 www.Microcontrol.cn DC//目标板: MC430F224开发板 V1.0#include \"msp430x22x4.h\"//初级用户要习惯采用宏定义,以方便的编写 ...… 查看全部问答> |
|
用msp430读写24c512程序 /*************************************************************文件名:msp430f169i2c.c*整体描述:MSP430F169单片机硬件IIC软件,字节方式,主方式* IIC接口:P3.3=SCL,P3.1=SDA;(开漏输出)* 相应寄存器:地址寄存器 I2C ...… 查看全部问答> |




