Freescale Semiconductor FXTH87 12 Series, FXTH87 11 Series Firmware User Manual

Freescale Semiconductor Document Number: FXTH87XX1XFWUG
User Guide Rev. 2.1, 10/2014

FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide

1 Introduction

This document describes the embedded firmware found in all derivatives of the FXTH87xx11 and FXTH87xx12 devices.
The intended audience for this document is firmware architects, developers, coders and/or testers working with the FXTH87xx11 and FXTH87xx12 devices.
This document is divided into three sections: This introduction, a section describing global variables and standard formats used throughout the functions, and a third section describing each function.

2 Globals and formats

2.1 Global variables

Table 1 summarizes all global variables used by
Freescale firmware and their locations. Developers must account for these variables when creating new user firmware.
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Globals and formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.1 Global variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.2 Measurement error format. . . . . . . . . . . . . . . . . . . . 3
2.3 Universal Uncompensated Measurement Array
(UUMA) format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Simulated SPI interface Signal Format . . . . . . . . . . 6
2.5 Rapid Decompression Event Array
(T_RDE) Format . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 LFR registers initialized by firmware . . . . . . . . . . . . 8
3 Firmware Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1 Firmware jump table . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Function description . . . . . . . . . . . . . . . . . . . . . . . 11
© 2014 Freescale Semiconductor, Inc. All rights reserved.
Globals and formats
Table 1. Global variables and their locations
Name Address Reference
TPMS_CONT_ACCEL_GLOBAL_VARIABLE $8E Section 2.1.2
TPMS_INTERRUPT_FLAG $8F Section 2.1.1

2.1.1 TPMS_INTERRUPT_FLAG

This global variable keeps track of interrupts that have occurred. FXTH87xx11 and FXTH87xx12 Embedded Firmware uses it to keep track of expected interrupts. It can also be utilized by the user for its own purposes.
The TPMS_INTERRUPT_FLAG is not cleared automatically. Users must clear this variable after power-on-reset.
Table 2 shows the TPMS_INTERRUPT_FLAG format. The trigger condition column describes what is
necessary for that flag to be set.
Table 2. TPMS_INTERRUPT_FLAG format and trigger conditions
Flag BIT Trigger condition
LVD Interrupt 7 LVD interrupt entered.
PWU Interrupt 6 PWU interrupt entered.
TOF Interrupt 5 TOF interrupt entered.
LFR Error Interrupt 4 LFR interrupt entered and LFERF bit of the LFS register is set.
ADC Interrupt 3 ADC interrupt entered.
LFR Interrupt 2 LFR interrupt entered and LFERF bit of the LFS register is clear.
RTI Interrupt 1 RTI interrupt entered.
KBI Interrupt 0 KBI interrupt entered.
TPMS_INTERRUPT_FLAG is 1 byte long and is located at address $8F. Users must account for this variable when developing for the FXTH87xx11 and FXTH87xx12.

2.1.2 TPMS_CONT_ACCEL_GLOBAL_VARIABLE

TPMS_CONT_ACCEL_GLOBAL_VARIABLE is 1 byte long and is located at address $8E. Users must account for this variable when developing for the contents of said variable as long as it is not overwritten. It is used internally by the TPMS_READ_ACCEL family of functions and its purpose it to communicate the next measurement’s sampling rate when the u8Avg argument is set to a value greater than 2.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
2 Freescale Semiconductor, Inc.
FXTH87xx11 and FXTH87xx12, and can ignore the
Globals and formats

2.2 Measurement error format

2.2.1 Definition of Signal Ranges

