AN4193, MM908E625 / MM908E626 - Factory Trimming and Calibration

Freescale Semiconductor
Application Note
AN4193
Rev. 2.0, 11/2011
MM908E625 / MM908E626 - Factory
Trimming and Calibration
1
Introduction
During final test of the MM908E625 / MM908E626, various
parameters (such as, ICG trim value) are measured and
stored into the device internal FLASH memory for internal and
also for customer use. The purpose of these parameters is to
enhance the accuracy of the MM908E625 / MM908E626 and
reduce end of line calibration for the customer (for example,
no ICG trimming necessary).
The following flash memory locations are reserved for this
purpose and might have a value different from the “empty”
(0xFF) state:
•
•
0xFD80:0xFDDF Trim and Calibration Values
0xFFFE:0xFFFF Reset Vector
In the event the application uses these parameters, one has
to take care not to erase or override these values. If these
parameters are not used, these flash locations can be erased
and otherwise used.
Contents
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 General Description . . . . . . . . . . . . . . . . . . . . 2
2.1 Example Source Codes . . . . . . . . . . . . . . 2
2.2 FLASH Block Protection (page erase/mass
erase) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3 Available Trimming Data - Overview . . . 2
3 Functional Description . . . . . . . . . . . . . . . . . . 3
3.1 Internal Clock Generator (ICG) Trim Value
..................................... 3
3.2 H-Bridge LS Current Recopy . . . . . . . . . 4
3.3 VSUP Ratio . . . . . . . . . . . . . . . . . . . . . . . . 4
3.4 H-Bridge LS Current Limitation Value . . 4
3.5 Internal Die Temperature Sensor - Offset
Calibration Value . . . . . . . . . . . . . . . . . . . . . . 4
4 Comment / Summary . . . . . . . . . . . . . . . . . . . 8
5 References. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
© Freescale Semiconductor, Inc., 2011. All rights reserved.
General Description
2
General Description
2.1
Example Source Codes
For the C-source code examples the Metrowerks CodeWarrior was used. The assembly language examples are
done in a generic way and are not specific to one Assembler. All source codes are just one way of implementing the
trimming, and might or might not fit the requirements of a specific application.
The software is provided by Freescale “AS IS” and any expressed or implied warranties, including, but not limited
to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall
Freescale or its contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential
damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or
business interruption) However caused and any theory of liability, whether in contract, strict liability, or tort (including
negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such
damage.
2.2
FLASH Block Protection (page erase/mass erase)
The microcontroller core of the MM908E625 / MM908E626 is the MC68HC908EY16. The FLASH memory of this
device has a built-in protection. This protection can protect the FLASH memory against erasing and overwriting. The
amount of memory which is protected can be selected with the FLASH Block Protect Register (FBPR). By default,
the last page (0xFFDC:0xFFFF) of the FLASH memory, containing the vector table, is always protected and can only
be erased with Mass Erase. In the case that the trim values are used, the device needs special handling for FLASH
programming, for example:
•
•
•
•the FLASH area containing the trimming data has to be read
•the device FLASH memory has to be erased (mass erase)
•the FLASH has to be programmed with the program and the trimming data has to be reprogrammed
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
2
Freescale Semiconductor
Functional Description
2.3
Available Trimming Data - Overview
The following table shows the user available trim data in the MM908E625 / MM908E626.
Table 1. Trim Data Memory Map (1)
ICG Trim 307.2kHz, 1%
H-Bridge LS Current Recopy, HB1, Ratio High
H-Bridge LS Current Recopy, HB2, Ratio High
H-Bridge LS Current Recopy, HB3, Ratio High
H-Bridge LS Current Recopy, HB4, Ratio High
H-Bridge LS Current Recopy, HB4, Ratio Low
H-Bridge LS Current Recopy, HB4, Ratio Low
H-Bridge LS Current Recopy, HB4, Ratio Low
H-Bridge LS Current Recopy, HB4, Ratio Low
VSUPRatio_TRIM
H-Bridge LS Current Limitation Value CL1
H-Bridge LS Current Limitation Value CL2
H-Bridge LS Current Limitation Value CL3
H-Bridge LS Current Limitation Value CL4
H-Bridge LS Current Limitation Value CL5
Temperature Sensor Trim Value
HOT
COLD
ROOM
n.a.
0xFD83
0xFD84
0xFD85
0xFD86
0xFD87
0xFD88
0xFD89
0xFD8A
0xFD8B
0xFD90
0xFD91
0xFD92
0xFD93
0xFD94
0xFD95
n.a.
0xFDA3
0xFDA4
0xFDA5
0xFDA6
0xFDA7
0xFDA8
0xFDA9
0xFDAA
0xFDAB
n.a.
n.a.
n.a.
n.a.
n.a.
0xFDB5
0xFDC2
0xFDC3
0xFDC4
0xFDC5
0xFDC6
0xFDC7
0xFDC8
0xFDC9
0xFDCA
0xFDCB
0xFDD0
0xFDD1
0xFDD2
0xFDD3
0xFDD4
0xFDD5
Notes
1.Memory range for trim data 0xFD80..0xFDDF, all memory locations within that range not mentioned above should be ignored.
3
3.1
Functional Description
Internal Clock Generator (ICG) Trim Value
The internal clock generator (ICG) module is used to create a stable clock source for the microcontroller without
using any external components.
With the MC68HC908EY16 data sheet, the trimming information for the ICG is part of the Microcontroller
specification. Refer to the “ICG Trim Value” chapter for details.
3.2
H-Bridge LS Current Recopy
To determine the Current Recopy Trim value, the Current Sense Amplification is disabled, all HB Low Sides are
switched on, and Current Recopy is sequentially selected as analog input for the ADC from HB1 to HB4. For each
HB pin, 150 mA is injected into the HB pin, and after a wait time of 1.0 ms, a conversion is triggered. The same
sequence is executed after enabling Current Sense Amplification (RATIO).
The Current Recopy Ratio measurements on HBx pins are converted to trim values using the following formula:
CRRatio = ((Digital Code x VREFH) / 1023) / ILOAD, where VREFH = 5.0 V and ILOAD = 150 mA
CRRatio_TRIM = (ref_value x 128) / CRRatio where ref_value = 2, when CSA = 0, and 12 when CSA = 1
The trim values (CRRatio_TRIM) for all three temperatures are stored in the FLASH memory location documented
in Table 1.
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
Freescale Semiconductor
3
Functional Description
3.3
VSUP Ratio
The following formula is applied to get the VSUPRatio value:
VSUPRatio = VSUP / ((Digital Code x VREFH) / 1023) where VREFH = 5.0 V and VSUP = 16 V
Based on this result, the trim adjustment is calculated:
VSUPRatio_TRIM = ( ref_value x 128 ) / VSUPRatio where ref_value=5.1
The trim values (VSUPRatio_TRIM) for all three temperatures are stored in the FLASH memory location
documented in Table 1.
3.4
H-Bridge LS Current Limitation Value
For each current limitation level, the values determined on all four low sides are averaged to determine the right trim
adjustment through the following formulas:
•
•
•
•
•
CL1_TRIM = ( ref_value x 128 ) / AVERAGE_CL1_4HBs, where ref_value = 55 mA
CL2_TRIM = ( ref_value x 128 ) / AVERAGE_CL2_4HBs, where ref_value = 260 mA
CL3_TRIM = ( ref_value x 128 ) / AVERAGE_CL3_4HBs, where ref_value = 370 mA
CL4_TRIM = ( ref_value x 128 ) / AVERAGE_CL4_4HBs, where ref_value = 550 mA
CL5_TRIM = ( ref_value x 128 ) / AVERAGE_CL5_4HBs, where ref_value = 740 mA
The trim value for the hot and room temperature test is stored in the FLASH memory location documented in
Table 1.
3.5
Internal Die Temperature Sensor - Offset Calibration Value
The internal die temperature sensor allows monitoring the analog die temperature. Due to the nature of the sensor,
the linearity has little influence on process variations, but the offset of the sensor has a significant variance.
Table 2. Internal Die Temperature Slope
Voltage/Temperature Slope
STTOV
-
19
-
mV/°C
Output Voltage @ 25 °C
VT25
1.7
2.1
2.5
V
As indicated in the datasheet, the output voltage at 25 °C can vary up to ±400 mV, which corresponds to an offset
error of ±21 °C. The slope value is specified as typical only.
To compensate for this variation, the offset is measured during final test (3 temperatures) using the internal
analog-to-digital converter, and stored into the FLASH memory. The conversion is performed as a 10-Bit AD
conversion, the values are converted to 8-Bit accuracy before flashing. The values can be used by the application
software to compensate the offset mentioned previously.
Table 3. shows the location and content of the FLASH temperature trimming information stored in the
MC68HC908EY16.
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
4
Freescale Semiconductor
Functional Description
Table 3. Temperature Offset Trimming Flash Content(1)
Flash Location
$FD95
$FDB5
$FDD5
Test Limits(2),(3)
125 °C to 145 °C
-43 °C to -32 °C
16 °C to 35 °C
Register Content
Hot Temperature Offset (NT135)
Cold Temperature Offset (NT-40)
Room Temperature Offset (NT25)
Real Variation(2),(4)
133 °C to 138 °C
-34 °C to -41 °C
26 °C to 31 °C
Notes
1.Stored as an 8-Bit ADC conversion result
2.Device Temperature during final test trimming, VSUP = 16 V
3.Maximum variation allowed during production
4.Three production lots with different testers
Offset Compensation Usage using the Room Temperature Offset (NT25):
The analog die temperature ChipTemp can be calculated with the following equation
V–V
T25
ChipTemp = 25°C + -----------------------S
TtoV
with the measured voltage of the analog-to-digital voltage V, the reference offset voltage at 25 °C VT25 and the
temperature to the voltage slope (sensor voltage resolution) STtoV of the sensor. For the chip temperature offset
VT25, the stored calibration value can be used instead using the typical value from the datasheet.
The measured voltage VADC can be evaluated from the actual measured analog-to-digital converter value NADC and
the analog-to-digital resolution RADC with:
V
ADC
= N
ADC
⋅R
ADC
The analog-to-digital resolution RADC for an 8-bit (truncated) conversion is:
R
ADC
5V
= ---------- ≈ 19, 6mV
255
Substituting the voltage V by the analog-to-digital value N leads to the following expression.
R
ADC
ChipTemp = 25°C + ----------------- ⋅ ( N – N
)
T25
S
TtoV
which is the basis for the calculations of the chip temperature by the embedded software. With analog to digital
converter “temperature resolution”:
5V
---------R
255
ADC
----------------- = ---------------- ≈
mV
S
TtoV
19 --------°C
1, 032°C
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
Freescale Semiconductor
5
Functional Description
Therefore the chip temperature chip_temp can be calculated as:
ChipTemp = 25°C + 1, 032°C ⋅ ( N – N
T25
)
Method 1 - exact calculation using float datatyp
C language example
#include<stdlib.h>
// -------------------------------------------------------// -- DEFINES -// -------------------------------------------------------#define IOBYTE(address) (*((volatile unsigned char*) (address)))
#define IOWORD(address) (*((volatile unsigned int*) (address)))
#define N_T25I
OBYTE(0xFDD5)
#define S_TtoV
0.019
#define R_ADC
(5.0/255)
// -------------------------------------------------------// -- MAIN -// -------------------------------------------------------void main(void) {
unsigned char N;
float ChipTemp;
// temperature offset calibration value (25C)
// 19mV per celsius
// ADC resolution (8bit)
// measure adc value (8-bit truncated mode)
......
N = ADC_Value(xxx);
ChipTemp = 25 + (R_ADC/S_TtoV) * (N - N_T25);
// measure temp sensor voltage with adc
// calculate chip temp
......
}
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
6
Freescale Semiconductor
Functional Description
Method 2 - approximation using integer datatyp
With an approximation for RADC / STtoV25 = 1 the chip temperature ChipTemp simplifies to
ChipTemp = 25°C + ( N – N
T25
)
The relative error through the approximation is ~ 3.2% or 0.032 °C/bit. With the reference at 25 °C, the maximum
absolute error for the range of -40 °C to +125 °C is
•
•
2.08 °C at -40 °C and
-3.2 °C at +125 °C
As this is a know static error (systematic error), it also could be compensated by the software.
C language example
#include<stdlib.h>
// -------------------------------------------------------// -- DEFINES -// -------------------------------------------------------#define IOBYTE(address) (*((volatile unsigned char*) (address)))
#define IOWORD(address) (*((volatile unsigned int*) (address)))
#define N_T25
IOBYTE(0xFDD5)
// temperature offset calibration value (25 °C)
// -------------------------------------------------------// -- MAIN -// -------------------------------------------------------void main(void) {
unsigned char N;
int ChipTemp;
// measure adc value (8-bit truncated mode)
......
N = ADC_Value(xxx);
ChipTemp = 25 + (N - N_T25);
// measure temp sensor voltage with adc
// calculate chip temp
......
}
Comparison of the two methods
Table 4. give a comparison between the two methods. It indicates the ROM, RAM/Stack size necessary just for the
calculation (only the code line with the formula is considered), and compares the execution time for the calculation
operation.
Table 4. Performance Data
ROM size
RAM (ChipTemp) / Stack usage
Cycles for calculation
Execution time @5.0 MHz bus frequency
Method 1 - “Float”
1161
4 / 44
4289
857.8 μs
Method 2 - “Integer”
30
2/3
13
2.6 μs
The performance requirements for the Method 1 are significantly higher, for example, the execution time of method
1 is more than 300 times longer, the ROM memory is 38 times higher, and the RAM memory is 9 times higher.
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
Freescale Semiconductor
7
Comment / Summary
NOTE
The example given is using only one temperature point for calibration. Additional
accuracy can be reached, including all three available points to calculate the device
specific slope. It is recommended to calculate two slope factors for (-40…25 °C
and 25 °…135 °C) based on the given trim values.
4
Comment / Summary
Based on the calibration method and the trim values used, a significant increase of accuracy of the MM908E625 /
MM908E626 can be realized.
5
References
1. MC68HC908EY16
2. MM908E625 Data Sheet
3. MM908E626 Data Sheet
MM908E625 / MM908E626 - Factory Trimming and Calibration, Rev. 2.0
8
Freescale Semiconductor
How to Reach Us:
Home Page:
www.freescale.com
Web Support:
http://www.freescale.com/support
USA/Europe or Locations Not Listed:
Freescale Semiconductor, Inc.
Technical Information Center, EL516
2100 East Elliot Road
Tempe, Arizona 85284
1-800-521-6274 or +1-480-768-2130
www.freescale.com/support
Europe, Middle East, and Africa:
Freescale Halbleiter Deutschland GmbH
Technical Information Center
Schatzbogen 7
81829 Muenchen, Germany
+44 1296 380 456 (English)
+46 8 52200080 (English)
+49 89 92103 559 (German)
+33 1 69 35 48 48 (French)
www.freescale.com/support
Japan:
Freescale Semiconductor Japan Ltd.
Headquarters
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Japan
0120 191014 or +81 3 5437 9125
[email protected]
Asia/Pacific:
Freescale Semiconductor China Ltd.
Exchange Building 23F
No. 118 Jianguo Road
Chaoyang District
Beijing 100022
China
+86 10 5879 8000
[email protected]
For Literature Requests Only:
Freescale Semiconductor Literature Distribution Center
P.O. Box 5405
Denver, Colorado 80217
1-800-441-2447 or +1-303-675-2140
Fax: +1-303-675-2150
[email protected]
Information in this document is provided solely to enable system and
software implementers to use Freescale Semiconductor products. There are
no express or implied copyright licenses granted hereunder to design or
fabricate any integrated circuits or integrated circuits based on the
information in this document.
Freescale Semiconductor reserves the right to make changes without further
to products herein. Freescale Semiconductor makes no warranty,
representation or regarding the suitability of its products for any particular
purpose, nor does Freescale Semiconductor assume any liability arising out
of the or use of any product or circuit, and specifically disclaims any and all
liability, including without limitation consequential or incidental damages.
“Typical” parameters that may be provided in Freescale Semiconductor data
sheets and/or specifications can and do vary in different applications and
actual performance may vary over time. All operating parameters, including
“Typicals”, be validated for each customer application by technical experts.
Freescale Semiconductor does not convey any license under its patent rights
nor the rights of others. Freescale Semiconductor products are designed,
intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or
sustain life, or for any other application in which the failure of the Freescale
Semiconductor product could create a situation where personal injury or
death may occur. Should Buyer purchase or use Freescale Semiconductor
products for any such unintended or unauthorized application, Buyer shall
indemnify and hold Freescale Semiconductor and its officers, employees,
subsidiaries, affiliates, and harmless against all claims, costs, damages, and
expenses, and reasonable attorney fees arising out of, directly or indirectly,
any claim of personal injury or death associated with such unintended or
unauthorized use, even if such claim alleges that Freescale Semiconductor
was negligent regarding the design or manufacture of the part.
Freescale and the Freescale logo are trademarks of Freescale
Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. Qorivva, S12 MagniV,
SMARTMOS and Xtrinsic are trademarks of Freescale
Semiconductor, Inc. ARM is the registered trademark of ARM
Limited. The Power Architecture and Power.org word marks and the
Power and Power.org logos and related marks are trademarks and
service marks licensed by Power.org. All other product or service
names are the property of their respective owners. ©2011 Freescale
Semiconductor, Inc.
AN4193
Rev. 2.0
11/2011