打印

GD32F103RCT6读片上温度不正常

[复制链接]
1200|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
细雨6688|  楼主 | 2019-7-23 09:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这里是main中部分代码和ADC初始化函数,我在STM32F103ZET6开发板上读温度正常,用GD32F103读就高出来20度,什么原因呢?
while(1)

   {

     ad=0;

for(i=0;i<50;i++)

{

  ADC_SoftwareStartConvCmd(ADC1,ENABLE);

while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));

ad=ad+ADC_GetConversionValue(ADC1);

}

  

  ad=ad/50;

  temputure = (1.43-3.3/4095*ad)/0.0043+25;

  printf("温度 =%f\r\n",(1.43-3.3/4095*ad)/0.0043+25);//根据计算公式编写
void ADC_Configuration(void)

{

ADC_InitTypeDef ADC_InitStructure;



ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;

ADC_InitStructure.ADC_ScanConvMode=DISABLE;

ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;

ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel=1;



ADC_Init(ADC1,&ADC_InitStructure);



ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5);//温度传感器必须使用16通道,这是固定的

ADC_TempSensorVrefintCmd(ENABLE);//温度传感器使能



ADC_Cmd(ADC1,ENABLE);



ADC_ResetCalibration(ADC1);

while(ADC_GetResetCalibrationStatus(ADC1));



ADC_StartCalibration(ADC1);

while(ADC_GetCalibrationStatus(ADC1));



ADC_SoftwareStartConvCmd(ADC1,ENABLE);



}

使用特权

评论回复
沙发
sonicll| | 2019-7-24 09:48 | 只看该作者
你只有这一片芯片吗,换个芯片试试?ST和GD的手册里都写着不同芯片最大偏差45度。
“内部温度传感器更适合于检测温度的变化,而不是测量绝对的温度。如果需要测量精确的温度,应该使用一个外置的温度传感器。” ST手册里有这样的说明

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