Pad Configuration and GPIO Driver for MPC5500 Martin Kaspar, EMEAGTM, Roznov Daniel McKenna, MSG Applications, East Kilbride

Similar documents
Upgrade the Solution With No Changes 2 Upgrade the Solution With No Changes If a Codebase does not contain updates to its properties, it is possible t

MC33696MODxxx Kit. 1 Overview. Freescale Semiconductor Quick Start Guide. Document Number: MC33696MODUG Rev. 0, 05/2007

MPC5200(b) ATA MDMA, UDMA Functionality BestComm Setup Recommendations

PCB Layout Guidelines for the MC1321x

etpu General Function Set (Set 1) David Paterson MCD Applications Engineer

USB Bootloader GUI User s Guide

MTIM Driver for the MC9S08GW64

MC56F825x/MC56F824x (2M53V) Chip Errata

EchoRemote Evaluation Software for Windows

MPC8349E-mITX-GP Board Errata

Using the PowerQUICC II Auto-Load Feature

Updating the Firmware on USB SPI Boards (KITUSBSPIEVME, KITUSBSPIDGLEVME)

Electrode Graphing Tool IIC Driver Errata Microcontroller Division

Design Recommendations to Implement Compatibility Between the MC13783VK and the MC13783VK5

SGTL5000 I 2 S DSP Mode

Mechanical Differences Between the 196-pin MAP-BGA and 196-pin PBGA Packages

MCF5445x Configuration and Boot Options Michael Norman Microcontroller Division

MPC7410 RISC Microprocessor Hardware Specifications Addendum for the MPC7410TxxnnnLE Series

Using the Multi-Axis g-select Evaluation Boards

Interfacing MPC5xx Microcontrollers to the MFR4310 FlexRay Controller David Paterson MCD Applications, East Kilbride

Optically-Isolated Multilink BDM Interface for the S08/S12 Microcontrollers by Michael A. Steffen

Using the CAU and mmcau in ColdFire, ColdFire+ and Kinetis

Migrating from the MPC852T to the MPC875

IIC Driver for the MC9S08GW64

etpu Automotive Function Set (Set 2)

Utilizing Extra FC Credits for PCI Express Inbound Posted Memory Write Transactions in PowerQUICC III Devices

ColdFire Convert 1.0 Users Manual by: Ernest Holloway

Component Development Environment Installation Guide

Power Cycling Algorithm using the MMA73x0L 3-Axis Linear Accelerometer

MC33897 Single-Wire CAN Transceiver Reliability and Quality Documents

56F8300 BLDC Motor Control Application

Using the Project Board LCD Display at 3.3 volts

Using the Knock Window etpu Function

MPR121 Jitter and False Touch Detection

HC912D60A / HC912Dx128A 0.5µ Microcontrollers Mask sets 2K38K, 1L02H/2L02H/3L02H & K91D, 0L05H/1L05H/2L05H

Interfacing MPC5500 Microcontrollers to the MFR4310 FlexRay Controller Robert Moran MCD Applications, East Kilbride, Scotland

MPC8260 IDMA Timing Diagrams

PDB Driver for the MC9S08GW64

16-bit MCU: S12XHY256 Automotive Cluster Demo by: Jose M. Cisneros Steven McLaughlin Applications Engineer Microcontroller Solutions Group, Scotland

Managing Failure Detections and Using Required Components to Meet ISO7637 pulse 1 on MC33903/4/5 Common Mode Choke Implementation

MPR121 Proximity Detection

Using IIC to Read ADC Values on MC9S08QG8

Interfacing HCS12 Microcontrollers to the MFR4200 FlexRay Controller

Using DMA to Emulate ADC Flexible Scan Mode on Kinetis K Series

SCI Driver for the MC9S08GW64

Introduction to LIN 2.0 Connectivity Using Volcano LTP

2005: 0.5 PQ-MDS-PCIEXP

56F805. BLDC Motor Control Application with Quadrature Encoder using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers

Symphony SoundBite: Quick Start with Symphony Studio. Installation and Configuration

1 Introduction. 2 Problem statement. Freescale Semiconductor Engineering Bulletin. Document Number: EB727 Rev. 0, 01/2010

MCF54451, MCF54452, MCF54453, MCF54454,

Using the ColdFire+ Family Enhanced EEPROM Functionality Melissa Hunter Derrick Klotz

MPC5500 Multi-module Demo: Frequency Detection David Paterson MCD Applications Engineer

Using an I 2 C EEPROM During MSC8157 Initialization

