在许多电子应用中,我们经常需要收集产品工作的周围环境温度,通常有两种方法:
2)采用MCU内部温度传感器
加上温度传感器会增加产品的成本和布板空间,所以在很多情况下,我们只需要使用内部温度传感器,今天与您分享内部温度传感器EFM32JG系列MCU使用方法和步骤。
EFM32JG的内部ADC集成在模拟模块中,内部温度传感器上的电压需要通过12bit ADC采集温度传感器ADC值,把ADC值转换成温度值。
第一步:ADC采集
设置需要收集内部温度传感器ADC这里要注意通道,ADC精度需要设置为12bit,内部选择参考源Vref 1.25V,选择内部温度传感器收集信号源。
第二步:读取内部出厂校准值
需要读取两个值:
1)校准温度值
calTemp0 = ((DEVINFO->CAL & _DEVINFO_CAL_TEMP_MASK)
/ >> _DEVINFO_CAL_TEMP_SHIFT);
2)校准温度在46度以下ADC值
calValue0 = ((DEVINFO->ADC0CAL3
/* _DEVINFO_ADC0CAL3_TEMPREAD1V25_MASK is not correct in
current CMSIS. This is a 12-bit value, not 16-bit. */
& 0xFFF0)
>> _DEVINFO_ADC0CAL3_TEMPREAD1V25_SHIFT);
第三步:根据实际环境ADC使用的值与校准值之间进行操作补偿,得出环境温度值
计算公式如下:
TCELSIUS = CAL_TEMP-(ADC0CAL3_TEMPREAD1V25 - ADC_result)×VFS /(4096× V_TS_SLOPE)
实现具体代码:
readDiff =calValue0/2 - adcSample;
temp=((float)readDiff * 1250);
temp/=(4096 * -1.835);
/* Calculate offset from calibration temperature */
temp =(float)calTemp0-temp;
Silicon Labs EFM32JG12 Jade Gecko 32位MCU数据手册详情>>>
Silicon Labs EFM32JG1 32 bit MCU 详细数据手册(英文)详情>>>
Silicon Labs Simplicity Studio平台开发工具