Each measured parameter (pressure, voltage, temperature, and acceleration) results from an ADC conversion of an analog signal. This ADC result may then be passed by the firmware to the application software as either the raw ADC result or further compensated and scaled for an output between one and the maximum digital value minus one. The minimum digital value of zero and the maximum digital value are reserved as error codes.
The signal ranges and their significant data points are shown in Figure 1. In this definition the signal source would normally output a signal between S variations this signal may increase its range to S the supply rails, so that the ADC will convert it to a range of digital numbers between 0 and 1023 (or 0 and 4095 in the case of temperature readings). These digital numbers will have corresponding D D
INHI
, D
INMAX
values. The ADC digital value is taken by the firmware and compensated and scaled to
give the required output code range.
INLO
and S
INMIN
. Due to process, temperature and voltage
INHI
to S
INMAX
. In all cases the signal will be between
INMIN
, D
INLO
,
Digital input values below D
INMIN
and above D
INMAX
are immediately flagged as being out of range and
generate error bits and the output is forced to the corresponding railed-high or railed-low values. Digital values below D
(but above D
INLO
INMIN
) or above D
(but not D
INHI
INMAX
) will most likely cause an output that would be less than 1 or greater than 510, respectively . These cases are considered underflow or overflow , respectively. Underflow results will be forced to a value of 1. Overflow results will be forced to a value of 510.
Digital values between D
INLO
and D
will normally produce an output between 1 to 510 (for a 9-bit
INHI
result). In some isolated cases due to compensation calculations and rounding the result may be less than 1 or greater than 510, in which case the underflow and overflow rule mentioned above is used.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 3
Globals and formats
SENSOR ANALOG
ADC RAW
DIGITAL
CALCULATED
DIGITAL
(9-BIT EXAMPLE)
(10-BIT CONVERSION)
VOLTAGE
SIGNAL
SOURCE
ADC
FIRMWARE
ROUTINE
511 510
0
1
256
0
1023
512
V
DD
/2
V
DD
V
DD
S
INMAX
S
INHI
S
INMIN
S
INLO
D
INMAX
D
INHI
D
INLO
D
INMIN
NORMAL CASE
UNDERFLOW
LOWER ERROR CASE
FORCE OUTPUT TO ZERO
CASE
OVERFLOW
CASE
FORCE OUTPUT TO 511
UPPER ERROR CASE
Figure 1. Measurement Signal Range Definitions
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
4 Freescale Semiconductor, Inc.
Globals and formats

2.2.2 Error Status Format

FXTH87xx11 and FXTH87xx12 Embedded Firmware functions that return a status byte commonly do so using the error fields described in Table 3.
Table 3. Error Status Fields
Field Description
ADC Error - This status bit indicates an error was detected when performing an ADC test within the
BIT7 - ADCERR
BIT6 - TERR
BIT5 - VERR
BIT4 - AZERR
BIT3 - AXERR
BIT2 - PERR
BIT1 - BONDERR
BIT0 - OVFLOW
TPMS_WIRE_AND_ADC_CHECK routine. 0 ADC operating as expected. 1 ADC returned unexpected reading.
Temperature Measurement Error- This status bit indicates an error was detected by a ADC reading of the temperature sensor that is outside of the normally accepted range.
0 Temperature error not detected in last firmware subroutine call. 1 Temperature error detected in last firmware subroutine call.
Voltage Measurement Error- This status bit indicates an error was detected by a ADC reading of the voltage reference that is outside of the normally accepted range.
0 Voltage error not detected in last firmware subroutine call. 1 Voltage error detected in last firmware subroutine call.
Z-Axis Accelerometer Measurement Error (if applicable)- This status bit indicates an error was detected by a bonding wire failure to the g-cell or a ADC reading of the Z-axis accelerometer that is outside of the normally accepted range.
0 Acceleration error not detected in last firmware subroutine call. 1 Acceleration error detected in last firmware subroutine call.
X- Axis Accelerometer Measurement Error (if applicable)- This status bit indicates an error was detected by a bonding wire failure to the g-cell or a ADC reading of the X-axis accelerometer that is outside of the normally accepted range.
0 Acceleration error not detected in last firmware subroutine call. 1 Acceleration error detected in last firmware subroutine call.
Pressure Measurement Error- This status bit indicates an error was detected by a parity fault in the P-Chip trim, bonding wire failure to the P-Chip or a ADC reading of the pressure that is outside of the normally accepted range.
0 Pressure error not detected in last firmware subroutine call. 1 Pressure error detected in last firmware subroutine call.
Bond Wire Error- This status bit indicates an error was detected in any of the bond wire checks of the g-cell or P-cell.
0 Bond wire error not detected in last firmware subroutine call. 1 Bond wire error detected in last firmware subroutine call
Calculation Overflow/Underflow- This status bit indicates that a compensated measurement of pressure, temperature, voltage or acceleration resulted in a digital output code outside of the expected range. The output value will be clipped to the nearest highest or lowest allowed value and the status bit will be set.
0 Overflow/underflow not detected in last firmware subroutine call. 1 Overflow/underflow detected in last firmware subroutine call.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 5
Globals and formats

2.3 Universal Uncompensated Measurement Array (UUMA) format

