This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28027:内置于 TMS320F28027中的温度测量方法

Guru**** 2797815 points

Other Parts Discussed in Thread: TMS320F28027, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/862836/tms320f28027-temperature-measurement-method-built-into-tms320f28027

器件型号:TMS320F28027
主题中讨论的其他器件: C2000WARE

您好!

请告诉我 TMS320F28027中内置的温度测量方法。
代码如下:
#define getTempSlope ()(*(int (*)(void)) 0x3D7E80)()
#define getTempOffset()(*(int (*)(void)) 0x3D7E83)()
Int32   sensorSample、TempSensorOffset、TempSensorSlope、脱脂剂 C;
//配置 ADC 以对温度传感器进行采样
EALLOW;
AdcRegs.ADCCTL1.bit.TEMPCONV = 1;//Connect A5 -温度传感器
AdcRegs.ADCSOC0CTL.bit.CHSEL = 5;//将 SOC0设置为采样 A5
AdcRegs.ADCSOC1CTL.bit.CHSEL = 5;//将 SOC1设置为采样 A5
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;//将 SOC0 ACQPS 设置为7 ADCCLK
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;//将 SOC1 ACQPS 设置为7 ADCCLK
AdcRegs.INTSEL1N2.bit.INT1SEL = 1;//将 ADCINT1连接到 EOC1
AdcRegs.INTSEL1N2.bit.INT1E = 1;//启用 ADCINT1
EDIS;
//对温度传感器进行采样
AdcRegs.ADCSOCFRC1.ALL = 0x03;//采样温度传感器
while (AdcRegs.ADCINTFlG.bit.ADCINT1 = 0){}//等待 ADCINT1
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 ADCINT1
sensorSample = AdcResult.ADCRESULT1;//get 温度传感器采样结果
TempSensorOffset = getTempOffset();
TempSensorSlope = getTempSlope ();
//将原始温度传感器输出转换为温度(即 degC)
无符号值=(sensorSample - TempSensorOffset)* TempSensorSlope;

当执行上述代码时、变量值​​如下:
sensorSample = 2415
TempSensorOffset = 1607
TempSensorSlope = 5480

但我不知道转换为摄氏温度。
摄氏度=(2415-1607)* 5480 = 4427840
4427840/2 ^ 15 = 135.1 μ℃?

手册中的电压为3.3V、但这次使用2.495V 外部 REF。
转换方法是否如下?
sensorSample = 2415 * 2.495/3.3 = 1825
TempSensorOffset = 1607 * 2.495/3.3 = 1214
TempSensorSlope = 5480 * 2.495 / 3.3 = 4143

C =(1825-1214)* 4143 = 2531373

2531373/2 ^ 15 = 77.2℃?

两者都与℃̊ C 的环境温度有很大不同。
出什么问题了吗?

请注意、