EFM32JG系列MCU内部温度传感器使用方法
在很多电子类应用场合中,我们经常需要采集产品工作的周围环境温度,一般采取的方式有两种:
1)外加温度传感器
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 详细数据手册(英文) 详情>>>
看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。