The FXTH87xx11 and FXTH87xx12’s measurement routines are divided into two subsets: routines that return uncompensated measurements, and routines that take uncompensated measurements as arguments and return compensated measurements.
In order to be consistent and keep the number of CPU cycles down, all uncompensated measurement routines will return data following the array format described in Table 4, and all compensating routines will take data from the same array.
Table 4. Universal Uncompensated Measurement Array
Index Content
0 Uncompensated Voltage
1 Uncompensated Temperature
2 Uncompensated Pressure
3 Uncompensated X-Axis Acceleration
4 Uncompensated Z-Axis Acceleration
This array is referred to as Universal Uncompensated Measurement Array (UUMA). It can be located anywhere the user decides.
Each element must be 16-bits long (two bytes) regardless of what the actual bit-width of the measurement is.
Each individual uncompensated measurement routine will only update its corresponding item. For example, calling the TPMS_READ_VOL TAGE routine will only modify the voltage element of the array . The rest will remain unchanged.
Compensation routines do not modify any elements in the UUMA.

2.4 Simulated SPI interface Signal Format

The FXTH87xx11 and FXTH87xx12 include three routines (TPMS_MSG_INIT, TPMS_MSG_READ and TPMS_MSG_WRITE) that, when used together, allow the user to perform serial communication with the device through a simulated SPI interface.
The following assumptions are made:
Only two pins are used: PTA0 for data (both incoming and outgoing) and PTA1 for clock. No slave select is included by default, but the user may use any other pin if required.
The data pin has a pull-up resistor enabled.
The FXTH87xx11 and FXTH87xx12 will be a master device (the FXTH87xx1 1 and FXTH87xx12 will provide the clock).
Data can be read/written 8-bits at a time.
Speed of the interface is dependant on bus clock settings.
Data is transferred MSB first.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
6 Freescale Semiconductor, Inc.
Globals and formats
PTA0
PTA1
Write MSB
...
Write Write WriteRead Read Read
Write LSB
Read MSB
Write Read Read
LSB
...
A single line will be used for both sending and receiving data (BIDIROE = SET according to Freescale nomenclature).
— At the clock’ s rising edge, the master will place data on the pin. It will be valid until the clock’ s
falling edge. The slave must not drive the line during this period.
— At the clock’s falling edge, the master will make the data pin an input and will “listen” for data.
The slave must then place data on the data line until the clock’s rising edge.
Clock Polarity = 0 (Normally low).
Clock Phase = 1 (First half is high).
Figure 2 shows the details of the simulated SPI interface.
Figure 2. Description of the physical layer on the FXTH87xx11 and FXTH87xx12 Simulated SPI interface
For further information on the use of the Simulated SPI interface routines, refer to Section 3.2.30,
Section 3.2.31, and Section 3.2.32.

2.5 Rapid Decompression Event Array (T_RDE) Format

The FXTH87xx11 and FXTH87xx12 includes a routine called TPMS_RDE_ADJUST_PRESSURE that requires a pointer to an array of elements using a custom format called T_RDE. Said format is easily manageable using a typedef instruction as shown in Example 1.
Example 1. Sample typedef for a T_RDE array
typedef struct { UINT16 u16CompPress; /* I/O 9-bit Compensated pressure reading */ UINT8 u8ElapsedTime; /* I Elapsed time from previous reading */ UINT16 u16WAvg; /* O Weighed average for running pressure */ UINT8 u8PRes; /* O 8-bit pressure reserve value */ UINT8 u8PMin; /* O 8-bit minimum pressure value */ UINT8 u8RDEStatusFlags; /* O Contains flags for Plock and RDE Event */ UINT16 u16RDEBailTimeOut; /* O Seconds to 60 mins bail-out */ UINT8 u8RDETimeToAvg; /* O Seconds to next averaging event */ } T_RDE;
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 7
Globals and formats
As shown by the comments, only the u16CompPress and u8ElapsedTime elements of this array should be edited by the user; the rest will be updated by the TPMS_RDE_ADJUST_PRESSURE function.
In order for TPMS_RDE_ADJUST_PRESSURE to work correctly , the T_RDE variable must be declared as a global and must reside in an NVM location.
For more information on TPMS_RDE_ADJUST_PRESSURE, refer to Section 3.2.47.

2.6 LFR registers initialized by firmware

