
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
//-------------------------------------------------------//
// Project Code : ALE300K03-21-LGE-GEN2.0-BE-CPU2
// File Name : F28377D_TempSensor.cpp
// Created on : 2022. 12. 16.
// Description :
// Author : KimJeongWoo
// Last modified Date :
//-------------------------------------------------------//
#include "CommonLib.h"
#define FP_SCALE 32768 //Scale factor for Q15 fixed point numbers (2^15)
#define FP_ROUND FP_SCALE/2 //Added to Q15 numbers before converting to
//integer to round the number.
#define KELVIN 273 // Amount to add to Q15 fixed point numbers
// to shift from Celsius to Kelvin
// (Converting guarantees number is
// positive, which makes rounding more
// efficient)
#define KELVIN_OFF FP_SCALE*KELVIN
#define getTempSlope() (*(int (*)(void))0x7036E)() //Slope of temperature sensor
//(deg. C / ADC code).
//Stored in fixed point Q15
//format.
#define getTempOffset() (*(int (*)(void))0x70372)() //ADC code corresponding to
//temperature sensor output
//at 0 deg. C
float32 tempSensor_tempSlope;
float32 tempSensor_tempOffset;
float32 tempSensor_scaleFactor;
void InitDspTempSensor()
{
#ifdef CPU1
EALLOW;
AnalogSubsysRegs.TSNSCTL.bit.ENABLE = 1;
DEVICE_DELAY_US(1000);
EDIS;
tempSensor_scaleFactor = 3.0;
tempSensor_tempSlope = (int32)getTempSlope();
tempSensor_tempOffset = getTempOffset();
#endif
}
int16 GetTemperatureC(int16 sensorSample)
{
sensorSample = (int16) ((tempSensor_scaleFactor / 2.5) * (sensorSample));
return (((sensorSample - tempSensor_tempOffset) * tempSensor_tempSlope + FP_ROUND + KELVIN_OFF) / FP_SCALE - KELVIN);
}
int16 GetTemperatureK(int16 sensorSample)
{
sensorSample = (int16) ((tempSensor_scaleFactor / 2.5) * (sensorSample));
return (((sensorSample - tempSensor_tempOffset) * tempSensor_tempSlope + FP_ROUND + KELVIN_OFF) / FP_SCALE);
}