Other Parts Discussed in Thread: TMS320F28027, C2000WARE
主题中讨论的其他器件: 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 的环境温度有很大不同。
出什么问题了吗?
请注意、