Some LFR registers are touched by firmware when taking the reset vector and before giving control to the user. The goal of this action is to configure the LFR module in the best-known configuration for Manchester-encoded reception.
LFR registers will be configured differently depending on the user-selected sensitivity. Table 5 and
Table 6 describe these settings.
Table 5. Customer-configurable TPMS7 LF Registers with SENS = 1
Page-0 Bit name
Register name 7 6 5 4 3 2 1 0
LFCTL1 LFEN SRES CARMOD PAGE IDSEL SENS
LFCTL2 LFSTM LFONTM
LFCTL3 LFDO TOGMOD SYNC LFCDTM
LFCTL4 LFDRIE LFERIE LFCDIE LFIDIE DECEN VALEN TIMOUT
LFS LFDRF LFERF LFCDF LFIDF LFOVF LFEOMF LPSM LFIAK
LFDATA RXDATA
LFIDL ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0
LFIDH ID15 ID14 ID13 ID12 ID11 ID10 ID9 ID8
Page-1 Bit name
Register name 7 6 5 4 3 2 1 0
LFCTL1 LFEN SRES CARMOD PAGE IDSEL SENS = 1
LFCTRLE
LFCTRLD
LFCTRLC
LFCTRLB
LFCTRLA
TRIM1
TRIM2
0 0 0
1 0DEQS1 1 1 0 0
0 0 0 1 AZEN LOWQ DEQEN
1 1 LFFAF LFCAF LFPOL 1 1 0
—LFCC
Shaded cells show register touched by firmware; loaded value is displayed.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
8 Freescale Semiconductor, Inc.
Globals and formats
Table 6. Customer-configurable TMPS and LF Register with SENS = 2
Page-0 Bit name
Register name 7 6 5 4 3 2 1 0
LFCTL1 LFEN SRES CARMOD PAGE IDSEL SENS
LFCTL2 LFSTM LFONTM
LFCTL3 LFDO TOGMOD SYNC LFCDTM
LFCTL4 LFDRIE LFERIE LFCDIE LFIDIE DECEN VALEN TIMOUT
LFS LFDRF LFERF LFCDF LFIDF LFOVF LFEOMF LPSM LFIAK
LFDATA RXDATA
LFIDL ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0
LFIDH ID15 ID14 ID13 ID12 ID11 ID10 ID9 ID8
Page-1 Bit name
Register name 7 6 5 4 3 2 1 0
LFCTL1 LFEN SRES CARMOD PAGE IDSEL SENS = 2
LFCTRLE
LFCTRLD
LFCTRLC
LFCTRLB
LFCTRLA
TRIM1
TRIM2
0 0 0
1 0DEQS1 1 1 0 0
0 0 0 1 AZEN LOWQ DEQEN
1 1 LFFAF LFCAF LFPOL 1 1 0
—LFCC
Shaded cells show register touched by firmware; loaded value is displayed.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 9
Firmware Functions

3 Firmware Functions

3.1 Firmware jump table