MPR083 Proximity Evaluation Kit User s Guide

Use of PGA on MC56F800x Interaction of PDB, PGA and ADC

Configuring the MCF5445x Family for PCI Host Operation

Using the Kinetis Family Enhanced EEPROM Functionality

Mask Set Errata for Mask 2M40J

PowerQUICC HDLC Support and Example Code

Using the Asynchronous DMA features of the Kinetis L Series

XGATE Library: ATD Average Calculating a rolling average from ATD results

Differences Between the DSP56301, DSP56311, and DSP56321

LFAE Bootloader Example and Interface for use with AN2546 Daniel McKenna MCD Applications, East Kilbride Scotland

Introduction to the S12G Family EEPROM Including a Comparison between the S08DZ, S12XE, and S12P Families

Clock Mode Selection for MSC8122 Mask Set K98M

Writing Touch Sensing Software Using TSI Module

Functional Differences Between the DSP56307 and DSP56L307

56F805. Digital Power Factor Correction using Processor Expert TM Targeting Document. 56F bit Digital Signal Controllers. freescale.

PowerQUICC II Parity and ECC Capability

Freescale BeeStack Documentation Overview Document Number: BSDO Rev /2008

Programming the Keyboard Interrupt Module (KBI) on HC(S)08 MCUs

Interrupts in Decoupled Parallel Mode for MPC5675K Configuration and Usage

Gallium Arsenide PHEMT RF Power Field Effect Transistor

DSP56F827 Digital Signal Controller

MSC8144AMC-S Getting Started Guide

Mask Set Errata for Mask 5L35K

MC33794 Touch Panel System Using E-Field Sensor Setup Instructions

Functional Differences Between DSP56302 and DSP56309 (formerly DSP56302A)

Keil uvision 4 Kinetis Support for Freescale MQX RTOS Release Notes

XGATE Library: Using the Freescale XGATE Software Library Steve McAslan MCD Applications, East Kilbride

Using the Serial Peripheral Interface (SPI) Module on 68HC(9)08 Microcontrollers

Affected Chips Description Impact and Workaround

MCF5216 Device Errata

MPC8260 SDRAM Timing Diagrams

TLB Translation Setup for MPC745x and MPC744x in Non-Extended Mode

NetComm Software Errata

Ordering Information Industry standard SOT343R package Device weight = g (typical) Available only in tape and reel packaging Available only in

Multichannel Communication Controller HDLC Superchannel Mode on the MPC8560

SynkroRF Network. User s Guide

Implementing a Double-Precision (32-Bit) Complex FIR Filter on the MSC8101 Device

Simplified Device Data Structures for the High-End ColdFire Family USB Modules Melissa Hunter Applications Microcontroller Solutions Group

Using RS08 Microcontrollers with Variable Interrupt Priorities Program Association of RS08 Microcontrollers

56F Phase AC Induction Motor V/Hz Control using Processor ExpertTM Targeting Document 56F bit Digital Signal Controllers

MSC8144 Device Reset Configuration For the MSC8144ADS Board

MPXH6250A SERIES. Freescale Semiconductor Technical Data MPXH6250A. Rev 2, 01/2007

Integrating FreeMASTER-Time Debugging Tool with CodeWarrior for Microcontrollers v10.x Project

Freescale Variable Key Security Protocol Receiver User s Guide Ioseph Martínez and Christian Michel Applications Engineering - RTAC Americas

Addendum to HPCN User s Guide: Quick-Start Guide

MC9S08DZ60 Migrating from the 3M05C to M74K Mask Set D. Scott Brown Applications Engineering Microcontrollers Solutions Group Austin, TX, USA

Transcription:

Freescale Semiconductor Application Note Document Number: AN2855 Rev. 0, 2/2008 Pad Configuration and GPIO Driver for MPC5500 by: Martin Kaspar, EMEAGTM, Roznov Daniel McKenna, MSG Applications, East Kilbride 1 Introduction This document describes an application programming interface (API ) that provides a functional set for pad configuration and access on the MPC5500 family. The API software (AN2855SW) is available to download from www.freescale.com. 2 Target Device This API was designed for MPC5500 family devices; however, it can be adapted for use with MPC5510 family devices by making small changes; for example, by modifying the SIU header file to suit the target device. Contents 1 Introduction................................... 1 2 Target Device................................. 1 3 C Compiler Compliance.......................... 1 4 General Description............................. 2 5 Quick Reference............................... 2 5.1 Required Header Files....................... 2 5.2 Public Data Structure(s)..................... 2 5.3 Configuration Items......................... 2 5.4 API Specification........................... 2 6 Detailed API Description......................... 3 fs_gpio_config_input............................. 4 fs_gpio_config_output............................ 5 fs_gpio_config.................................. 6 fs_gpio_config_array............................. 7 fs_gpio_read_data.............................. 8 fs_gpio_write_data.............................. 9 fs_gpio_read_byte............................. 10 fs_gpio_write_byte............................. 11 3 C Compiler Compliance The API was tested using the following C compilers: Metrowerks CodeWarrior for MPC5500 v1.5 Diab Data Compiler 5.1.1 Freescale Semiconductor, Inc., 2008. All rights reserved.

