KE02: Bandgap Reference: Temperature Characterization

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

KE02: Bandgap Reference: Temperature Characterization

跳至解决方案
1,818 次查看
colin_campbell
Contributor II

Hi NXP,

The KE02 includes a Bandgap Reference with a nominal trimmed value of 1.16 Vdc at 25C, but the Data Sheet (Rev.5, 01/2019) provides no indication on its value over the operating temperature range of the device (we are using the MKE02Z64VFM4) – could you please provide a response to the following questions:

  1. What is the expected range of Bandgap Reference values at the maximum ambient operating temperature of 105C (e.g. 25C Nominal +/- 2%)?
  2. What is the Temperature Coefficient of the Bandgap Reference?
  3. Do you have an Application Note providing details of a KE02 based Internal Temperature Measurement carried out using the Bandgap Reference?

Thank you for the assistance - CC

标记 (1)
0 项奖励
回复
1 解答
1,697 次查看
mjbcswitzerland
Specialist V

Hi

For temperature sensing one normally uses the temperature sensor in the 12 bit ADC rather than the band-gap reference (which is usually designed to be as temperature insensitive as possible).

The ADC temperature sensor is specified:

pastedImage_1.png

and reference code to convert to temperature is

                    #define VTEMP_25_16BIT               ((VTEMP_25_MV * 0xffff) / ADC_REFERENCE_VOLTAGE)
                    #define VTEMP_25_12BIT               (VTEMP_25_16BIT >> 4)
                    #define VTEMP_25_10BIT               (VTEMP_25_16BIT >> 6)
                    #define TEMP_SENSOR_SLOPE_100_16BIT  ((TEMP_SENSOR_SLOPE_UV * 0xffff)/(10 * ADC_REFERENCE_VOLTAGE))
                    #define TEMP_SENSOR_SLOPE_100_12BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 4)
                    #define TEMP_SENSOR_SLOPE_100_10BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 6)
                    if (ADC_TRIGGER == ucInputMessage[MSG_INTERRUPT_EVENT]) { // convert the ADC reading to a temperature
                        signed short ssDifference = (results.sADC_value[0] - VTEMP_25_12BIT); // convert references to 12 bit values
                        signed long slTemperature100 = (2550 - ((ssDifference * 10000) / TEMP_SENSOR_SLOPE_100_12BIT)); // the approximate temperature *100, rounded up/down
                        slTemperature100 /= 100;                         // the approximate temperature rounded up/down to 1°C
                        fnDebugDec(slTemperature100, DISPLAY_NEGATIVE);
                        fnDebugMsg(" degC\r\n");
                    }

where (for KE02)

#define ADC_REFERENCE_VOLTAGE                  5000                  // ADC uses 5.0V reference

#define VTEMP_25_MV                 1396                             // typical internal temperature sensor reference voltage (in mV) (5.0V VDD/VREF and < 3MHz ADC clock speed)
#define TEMP_SENSOR_SLOPE_UV        3260                             // typical internal temperature sensor slope uV/°C (5.0V VDD/VREF and < 3MHz ADC clock speed)

Regards

Mark

Complete Kinetis solutions for faster/more efficient professional needs, training and support: http://www.utasker.com/kinetis.html
i.MX RT project compatibility: http://www.utasker.com/iMX.html
Including FreeRTOS integration for all Kinetis parts

Kinetis KE:
- http://www.utasker.com/kinetis/FRDM-KE02Z.html
- http://www.utasker.com/kinetis/FRDM-KE02Z40M.html
- http://www.utasker.com/kinetis/FRDM-KE04Z.html
- http://www.utasker.com/kinetis/FRDM-KE06Z.html
- http://www.utasker.com/kinetis/FRDM-KE15Z.html

uTasker: supporting >1'000 registered Kinetis users get products faster and cheaper to market

Request Free emergency remote desk-top consulting at http://www.utasker.com/services.html

Open Source version at https://github.com/uTasker/uTasker-Kinetis

https://community.nxp.com/thread/512558
https://community.nxp.com/thread/352862
https://community.nxp.com/thread/498809

在原帖中查看解决方案

2 回复数
1,698 次查看
mjbcswitzerland
Specialist V

Hi

For temperature sensing one normally uses the temperature sensor in the 12 bit ADC rather than the band-gap reference (which is usually designed to be as temperature insensitive as possible).

The ADC temperature sensor is specified:

pastedImage_1.png

and reference code to convert to temperature is

                    #define VTEMP_25_16BIT               ((VTEMP_25_MV * 0xffff) / ADC_REFERENCE_VOLTAGE)
                    #define VTEMP_25_12BIT               (VTEMP_25_16BIT >> 4)
                    #define VTEMP_25_10BIT               (VTEMP_25_16BIT >> 6)
                    #define TEMP_SENSOR_SLOPE_100_16BIT  ((TEMP_SENSOR_SLOPE_UV * 0xffff)/(10 * ADC_REFERENCE_VOLTAGE))
                    #define TEMP_SENSOR_SLOPE_100_12BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 4)
                    #define TEMP_SENSOR_SLOPE_100_10BIT  (TEMP_SENSOR_SLOPE_100_16BIT >> 6)
                    if (ADC_TRIGGER == ucInputMessage[MSG_INTERRUPT_EVENT]) { // convert the ADC reading to a temperature
                        signed short ssDifference = (results.sADC_value[0] - VTEMP_25_12BIT); // convert references to 12 bit values
                        signed long slTemperature100 = (2550 - ((ssDifference * 10000) / TEMP_SENSOR_SLOPE_100_12BIT)); // the approximate temperature *100, rounded up/down
                        slTemperature100 /= 100;                         // the approximate temperature rounded up/down to 1°C
                        fnDebugDec(slTemperature100, DISPLAY_NEGATIVE);
                        fnDebugMsg(" degC\r\n");
                    }

where (for KE02)

#define ADC_REFERENCE_VOLTAGE                  5000                  // ADC uses 5.0V reference

#define VTEMP_25_MV                 1396                             // typical internal temperature sensor reference voltage (in mV) (5.0V VDD/VREF and < 3MHz ADC clock speed)
#define TEMP_SENSOR_SLOPE_UV        3260                             // typical internal temperature sensor slope uV/°C (5.0V VDD/VREF and < 3MHz ADC clock speed)

Regards

Mark

Complete Kinetis solutions for faster/more efficient professional needs, training and support: http://www.utasker.com/kinetis.html
i.MX RT project compatibility: http://www.utasker.com/iMX.html
Including FreeRTOS integration for all Kinetis parts

Kinetis KE:
- http://www.utasker.com/kinetis/FRDM-KE02Z.html
- http://www.utasker.com/kinetis/FRDM-KE02Z40M.html
- http://www.utasker.com/kinetis/FRDM-KE04Z.html
- http://www.utasker.com/kinetis/FRDM-KE06Z.html
- http://www.utasker.com/kinetis/FRDM-KE15Z.html

uTasker: supporting >1'000 registered Kinetis users get products faster and cheaper to market

Request Free emergency remote desk-top consulting at http://www.utasker.com/services.html

Open Source version at https://github.com/uTasker/uTasker-Kinetis

https://community.nxp.com/thread/512558
https://community.nxp.com/thread/352862
https://community.nxp.com/thread/498809

1,697 次查看
colin_campbell
Contributor II

Hi Mark,

Thanks for the quick update and reference code - that all makes sense.

CC

0 项奖励
回复