The FXTH87xx11 and FXTH87xx12 devices contain an embedded firmware function jump table to allow programmers to reference any function through a function pointer to an absolute address. This helps isolate Freescale firmware from the user’s application. Table 7 shows a list of all firmware functions and their address.
For a description of how to implement pointers to fixed addresses using the C language, please refer to Manual_Compiler_HC08.pdf (part of the CodeWarrior package).
Table 7. FXTH87xx11 and FXTH87x x12’s Firmware Function jump table
Absolute Address Return type Function
$E000 void TPMS_RESET
$E003 UINT8 TPMS_READ_VOLTAGE
$E006 UINT8 TPMS_COMP_VOLTAGE
$E009 UINT8 TPMS_READ_TEMPERATURE
$E00C UINT8 TPMS_COMP_TEMPERATURE
$E00F UINT8 TPMS_READ_PRESSURE
$E012 UINT8 TPMS_COMP_PRESSURE
$E015 UINT8 TPMS_READ_ACCELERATION_X
$E018 UINT8 TPMS_READ_DYNAMIC_ACCEL_X
$E01B UINT8 TPMS_COMP_ACCELERATION_X
$E01E UINT8 TPMS_READ_ACCELERATION_Z
$E021 UINT8 TPMS_READ_DYNAMIC_ACCEL_Z
$E024 UINT8 TPMS_COMP_ACCELERATION_Z
$E027 UINT8 TPMS_READ_ACCELERATION_XZ
$E02A UINT8 TPMS_READ_DYNAMIC_ACCEL_XZ
$E02D UINT8 TPMS_COMP_ACCELERATION_XZ
$E030 UINT8 TPMS_READ_V0
$E033 UINT8 TPMS_READ_V1
$E036 UINT8 TPMS_LFOCAL
$E039 UINT8 TPMS_MFOCAL
$E03C void TPMS_RF_ENABLE
$E03F void TPMS_RF_RESET
$E042 void TPMS_RF_READ_DATA
$E045 void TPMS_RF_READ_DATA_REVERSE
$E048 void TPMS_RF_WRITE_DATA
$E04B void TPMS_RF_WRITE_DATA_REVERSE
$E04E void TPMS_RF_CONFIG_DATA
$E051 Reserved
$E054 void TPMS_RF_SET_TX
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
10 Freescale Semiconductor, Inc.
Table 7. FXTH87xx11 and FXTH87xx12’s Firmware Function jump table (continued)
Absolute Address Return type Function
$E057 void TPMS_RF_DYNAMIC_POWER
$E05A void TPMS_MSG_INIT
$E05D UINT8 TPMS_MSG_READ
$E060 UINT8 TPMS_MSG_WRITE
$E063 UINT8 TPMS_CHECKSUM_XOR
$E066 UINT8 TPMS_CRC8
$E069 UINT16 TPMS_CRC16
$E06C UINT16 TPMS_SQUARE_ROOT
$E06F void TPMS_READ_ID
$E072 void TPMS_LF_ENABLE
$E075 UINT8 TPMS_LF_READ_DATA
$E078 UINT8 TPMS_WIRE_AND_ADC_CHECK
$E07B void TPMS_FLASH_WRITE
$E07E UINT16 TPMS_FLASH_CHECK
$E081 UINT8 TPMS_FLASH_ERASE
$E084 UINT8 TPMS_FLASH_PROTECTION
$E087 Reserved
$E08A void TPMS_MULT_SIGN_INT16
$E08D UINT16 TPMS_WAVG
$E090 UINT8 TPMS_RDE_ADJUST_PRESSURE
Firmware Functions

3.2 Function description

The following function descriptions include stack sizes and approximate duration. Stack sizes have been calculated by executing each routine and measuring the amount of memory utilized.
Unless noted, they represent the maximum stack the function will utilize. Duration estimates are performed on one part at room temperature. They are intended to serve as a
guideline for typical execution time.

3.2.1 void TPMS_RESET(void)

Description: This function is called when taking the reset vector. It will reset the Stack Pointer to the last RAM location and jump to the location stored by the user in $DFFE:DFFF. No further initialization is performed.
Stack size: 3 bytes
Power Management: This function executes entirely in RUN mode.
Interrupt Management: This function does not await interrupts. It is not affected by interrupts either.
Resources: Stack
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 11
Firmware Functions
Input Parameters: — None
Returns:
— void

3.2.2 UINT8 TPMS_READ_VOLTAGE(UINT16 *u16UUMA)

Description: Performs a 10-bit uncompensated voltage measurement and places it in the UUMA. While waiting for the ADC to converge, this function goes into STOP4. If the ADC, for an unexpected reason, fails to converge, this function has a built-in time-out: After five continuous non-ADC interrupts, the function will assume a failed ADC reading, flag it accordingly, and exit.
— If the ADC value is over or under the normal operating condition, the “voltage error” status flag
will be set. The expected voltage result will be forced to either “0” or “1023.” (rail high or rail
low). — If the ADC times out with no result, the “ADC error” status flag will be set. — Measurements below 2.1 V are not guaranteed for accuracy.
Stack size: 22 bytes
Approx. Duration: 102 usec
Power Management: This function requires the core to be configured for STOP4 mode and
running at full bus speed.
Interrupt Management: This function utilizes the ADC interrupt to wake-up from STOP mode.
Resources: ADC, bandgap.
Input Parameters:
— UINT16 *u16UUMA: Pointer to Universal Uncompensated Measurement Array (as described
in Section 2.3). Only the 10-bit uncompensated voltage result will be updated.
Returns:
— UINT8 u8Status: Valid error flags/outputs are described in Table 8.
Table 8. Valid output conditions for TPMS_READ_VOLTAGE
u8Status Value Measurement Value Condition
$20 $03FF Uncompensated voltage reading outside of valid range (high).
$20 $0000 Uncompensated voltage reading outside of valid range (low).
$80 Undefined Uncompensated voltage reading not acquired.
$00 Between $0001 - $03FE Valid uncompensated voltage reading.
WARNING
The Bandgap bit (BIT0 in the SPMSC1 register) must be set prior to calling this function for results to be valid.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
12 Freescale Semiconductor, Inc.
Firmware Functions