General Description 4 General Description All GPIO functionality is provided by the SIU for MPC55xx. Each MPC55xx pad that has GPIO functionality has an associated pad configuration register (SIU_PCRn) in the SIU where the GPIO function is selected. The GPIO pads are typically multiplexed with other I/O pad functions. In addition, each MPC55xx pad with GPIO functionality has an input data register (SIU_GPDIn) and an output data register (SIU_GPDOn). 5 Quick Reference This section is intended to be a source of quick access information; the API functions are described in detail in Section 6, Detailed API Description. 5.1 Required Header Files The following header files are needed in order to use this peripheral software driver. #include siu_struct.h /* header file for SIU module */ #include fs_gpio.h 5.2 Public Data Structure(s) typedef struct { uint16_t pad; /* This is the pad number */ uint16_t config; /* This is the configuration value for the pad */ }fs_gpio_config_array_ts; 5.3 Configuration Items Not applicable. 5.4 API Specification Function arguments for each routine are described as in, out, or inout. 1. in argument means that the parameter value is an input only to the function. 2. out argument means that the parameter value is an output only from the function. 3. inout argument means that a parameter value is an input to the function, but the same parameter is also an output from the function. NOTE inout parameters are typically input pointer variables in which the caller passes the address of a pre-allocated data structure to a function. The function stores its results within that data structure. The actual value of the inout pointer parameter is not changed. Table 1 lists the peripheral software driver routines. 2 Freescale Semiconductor

Table 1. GPIO API Routine void fs_gpio_config_input(uint16_t pad, uint16_t hysteresis, uint16_t weak_pull ); void fs_gpio_config_output( uint16_t pad, uint16_t drive_strength, uint16_t slew_rate, uint16_t open_drain, uint16_t readback ); void fs_gpio_config( uint16_t pad, uint16_t config ); void fs_gpio_config_array( uint16_t size, fs_gpio_config_array_ts *config_array ); uint8_t fs_gpio_read_data( uint16_t pad ); void fs_gpio_write_data( uint16_t pad, uint8_t value ); uint8_t fs_gpio_read_byte( uint16_t pad_msb ); void fs_gpio_write_byte( uint16_t pad_msb, uint8_t value ); Description This function configures a pad for use as general purpose input. This function configures a pad for use as general purpose output. This function configures a pad (a general configuration). This function configures an array of pads (a general configuration). This function returns the current state of a pad. This function sets the state of a pad. This function returns the current states of the pads composing a byte. This function sets the states of the pads composing a byte. 6 Detailed API Description The detailed functionality of all driver routines is explained in this section. The code examples illustrate the usage of the API. Freescale Semiconductor 3

6.1 fs_gpio_config_input Configure a pad for use as general purpose input. void fs_gpio_config_input(uint16_t pad, uint16_t hysteresis, uint16_t weak_pull ); Arguments: pad in This is the pad number. The pad number will be in the range 0 511. Note that not all pad numbers in the range are implemented on silicon. hysteresis in This defines if hysteresis should be enabled for the pad. Use FS_GPIO_HYSTERESIS_ENABLE to enable it, or FS_GPIO_HYSTERESIS_DISABLE to disable it. weak_pull in This defines the weak pull device for the pad. It should be set to FS_GPIO_WEAK_PULL_UP, FS_GPIO_WEAK_PULL_DOWN, or FS_GPIO_WEAK_PULL_DISABLE. fs_gpio_config_input( 179, FS_GPIO_HYSTERESIS_ENABLE, FS_GPIO_WEAK_PULL_UP ); /* EMIOS0 */ fs_gpio_config_input( FS_GPIO_EMIOS1, FS_GPIO_HYSTERESIS_DISABLE, FS_GPIO_WEAK_PULL_DISABLE ); /* 180 */ 4 Freescale Semiconductor

