程序上,打开STM32 CubeMX, 选择vbat和vrefint channel。 参数设置这里,其他按照默认设置(右对齐,12bit的精度),主要是通道数要改成2,分别对应vrefint和vbat。 然后生成代码。 工程文件中,可以看到配置了两个channel,采样精度时间都相同。 在main函数中代码 intmain(void){HAL_Init();SystemClock_Config();/* Initi...
VDDA = 3000mV x VREFINT_CAL ÷ VREFINT_DATA 以下是实作方式,首先设置CubeMX的ADC,打开Vrefint Channel。设置适当的ADC参数,因为STM32L152的ADC最大接受频率会随着MCU电压降低而降低,这个测试就先将ADC频率设置到最低电压能接受的最高频率。以下是STM32L152的ADC说明,关于频率的部分。设置适当的取样时间,须...
首先需要使能Vrefint Channel,如果需要其它通道也可以使能。其次需要使能ADC的看门狗,看门狗通道选择Vrefint,设置一下高/低门限值,使能看门狗中断模式,同时ADC的中断也要打开。这里的高/低门限是指,当ADC的采样值大于高门限或小于低门限时,ADC的看门狗中断将被触发。如果是用于掉电检测,只要关心高门限就行。正常时ADC采...
DMA_Cmd(DMA1_Channel1, ENABLE);// ADC内置温度传感器禁止 ADC_TempSensorVrefintCmd(DISABLE);/* ...
首先需要使能Vrefint Channel,如果需要其它通道也可以使能。 其次需要使能ADC的看门狗,看门狗通道选择Vrefint,设置一下高/低门限值,使能看门狗中断模式,同时ADC的中断也要打开。 这里的高/低门限是指,当ADC的采样值大于高门限或小于低门限时,ADC的看门狗中断将被触发。
很多STM32芯片里往往内置了专用的ADC通道,比方用来测量Vrefint,VBAT的分压或温度传感器的输出电压信号。不同系列所内置的模拟信号通道可能有差异。这里以STM32G4系列为例,它内置了对应于Vrefint,VBAT的三分之一分压和温度传感器的输出电压的专用模拟通道。
那么我就把它设置成: 1ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_239Cycles5);2ADC_RegularChannelConfig(ADC1,ADC_Channel_TempSensor,2,ADC_SampleTime_239Cycles5);3ADC_RegularChannelConfig(ADC1,ADC_Channel_Vrefint,3,ADC_SampleTime_239Cycles5);...
对于STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。 对于STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道 ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换...
这里使用的是软件触发(SWSTART ),所以设置这3 个位为111 。ADC_CR2 的SWSTART位用于开始规则通道的转换,我们每次转换(单次转换模式下)都需要向该位写 1 。AWDEN 为用于使能温度传感器Vrefint 。 ADC采样事件寄存器(ADC_SMPR1 和ADC_SMPR2 ) 这两个寄存器用于设置通道0~17的采样时间,每个通道占用3个位。
1、ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5); 2、ADC_TempSensorVrefintCmd(ENABLE); 依照上一节的程序,可以改写以下,形成现在的程序与效果: add.h和add.h(写成这种方式,原因与上一节一样) add.h的代码: #ifndef _ADD_H ...