The purpose of the FlashTemp User Module is to provide a coarse temperature measurement of the die temperature for the FlashBlockWrite routine, which varies its programming pulse width with temperature. This functionality is accomplished with a single switch capacitor analog block, and requires no calibration to obtain in accuracy of +20C. In other words, the temperature measurement is very rough and should not be used for precise temperature measurement applications.
When using the FlashTemp user module, it is important that the clock specification is met. According to the datasheet, the minimum column clock frequency is 125kHz and the maximum column clock frequency is dependent on the CPU clock. (Column Clock)/4 < (CPU Clock)/100. If this specification is not met, you will get inaccurate temperature measurements.
The Reference must be set to (Vdd/2) + Vbg or Vbg + Vbg. It is also recommended to disable all other user module interrupts when measuring and reading the temperature using the FlashTemp_Start(), FlashTemo_fIsData(), and FlashTemp_cGetData() APIs.