6.2 fs_gpio_config_output Configure a pad for use as general purpose output. void fs_gpio_config_output( uint16_t pad, uint16_t drive_strength, uint16_t slew_rate, uint16_t open_drain, uint16_t readback ); Arguments: : pad in This is the pad number. The pad number will be in the range 0 511. Note that not all pad numbers in the range are implemented on silicon. drive_strength in This defines the drive strength. It should be set to FS_GPIO_DRIVE_STRENGTH_10PF, FS_GPIO_DRIVE_STRENGTH_20PF, FS_GPIO_DRIVE_STRENGTH_30PF or FS_GPIO_DRIVE_STRENGTH_50PF. slew_rate in This defines the slew rate. It should be set to FS_GPIO_MINIMUM_SLEW_RATE, FS_GPIO_MEDIUM_SLEW_RATE or FS_GPIO_MAXIMUM_SLEW_RATE. open_drain in This enables open drain mode. It should be set to FS_GPIO_OUTPUT_DRAIN_ENABLE to enable open drain mode or to FS_GPIO_OUTPUT_DRAIN_DISABLE to disable it. readback in This enables readng of the actual value of the pad by fs_gpio_read_data() function. Use FS_GPIO_READBACK_ENABLE to enable such functionality, or FS_GPIO_READBACK_DISABLE to disable it and thus to reduce noise and power consumption. This function configures a pad for use as general purpose output. It modifies the corresponding SIU_PCRn register according to the selected arguments when the GPIO function and the output buffer are always enabled. fs_gpio_config_output( 183, FS_GPIO_DRIVE_STRENGTH_50PF, FS_GPIO_MEDIUM_SLEW_RATE, FS_GPIO_OUTPUT_DRAIN_DISABLE, FS_GPIO_READBACK_DISABLE ); /* EMIOS4 */ fs_gpio_config_output( FS_GPIO_EMIOS5, FS_GPIO_DRIVE_STRENGTH_30PF, 0, 0, FS_GPIO_READBACK_ENABLE ); /* 184 */ Freescale Semiconductor 5

6.3 fs_gpio_config Configure a pad (a general configuration). void fs_gpio_config( uint16_t pad, uint16_t config ); Arguments:: pad in This is the pad number. The pad number will be in the range 0 511. Note that not all pad numbers in the range are implemented on silicon. config in This is the configuration value for the pad. The best way to determine this is to add the appropriate configuration values together from the fs_gpio.h file. This function configures a pad (a general configuration). It modifies the corresponding SIU_PCRn register according to the specified configuration value. User must be fully familiar with the GPIO configuration. fs_gpio_config( 186, FS_GPIO_IO_FUNCTION+FS_GPIO_OUTPUT_MODE+FS_GPIO_DRIVE_STRENGTH_50PF ); /* EMIOS7 */ fs_gpio_config( FS_GPIO_EMIOS8, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE ); /* 187 */ fs_gpio_config( 209, FS_GPIO_ALTERNATE_FUNCTION2 ); /* configured as SOUDT */ fs_gpio_config( 83, FS_GPIO_PRIMARY_FUNCTION ); /* configured as CNTXA */ 6 Freescale Semiconductor

6.4 fs_gpio_config_array Configure an array of pads (a general configuration). void fs_gpio_config_array( uint16_t size, fs_gpio_config_array_ts *config_array ); Arguments:: size in This the number of elements in the config_array, that is. the number of pads to be configured. config_array in This is an array of pad and configuration data. This function configures an array of pads (a general configuration). It modifies the corresponding SIU_PCRn registers according to the specified array of pads and configuration values. User must be fully familiar with the GPIO configuration. /* static structures for configuring several pins */ static fs_gpio_config_array_ts byte_in[] = { 114, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA0 */ 115, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA1 */ 116, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA2 */ 117, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA3 */ 118, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA4 */ 119, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA5 */ 120, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE, /* ETPUA6 */ 121, FS_GPIO_IO_FUNCTION FS_GPIO_INPUT_MODE FS_GPIO_HYSTERESIS_ENABLE FS_GPIO_WEAK_PULL_DISABLE /* ETPUA7 */ }; static fs_gpio_config_array_ts byte_out[] = { 122, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA8 */ 123, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA9 */ 124, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA10 */ 125, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA11 */ 126, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA12 */ 127, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA13 */ 128, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF, /* ETPUA14 */ 129, FS_GPIO_IO_FUNCTION + FS_GPIO_OUTPUT_MODE + FS_GPIO_DRIVE_STRENGTH_50PF /* ETPUA15 */ }; fs_gpio_config_array( 8, byte_in ); fs_gpio_config_array( 8, byte_out ); Freescale Semiconductor 7

