STM32F103 厂家没有吧内部基准电压写入指定的寄存器中,只能通过ADC1的指定通道按照一定的采样间隔进行读取。
一、采样间隔计算
手册规定读取内部基准电压的采样时间是5.1--17.1uS,
当我们MCU时钟是72MHz时,由于ADC时钟频率不能超过14MHz,所以需要对ADC时钟频率进行6分频,即:ADC时钟频率是12MHz
所以采样周期 5.1*12-12.5=48.7个周期 所以选择ADC采样周期55个周期 。
二、数据采样
采样前必须使能对应功能,采样完成后必须失能。
ADC_TempSensorVrefintCmd(ENABLE); //使能内部基准电压采样
/*
读取内部基准电压的采样时间是5.1--17.1uS,ADC时钟频率是12MHz 所以采样周期 5.1*12=61.2
61.2-12.5=48.7个周期 所以选择采样周期55个周期
*/
ADC_RegularChannelConfig(ADC1,17,1, ADC_SampleTime_55Cycles5 ); //ADC1,ADC通道,adc_num第几个转换,采样时间为239.5周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
Dat_Hex = ADC_GetConversionValue(ADC1); //返回内部基准电压的转换结果(16进制)
ADC_TempSensorVrefintCmd(DISABLE); //失能内部基准电压采样
三、数据验证