【CW32L052测评】(学习笔记3)初始化adc,采集外部热敏电阻阻值计算温度。
[复制链接]
本帖最后由 yun_an 于 2023-8-9 21:15 编辑
继续在现有工程基础上完善,这次加入的部分是adc,通过下面这张图的原理,将热敏电阻外挂在cw32上,并用adc实时采样热敏电阻的电压,通过热敏电阻的温度,阻值关系表就可以求得实时的环境温度。这是热敏电阻外接原理图。
实物图(七拼八凑的元件。。。)为:
软件部分:
基本是用的例程代码,我只需要将热敏电阻一端接入相应的PA0脚即可,然后将获取到的adc值实时打印在OLED屏幕上。
static void msp_adc_init();
void adc_init( )
{
msp_adc_init();
ADC_InitTypeDef ADC_InitStruct;
__RCC_ADC_CLK_ENABLE();
ADC_InitStruct.ADC_AccEn = DISABLE;
ADC_InitStruct.ADC_Align = ADC_AlignRight;
ADC_InitStruct.ADC_ClkDiv = ADC_Clk_Div2; // ADCCLK=16MHz
ADC_InitStruct.ADC_InBufEn = DISABLE;
ADC_InitStruct.ADC_OpMode = ADC_SingleChOneMode;
ADC_InitStruct.ADC_SampleTime = ADC_SampTime5Clk;
ADC_InitStruct.ADC_TsEn = DISABLE;
ADC_InitStruct.ADC_VrefSel = ADC_Vref_VDDA;
ADC_Init(&ADC_InitStruct);
CW_ADC->CR1_f.CHMUX = 0; // PA00
ADC_Enable();
}
void msp_adc_init()
{
return;
}
int get_adc_value(void)
{
//printf("\r\n4.ADC Test Start\r\n");
ADC_SoftwareStartConvCmd(ENABLE);
while(CW_ADC->START_f.START);
//printf("ADC value = %d\r\n", CW_ADC->RESULT0);
return(CW_ADC->RESULT0);
}
下面是效果视频:
VID_20230809_210908
|