6.5 fs_gpio_read_data Return the current state of a pad. uint8_t fs_gpio_read_data( uint16_t pad ); Arguments:: pad in This is the pad number. The pad number will be between 0-511. Note that not all pad numbers in the range are implemented on silicon. This function returns the current state the of a pad. It reads the corresponding SIU_GPDIn register. uint8_t a; State of the specified pad as uint8_t. This function assumes that the pad is already configured for input. a = fs_gpio_read_data(179); a = fs_gpio_read_data(fs_gpio_emios1); 8 Freescale Semiconductor

6.6 fs_gpio_write_data Set the state of a pad. void fs_gpio_write_data( uint16_t pad, uint8_t value ); Arguments:: pad in This is the pad number. The pad number will be in the range 0 511. Note that not all pad numbers in the range are implemented on silicon. value in This is the value (0 or 1) to be written to the output pad. This function sets the state of a pad. It writes the specified argument value to the corresponding SIU_GPDOn register. uint8_t a; a = 1; fs_gpio_write_data( 183, a ); fs_gpio_write_data( 183, 0 ); This function assumes that the pad is already configured for output. fs_gpio_write_data( FS_GPIO_EMIOS5, 1 ); fs_gpio_write_data( FS_GPIO_EMIOS5, 0 ); fs_gpio_write_data( FS_GPIO_EMIOS5,!fs_gpio_read_data(FS_GPIO_EMIOS5) ); Freescale Semiconductor 9

6.7 fs_gpio_read_byte Return the current states the of the pads composing a byte. uint8_t fs_gpio_read_data( uint16_t pad ); Arguments:: pad_msb in This is the pad number of the MSB bit from a byte. The pad number will be in the range 0 504. Note that not all pad numbers in the range are implemented on silicon. This function returns the current states the of the pads forming a byte. It reads the corresponding SIU_GPDIn registers. uint8_t c; State of the eight subsequent pads as uint8_t. Pads forming a byte must be continuous. This function assumes that the pads are already configured for input. c = fs_gpio_read_byte( 114 ); c = fs_gpio_read_byte( byte_in[0].pad ); 10 Freescale Semiconductor

6.8 fs_gpio_write_byte Set the states of the pads composing a byte. void fs_gpio_write_byte( uint16_t pad_msb, uint8_t value ); Arguments:: pad_msb in This is the pad number. The pad number will be in the range 0 504. Note that not all pad numbers in the range are implemented on silicon. value in This is the 8-bit (= 1 byte) value to be written to the outputs. This function sets the states of the pads forming a byte. It writes the specified argument value to the corresponding SIU_GPDOn registers. uint8_t b; fs_gpio_write_byte( 122, 0xe0 ); b = 0x5a; fs_gpio_write_byte( 122, b ); Pads forming a byte must be continuous. This function assumes that the pads are already configured for output. fs_gpio_write_byte( byte_out[0].pad, 0xf1 ); Freescale Semiconductor 11

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 support.japan@freescale.com Asia/Pacific: Freescale Semiconductor Hong Kong Ltd. Technical Information Center 2 Dai King Street Tai Po Industrial Estate Tai Po, N.T., Hong Kong +800 2666 8080 support.asia@freescale.com For Literature Requests Only: Freescale Semiconductor Literature Distribution Center P.O. Box 5405 Denver, Colorado 80217 1-800-441-2447 or 303-675-2140 Fax: 303-675-2150 LDCForFreescaleSemiconductor@hibbertgroup.com 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 notice to any products herein. Freescale Semiconductor makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability arising out of the application 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, must be validated for each customer application by customer s technical experts. Freescale Semiconductor does not convey any license under its patent rights nor the rights of others. Freescale Semiconductor products are not 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 distributors 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. RoHS-compliant and/or Pb-free versions of Freescale products have the functionality and electrical characteristics as their non-rohs-compliant and/or non-pb-free counterparts. For further information, see http://www.freescale.com or contact your Freescale sales representative. For information on Freescale s Environmental Products program, go to http://www.freescale.com/epp. Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. 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 Freescale Semiconductor, Inc. 2008. All rights reserved. Document Number: AN2855 Rev. 0 2/2008