3.2.3 UINT8 TPMS_COMP_VOLTAGE(UINT8 *u8CompVoltage, *UINT16 u16UUMA)

Description: Performs an 8-bit compensated voltage measurement. It is the user’s responsibility
to ensure that updated and valid uncompensated voltage reading is available in the UUMA for this routine to return a meaningful value.
— If Vout < 2.1 V, u8Voltage will be 1 and the “over/underflow” status flag will be set. — Measurements below 2.1 V are not guaranteed for accuracy. — If Vout 3.7 V, result will be $FE and the “over/underflow” status flag will be set. — For repeatability data, refer to the FXTH87xxxx family of data sheets.
Stack size: 31 bytes
Approx. Duration: 204 usec
Power Management: This function executes entirely in RUN mode.
Interrupt Management: This function does not await interrupts. It is not affected by interrupts
either.
Resources: UUMA
Input Parameters:
— UINT8 *u8Voltage: Updated 8-bit compensated voltage result. — UINT16 *u16UUMA: Pointer to Universal Uncompensated Measurement Array (as described
in Section 2.3). Uncompensated voltage will be utilized from this array.
Returns:
— UINT8 u8Status: Valid error flags/outputs are described in Table 9.
Table 9. Valid output conditions for TPMS_COMP_VOLTAGE
u8Status Value Measurement Value Condition
$01 $FE Compensated voltage reading outside of valid range (high).
$01 $01 Compensated voltage reading outside of valid range (low).
$00 Between $01 - $FE Valid compensated voltage reading.

3.2.4 UINT8 TPMS_READ_TEMPERATURE(UINT16 *u16UUMA)

Description: Performs a 12-bit uncompensated temperature measurement and places it in the
UUMA. While waiting for the ADC to converge, this function goes into STOP4. If the ADC, for an unexpected reason, fails to converge, this function has a built-in time-out: After five continuous non-ADC interrupts, the function will assume a failed ADC reading, flag it accordingly, and exit.
— If the ADC value is over or under the normal operating condition, the “temperature error” status
flag will be set. The expected temperature result will be forced to either “0” or “4095.” (rail high or rail low). If the LVWF (Low Voltage Warning Flag) hardware bit is set, it will flag it accordingly as well.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
Freescale Semiconductor, Inc. 13
Firmware Functions
— If the ADC value is over or under the normal operating condition, the “temperature error” status
flag will be set. The expected temperature result will be forced to either “0” or “4095.” (rail high or rail low).
— If the ADC times out with no result, the “ADC error” status flag will be set.
Stack size: 17 bytes
Approx. Duration: 219 usec
Power Management: This function requires the core to be configured for STOP4 mode and
running at full bus speed.
Interrupt Management: This function utilizes the ADC interrupt to wake-up from STOP mode.
Resources: ADC, bandgap.
Input Parameters:
— UINT16 *u16UUMA: Pointer to Universal Uncompensated Measurement Array (as described
in Section 2.3). Only the 12-bit uncompensated temperature result will be updated.
Returns: UINT8 u8Status:Valid error flags/outputs are described in Table 10.
.
u8Status Value Measurement Value Condition
$40 $0FFF Uncompensated temperature reading outside of valid range (high).
$40 $0000 Uncompensated temperature reading outside of valid range (low).
$60 $0FFF
$60 $0000
$80 Undefined Uncompensated temperature reading not acquired.
$A0 Undefined Uncompensated temperature reading not acquired, and LVWF set.
$00 Between $0001 - $0FFE Valid uncompensated temperature reading.
$20 Between $0001 - $0FFE Valid uncompensated temperature reading, LVWF set.
Table 10. Valid output conditions for TPMS_READ_TEMPERATURE
Uncompensated temperature reading outside of valid range (high), and LVWF set.
Uncompensated temperature reading outside of valid range (low), and LVWF set.
WARNING
The Bandgap bit (BIT0 in the SPMSC1 register) must be set prior to calling this function for results to be valid.
FXTH87xx11 and FXTH87xx12 Embedded Firmware User Guide, Re v. 2.1
14 Freescale Semiconductor, Inc.
Loading...
+ 31 hidden pages