Part Number:TMS320F28035
请教:TMS320F28035 ADC采用外部参考源3.0V如何计算CPU内部温度,offset值和slope值怎么计算呢
?? ?:
在线等
,
Yale Li:
我的建议还是使用内部参考电压会比较方便;
如果就是想用外部参考电压,offset可以通过在0℃时测量得出,slope可以通过如下公式换算,也可以通过测量整定。
内部
外部
,
?? ?:
芯片会发热 如何在0℃时测量?
,
Yale Li:
我已经询问了相关工程师:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1269685/tms320f28035-internal-temperature-sensor-using-external-reference-voltage
,
?? ?:
太感谢啦
,
Yale Li:
客气啦
你看一下那边的回复,他是以使用2.5V外部参考为例进行计算的。
如果使用的是3.0V外部参考,则
0℃ offset = 1750 * (3.0 / 3.3) = 1591 LSBs
slope = 5.56 * (3.0 / 3.3) = 5.05 LSBs
即 1 / 5.05 = 0.20 °C/LSB
,
?? ?:
似乎还是有些问题,以下是我的代码:
_iq15 temp,IQslope,IQslope30; Uint16 ofs,ofs30;IQslope = _IQ15(0.18);// ofs = 1750;//ofs30 = ofs*3.3/3.0; IQslope30 = _IQ15mpy( IQslope, _IQ15(3.3/3.0));temp = ((long)(AdcResult.ADCRESULT7 - ofs))<<15; temp = _IQ15mpy( temp, IQslope); chiptemperautre = _IQ15toF(temp);temp = ((long)(AdcResult.ADCRESULT7 - ofs30))<<15; temp = _IQ15mpy( temp, IQslope30); chiptemperautre30 = _IQ15toF(temp);我的外部参考电压是3.0v, 当使用3.0v参考电压时,chiptemperautre30大约为31,当切换到内部参考电压时(调试器修改寄存器位ADCREFSEL),chiptemperautre 大约为27。
用红外测温设备测得芯片表面温度为49度,环境温度为28度。手摸芯片表面能感觉到芯片发热,所以我觉得测量得到的温度不正常,是我的代码有问题吗?用的芯片是28035PNT。
,
?? ?:
当修改代码为:
IQslope =(*(int (*)(void))0x3D7E82)(); //_IQ15(0.18); ofs = (*(int (*)(void))0x3D7E85)();//1750;
使用外部电压参考时,chiptemperature30为61, 内部电压参考时chiptemperature为51。
所以,不知道哪个结果是正确的
,
Yale Li:
?? ? said:
当修改代码为:
IQslope =(*(int (*)(void))0x3D7E82)(); //_IQ15(0.18); ofs = (*(int (*)(void))0x3D7E85)();//1750;
?? ? said:内部电压参考时chiptemperature为51。
这个是正确的。
这个时候读IQslope与ofs是多少?
上一条回复的代码中,slope与offset的计算可以在代码外完成。
,
?? ?:
这种方法,内部电压参考和外部电压参考两种方法的结果为啥差别这么大? 相差了10摄氏度
,
Yale Li:
因为内部存储的offset和slope就是以内部基准为参考做的