swra306

Upload: ikurtoglu

Post on 03-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 swra306

    1/15

    Design Note DN117

    SWRA306 Page 1 of 14

    SimpliciTI-compatible UART DriverBy Jim Noxon and Kristoffer Flores

    Keywords

    SimpliciTI

    UART driver

    RS-232

    SmartRF04EB

    SmartRF05EB

    CCMSP-EM430F2618

    MSP430FG4618 Experimenter Board

    CC1110Fx

    CC1111Fx

    CC2510Fx

    CC2511Fx

    CC2430

    CC2431

    CC2530

    1 IntroductionThis design note introduces a UART driverthat is compatible with the SimpliciTI

    TM

    low-power wireless networking protocol.This note describes the driverimplementation, the process of adding thedriver into an existing SimpliciTI project,and the basic driver API function calls.

    The supplied UART driver can facilitateinterfacing a SimpliciTI device with otherUART-capable devices, for example, a PCvia RS-232. Using a UART with an RS-

    232 transceiver allows for live in-system

    data transfer from a SimpliciTI device to aPC or PC control of the SimpliciTI devicefor end applications or for developmentand debugging purposes. The driverpackage includes an example projectbased on the Simple Peer-to-PeerSimpliciTI example to demonstrate theUART operation. The example programsends messages to a PC via the RS-232port on the SmartRF04, SmartRF05,and MSP430FG4618/F2013 ExperimenterBoards.

  • 7/28/2019 swra306

    2/15

    Design Note DN117

    SWRA306 Page 2 of 14

    Table of Contents

    KEYWORDS.............................................................................................................................. 11 INTRODUCTION............................................................................................................. 12 ABBREVIATIONS........................................................................................................... 33 UART DRIVER DESCRIPTION...................................................................................... 43.1 COMPATIBILITY .......................................................................................................... 4

    3.2 DRIVER IMPLEMENTATION........................................................................................... 43.2.1 Flow control on MSP430s................................................................................................4

    3.3 USER OPTIONS AND INTERFACE.................................................................................. 44 INSTALLING THE DRIVER INTO AN EXISTING SIMPLICITI PROJECT.................... 5

    4.1 EXTRACTING THE FILES INTO THE PROJECT DIRECTORIES............................................ 54.2 CONFIGURING THE UART........................................................................................... 54.3 SETTING UP THE PROJECT ......................................................................................... 6

    4.3.1 In IAR (for 8051-based SoC or MSP430).........................................................................64.3.2 In Code Composer Essentials (for MSP430)....................................................................8

    5 EXAMPLE SIMPLE PEER-TO-PEER WITH HYPERTERMINAL............................. 106 BASIC API FUNCTION CALLS ................................................................................... 11

    6.1 UART_INTFC_INIT()................................................................................................... 116.1.1 Description .....................................................................................................................116.1.2 Prototype ........................................................................................................................11

    6.2 TX_PEEK() ............................................................................................................... 116.2.1 Description .....................................................................................................................116.2.2 Prototype ........................................................................................................................116.2.3 Return .............................................................................................................................11

    6.3 TX_SEND()............................................................................................................... 126.3.1 Description .....................................................................................................................126.3.2 Prototype ........................................................................................................................126.3.3 Parameter Details ..........................................................................................................126.3.4 Return .............................................................................................................................12

    6.4 TX_SEND_WAIT() ..................................................................................................... 126.4.1 Description .....................................................................................................................126.4.2 Prototype ........................................................................................................................126.4.3 Parameter Details ..........................................................................................................126.4.4 Return .............................................................................................................................12

    6.5 RX_PEEK()............................................................................................................... 126.5.1 Description .....................................................................................................................126.5.2 Prototype ........................................................................................................................126.5.3 Return .............................................................................................................................12

    6.6 RX_RECEIVE().......................................................................................................... 136.6.1 Description .....................................................................................................................136.6.2 Prototype ........................................................................................................................136.6.3 Parameter Details ..........................................................................................................136.6.4 Return .............................................................................................................................13

    6.7 UART_BUSY()........................................................................................................... 136.7.1 Description .....................................................................................................................136.7.2 Prototype ........................................................................................................................136.7.3 Return .............................................................................................................................137 GENERAL INFORMATION .......................................................................................... 14

    7.1 DOCUMENT HISTORY................................................................................................ 14

  • 7/28/2019 swra306

    3/15

    Design Note DN117

    SWRA306 Page 3 of 14

    2 Abbreviations

    UART Universal Asynchronous Receiver/TransmitterDMA Direct Memory AccessISR Interrupt Service Routine

    SoC System On ChipEM Evaluation ModuleTX TransmitRX Receive

  • 7/28/2019 swra306

    4/15

    Design Note DN117

    SWRA306 Page 4 of 14

    3 UART Driver Description

    3.1 Compatibility

    The driver has been tested on the following SimpliciTI development platforms:

    - SmartRF04 board with CC1110EM, CC2510EM, and CC2430EM- SmartRF05 board with CCMSP-EM430F2618 daughter board and CC2520EM- SmartRF05 board with CC2530EM- MSP430FG4618/F2013 Experimenter Board with CC1101EM

    Code modifications may be necessary to ensure proper compilation and UART operationwhen using MSP430s, microcontrollers, or development platforms other than those listedabove. The driver can be used in both IAR and Code Composer Essentials (CCE).

    3.2 Driver Implementation

    The supplied UART driver uses first-in first-out (FIFO) ring buffers for transmit (TX) andreceive (RX) data. To send data, the user calls an API function that writes the data to the endof the TX FIFO. To receive data, the user calls a function that reads data from the top of theRX FIFO.

    The actual transmission and reception of data bytes over the UART is driven by interrupts. Ifthere is data in the TX FIFO, the UART TX interrupt service routine (ISR) moves the data byteby byte to the UART TX byte register for transmission until the FIFO is empty. The UART RXISR moves each received byte from the RX byte register to the RX FIFO as long as there isroom in the buffer.

    The alternative to an interrupt-based UART is one that is supported by the Direct MemoryAccess (DMA) controller to move data to and from the UART TX/RX byte registers. Aninterrupt-based solution was chosen for the following reasons:

    1. A UART with DMA support would require two DMA channels, one for transmit andone for receive. An ISR-driven solution keeps DMA resources free to use with otherperipherals.

    2. While UART using DMA could operate as a background process with very littleoverhead, some of the functions provided with the supplied driver, for example, thefunction to check the amount of unread data in the RX FIFO, have more practicalimplementations in an ISR-based UART.

    3.2.1 Flow control on MSP430s

    Flow control prevents overflow conditions via signalling on the RTS and CTS UART pins. Ifthe RX FIFO is full, the RTS pin will output a high logic level as a signal that the device is notready to receive data. On the transmit side, the UART will wait for the CTS pin (driven by thetarget devices RTS pin) to go to a low logic level before transmitting data.

    The 8051-based SoCs have a built-in flow control mechanism managed by hardware whilethe MSP430s do not. To provide flow control capability to MSP430-based systems, a flowcontrol mechanism managed by software is enabled when using an MSP430 and flow controlis turned on. The implementation maps two I/O pins as the RTS/CTS signals and toggles thelines manually in software. Since this handshaking mechanism is software-based, the latencyinvolved in toggling the RTS and CTS lines can lead to lost data when using high baud rates.

    3.3 User Options and Interface

  • 7/28/2019 swra306

    5/15

    Design Note DN117

    SWRA306 Page 5 of 14

    The UART driver is designed for minimal complexity for the user. Using #define statements

    in a preinclude file, the user can specify which UART on the CPU to use, the baud rate, flowcontrol mode, parity mode, and number of stop bits. The user can also specify the size of thetransmit and receive FIFO buffers. However, this driver does not allow the above settings tobe changed during runtime. Section 4 explains the driver installation and project setupprocedures.

    The driver API provides seven function calls for the UART. These are high-level functions forsending and receiving messages to and from the buffers, checking for free space in thetransmit buffer, and checking how much unread data is in the receive buffer. Section 6describes the API functions in detail.

    4 Installing the Driver into an Existing SimpliciTI Project

    Installing the UART driver into a project consists of three main steps: extracting the files intothe project directories, configuring the UART, and setting up the project to use the UART.

    4.1 Extracting the Files into the Project Directories

    The first step in installing the UART driver is to extract the zip file contents into the SimpliciTI

    directory. If the extraction process preserves the directory structure, the file contents shouldextract into the recommended folders; however, the table below lists the files and theirrecommended destinations:

    Extract into $SimpliciTI_Installation_Folder$\Components\bspFilename Descriptionpp_utils.h Macro definitions used by UART driver.

    Extract into $SimpliciTI_Installatio _Folder$\Components\bsp\driversFilename Descriptionuart.h UART definitions and low-level function declarationsuart_intfc.h UART driver include file with API function prototypes

    Extract into $SimpliciTI_Installation_Folder$\Components\bsp\drivers\codeFilename Descriptionuart.c Low-level UART function implementations and ISRsuart_intfc.c UART API function implementations

    Extract into $SimpliciTI_Installation_Folder$\Projects\Examples\ApplicationsFilename Descriptionmain_LinkToWithUART.c Example program (see Section 5)options.h Project preinclude file with UART configuration definitions

    4.2 Configuring the UART

    The options.h preinclude file contains #define statements that determine the following

    UART settings:

    - Transmit and receive FIFO buffers size- For 8051-based SoCs, the number and location of the USART module to use- For MSP430s, the letter and module number of the USCI module to use- Baud rate- Flow control mode- Number of stop bits- Parity mode

  • 7/28/2019 swra306

    6/15

    Design Note DN117

    SWRA306 Page 6 of 14

    The 8051-based SoCs use a consistent pin mapping such that a given USART (number andlocation) maps to the same I/O pins regardless of the SoC. The driver has built-in pinmappings for the different USART configurations. For the MSP430s, it is necessary to definethe pins used by the chosen USCI module because the pin mapping for the same modulemay differ among different MSP430s. Since the MSP430 does not have hardware-handshaking, the pins to use for CTS and RTS must also be defined in options.h.

    When using an 8051-based SoC EM on a SmartRF04 (CC1110/1, CC2510/1, CC2430/1) orSmartRF05 board (CC2530/1), specifying USART port number 0 at location 1 will map theUART to the on-board RS-232 transceiver.

    The comments in options.h identify the pin mappings for USCI_A0 for the CCMSP-

    EM430F2618 SmartRF05 board and for the MSP430FG4618 Experimenter Board. Usingthe mapping will route the UART to the on-board RS-232 transceivers. On the CCMSP-EM430F2618 SmartRF05 board, it is possible to enable hardware-handshaking becausepins 2.6 and 2.7 on the MSP430 connect to the RTS and CTS pins of the RS-232 transceiver.On the Experimenter Board, hardware-handshaking cannot be enabled because the RTS andCTS pins on the RS-232 connector are open.

    4.3 Setting Up the Project

    4.3.1 In IAR (for 8051-based SoC or MSP430)

    The following steps set up an existing SimpliciTI project to use the UART driver:

    1. With the workspace and project open in IAR, add uart.c and uart_intfc.c to

    the project:a. Navigate to .b. Browse for uart.c and uart_intfc.c in the file browser that appears,

    highlight the files, and press Open.c. Both uart.c and uart_intfc.c should now appear in the project files list.

    Drag and drop the files to the desired folder in the project or leave them inthe default location.

    2. Set options.h as a preinclude file for the project:a. Navigate to b. Under Category, select C/C++ Compiler, then choose the Preprocessor tab.c. Under Preinclude File, enter the location or browse for the options.h file.

  • 7/28/2019 swra306

    7/15

    Design Note DN117

    SWRA306 Page 7 of 14

    Figure 1. Example preprocessor options tab for CC2510 project

    3. In the main C file of the project, include uart_intfc.h and add a line of code to call

    uart_intfc_init() after the call to BSP_Init() (as shown in Figure 2). Rebuild

    the project. The project should compile with no errors. The other UART API functionscan be called afterSMPL_Init() has been called.

  • 7/28/2019 swra306

    8/15

    Design Note DN117

    SWRA306 Page 8 of 14

    Figure 2. No build errors after successful driver install and initialization in IAR

    4.3.2 In Code Composer Essentials (for MSP430)

    The following steps set up an existing SimpliciTI project to use the UART driver:

    1. With a workspace and project open in CCE, link uart.c and uart_intfc.c to the

    project:a. Navigate to b. Browse for uart.c and uart_intfc.c in the file browser that appears,

    highlight the files, and press Open.c. Both uart.c and uart_intf.c should now appear in the project files list.

    Drag and drop the files to the desired folder in the project or leave them inthe default location.

    2. Configure options.h as a preinclude file

    a. Navigate to b. On the left menu in the window that appears, select C/C++ Build.c. Under Configuration SettingsTool Settings, select the Runtime Model

    Options.d. Specify options.h as a preinclude file by entering the file location or

    browsing for the file (Figure 3).

  • 7/28/2019 swra306

    9/15

    Design Note DN117

    SWRA306 Page 9 of 14

    Figure 3. Specifying a preinclude file in CCE.

    3. In the main project C file, include uart_intfc.h and add a line of code to call

    uart_intfc_init() after the call to BSP_Init()(see Figure 4). Rebuild the

    project. The project should compile with no errors. The other UART API functions canbe called afterSMPL_Init() has been called.

  • 7/28/2019 swra306

    10/15

    Design Note DN117

    SWRA306 Page 10 of 14

    Figure 4. No build errors after successful driver install and initialization in CCE

    5 Example Simple Peer-to-Peer with HyperTerminal

    The file main_LinkToWithUART.c is a modified version of the Simple Peer-to-Peer

    example provided with SimpliciTI. The code provides a simple demonstration of the UARTinterface and is intended to be used with one of development platforms with an RS-232interface (i.e. SmartRF04 board, SmartRF05 board, or MSP430FG4618 ExperimenterBoard with their compatible SoCs or radios). The example program communicates to a PCHyperTerminal via RS-232 to deliver status messages and to receive input from the PC.

    The original LinkTo program waits for a button press on the development platform to initiate alink; the modified version waits for a carriage return in the HyperTerminal window. Pressingkeys other than the carriage return key during this time will cause LED 1 to toggle. The rest ofthe program operates as the original, with the modification that the device sends statusmessages to the PC HyperTerminal as shown in Figure 5.

    To run the example, follow the instructions below:

    1. Open the Simple Peer-to-Peer LinkTo project for the device and platform to be used.2. Per the instructions in Section 4, extract the UART driver files, configure the UART in

    options.h; and set up the project. The default Simple Peer-to-Peer project should

    compile with the minor changes to main_LinkTo.c as shown in Figure 2 and Figure

    4.3. Replace the code in main_LinkTo.c with the code in main_LinkToWithUART.c

    OR add (link in CCE) main_LinkToWithUART.c to the project and exclude

    main_LinkTo.c from the build. Rebuild the project.

  • 7/28/2019 swra306

    11/15

    Design Note DN117

    SWRA306 Page 11 of 14

    4. Open a HyperTerminal and configure the terminal to match the UART settingsspecified in options.h

    5. With a serial cable connected to the development board, run the example program.

    Figure 5. HyperTerminal Window of Example Program

    6 Basic API Function Calls

    This section gives a description of each of the 7 UART API functions. For more details, seethe code and comments in uart_intfc.h and uart_intfc.c.

    6.1 uart_intfc_init()

    6.1.1 Description

    The uart_intfc_init() function prepares the UART by configuring the CPU registers

    (per the definitions in options.h) and initializing the UART buffers. uart_intfc_init()

    must be called before attempting to use any other API functions.

    6.1.2 Prototypevoid uart_intfc_init(void)

    6.2 tx_peek()

    6.2.1 DescriptionThe tx_peek() function returns the number of unused bytes in the transmit FIFO.

    6.2.2 Prototypeint tx_peek( void )

    6.2.3 ReturnData Type Description

    integer Number of bytes of free space in UART transmit FIFO

  • 7/28/2019 swra306

    12/15

    Design Note DN117

    SWRA306 Page 12 of 14

    6.3 tx_send()

    6.3.1 DescriptionThe tx_send() function pushes a message to the end of the transmit FIFO if there is

    enough room for the entire message. If there is inadequate free space in the FIFO, nothing isappended to the FIFO. The transmit FIFO is set to 50 bytes by default, but can be resized in

    the options.h file.

    6.3.2 Prototypebool tx_send(const void* data, size_t len)

    6.3.3 Parameter Details

    Parameter Description(void *) data Pointer to first byte of data to be sentlen Length in bytes of data to be sent (max 50)

    6.3.4 Return

    Boolean Value Description

    true (1) Data successfully pushed onto buffer

    false (0) Not enough room in transmit buffer; No data

    pushed onto buffer

    6.4 tx_send_wait()

    6.4.1 DescriptionThe tx_send_wait() function pushes a message to the end of the transmit FIFO, but

    unlike tx_send(), the message length can exceed the size of the FIFO. For messages

    longer than the available space in the FIFO, tx_send_wait() pushes the message into the

    FIFO in pieces, filling the buffer with the data as space becomes available due to completedtransmissions. The function is a blocking task in that it does not terminate until the entiremessage has been delivered to the FIFO.

    6.4.2 Prototypebool tx_send_wait(const void* data, size_t len)

    6.4.3 Parameter Details

    Parameter Description(void *) data Pointer to first byte of data to be sentlen Length in bytes of data to be sent

    6.4.4 ReturnBoolean Value Description

    true (1) Data successfully pushed onto buffer

    false (0) Null pointer orlen = 0

    6.5 rx_peek()

    6.5.1 DescriptionThe rx_peek() function returns the number of bytes of unread received data in the receive

    FIFO. It is recommended to call rx_peek()to determine if there is unread data in the receive

    FIFO before calling rx_receive().

    6.5.2 Prototypeint rx_peek()

    6.5.3 Return

    Data Type Description

    integer Number of unread bytes available in the UART receive FIFO

  • 7/28/2019 swra306

    13/15

    Design Note DN117

    SWRA306 Page 13 of 14

    6.6 rx_receive()

    6.6.1 DescriptionThe rx_receive() function pulls unread data out of the UART receive FIFO to a specified

    location until the specified maximum number of bytes has been read or the receive FIFO hasbeen emptied. The function returns the actual number of bytes read.

    6.6.2 Prototypeint rx_receive(void *data, int max_len)

    6.6.3 Parameter Details

    Parameter Description(void *) data Location to which buffer data should be readmax_len Maximum number of bytes to be read from buffer

    6.6.4 Return

    Data Type Description

    integer Number of bytes actually read from buffer

    6.7 uart_busy()

    6.7.1 DescriptionThe uart_busy() function indicates whether there is any impending actions required by theUART, either there is still data in the transmit FIFO or there is unread data in the receiveFIFO.

    6.7.2 Prototypebool uart_busy( void )

    6.7.3 ReturnBoolean Value Description

    true (1) UART is in use; UART transmit and/or receive buffers have data

    false (0) UART idle; both UART buffers are empty

  • 7/28/2019 swra306

    14/15

    Design Note DN117

    SWRA306 Page 14 of 14

    7 General Information

    7.1 Document History

    Revision Date Description/Changes

    SWRA306 2009.09.22 Initial release.

  • 7/28/2019 swra306

    15/15

    I M P O R T A N T N O T I C E

    T e x a s I n s t r u m e n t s I n c o r p o r a t e d a n d i t s s u b s i d i a r i e s ( T I ) r e s e r v e t h e r i g h t t o m a k e c o r r e c t i o n s , m o d i f i c a t i o n s , e n h a n c e m e n t s , i m p r o v e m e n t s ,a n d o t h e r c h a n g e s t o i t s p r o d u c t s a n d s e r v i c e s a t a n y t i m e a n d t o d i s c o n t i n u e a n y p r o d u c t o r s e r v i c e w i t h o u t n o t i c e . C u s t o m e r s s h o u l d o b t a i n t h e l a t e s t r e l e v a n t i n f o r m a t i o n b e f o r e p l a c i n g o r d e r s a n d s h o u l d v e r i f y t h a t s u c h i n f o r m a t i o n i s c u r r e n t a n d c o m p l e t e . A l l p r o d u c t s a r e s o l d s u b j e c t t o T I s t e r m s a n d c o n d i t i o n s o f s a l e s u p p l i e d a t t h e t i m e o f o r d e r a c k n o w l e d g m e n t .

    T I w a r r a n t s p e r f o r m a n c e o f i t s h a r d w a r e p r o d u c t s t o t h e s p e c i f i c a t i o n s a p p l i c a b l e a t t h e t i m e o f s a l e i n a c c o r d a n c e w i t h T I s s t a n d a r d

    w a r r a n t y . T e s t i n g a n d o t h e r q u a l i t y c o n t r o l t e c h n i q u e s a r e u s e d t o t h e e x t e n t T I d e e m s n e c e s s a r y t o s u p p o r t t h i s w a r r a n t y . E x c e p t w h e r e m a n d a t e d b y g o v e r n m e n t r e q u i r e m e n t s , t e s t i n g o f a l l p a r a m e t e r s o f e a c h p r o d u c t i s n o t n e c e s s a r i l y p e r f o r m e d .

    T I a s s u m e s n o l i a b i l i t y f o r a p p l i c a t i o n s a s s i s t a n c e o r c u s t o m e r p r o d u c t d e s i g n . C u s t o m e r s a r e r e s p o n s i b l e f o r t h e i r p r o d u c t s a n da p p l i c a t i o n s u s i n g T I c o m p o n e n t s . T o m i n i m i z e t h e r i s k s a s s o c i a t e d w i t h c u s t o m e r p r o d u c t s a n d a p p l i c a t i o n s , c u s t o m e r s s h o u l d p r o v i d e a d e q u a t e d e s i g n a n d o p e r a t i n g s a f e g u a r d s .

    T I d o e s n o t w a r r a n t o r r e p r e s e nt t h a t a n y l i c e n s e , e i t h e r e x p r e s s o r i m p l i e d , i s g r a n t e d u n d e r a n y T I p a t e n t r i g h t , c o p y r i g h t , m a s k w o r k r i g h t , o r o t h e r T I i n t e l l e c t u a l p r o p e r t y r i g h t r e l a t i n g t o a n y c o m b i n a t i o n , m a c h i n e , o r p r o c e s s i n w h i c h T I p r o d u c t s o r s e r v i c e s a r e u s e d . I n f o r m a t i o n p u b l i s h e d b y T I r e g a r d i n g t h i r d - p a r t y p r o d u c t s o r s e r v i c e s d o e s n o t c o n s t i t u t e a l i c e n s e f r o m T I t o u s e s u c h p r o d u c t s o r s e r v i c e s o r a w a r r a n t y o r e n d o r s e m e n t t h e r e o f . U s e o f s u c h i n f o r m a t i o n m a y r e q u i r e a l i c e n s e f r o m a t h i r d p a r t y u n d e r t h e p a t e n t s o r o t h e r i n t e l l e c t u a l p r o p e r t y o f t h e t h i r d p a r t y , o r a l i c e n s e f r o m T I u n d e r t h e p a t e n t s o r o t h e r i n t e l l e c t u a l p r o p e r t y o f T I .

    R e p r o d u c t i o n o f T I i n f o r m a t i o n i n T I d a t a b o o k s o r d a t a s h e e t s i s p e r m i s s i b l e o n l y i f r e p r o d u c t i o n i s w i t h o u t a l t e r a t i o n a n d i s a c c o m p a n i e d b y a l l a s s o c i a t e d w a r r a n t i e s , c o n d i t i o n s , l i m i t a t i o n s , a n d n o t i c e s . R e p r o d u c t i o n o f t h i s i n f o r m a t i o n w i t h a l t e r a t i o n i s a n u n f a i r a n d d e c e p t i v e b u s i n e s s p r a c t i c e . T I i s n o t r e s p o n s i b l e o r l i a b l e f o r s u c h a l t e r e d d o c u m e n t a t i o n . I n f o r m a t i o n o f t h i r d p a r t i e s m a y b e s u b j e c t t o a d d i t i o n a l r e s t r i c t i o n s .

    R e s a l e o f T I p r o d u c t s o r s e r v i c e s w i t h s t a t e m e n t s d i f f e r e n t f r o m o r b e y o n d t h e p a r a m e t e r s s t a t e d b y T I f o r t h a t p r o d u c t o r s e r v i c e v o i d s a l l

    e x p r e s s a n d a n y i m p l i e d w a r r a n t i e s f o r t h e a s s o c i a t e d T I p r o d u c t o r s e r v i c e a n d i s a n u n f a i r a n d d e c e p t i v e b u s i n e s s p r a c t i c e . T I i s n o t r e s p o n s i b l e o r l i a b l e f o r a n y s u c h s t a t e m e n t s .

    T I p r o d u c t s a r e n o t a u t h o r i z e d f o r u s e i n s a f e t y - c r i t i c a l a p p l i c a t i o n s ( s u c h a s l i f e s u p p o r t ) w h e r e a f a i l u r e o f t h e T I p r o d u c t w o u l d r e a s o n a b l yb e e x p e c t e d t o c a u s e s e v e r e p e r s o n a l i n j u r y o r d e a t h , u n l e s s o f f i c e r s o f t h e p a r t i e s h a v e e x e c u t e d a n a g r e e m e n t s p e c i f i c a l l y g o v e r n i n g s u c h u s e . B u y e r s r e p r e s e n t t h a t t h e y h a v e a l l n e c e s s a r y e x p e r t i s e i n t h e s a f e t y a n d r e g u l a t o r y r a m i f i c a t i o n s o f t h e i r a p p l i c a t i o n s , a n d a c k n o w l e d g e a n d a g r e e t h a t t h e y a r e s o l e l y r e s p o n s i b l e f o r a l l l e g a l , r e g u l a t o r y a n d s a f e t y - r e l a t e d r e q u i r e m e n t s c o n c e r n i n g t h e i r p r o d u c t s a n d a n y u s e o f T I p r o d u c t s i n s u c h s a f e t y - c r i t i c a l a p p l i c a t i o n s , n o t w i t h s t a n d i n g a n y a p p l i c a t i o n s - r e l a t e d i n f o r m a t i o n o r s u p p o r t t h a t m a y b e p r o v i d e d b y T I . F u r t h e r , B u y e r s m u s t f u l l y i n d e m n i f y T I a n d i t s r e p r e s e n t a t i v e s a g a i n s t a n y d a m a g e s a r i s i n g o u t o f t h e u s e o f T I p r o d u c t s i n s u c h s a f e t y - c r i t i c a l a p p l i c a t i o n s .

    T I p r o d u c t s a r e n e i t h e r d e s i g n e d n o r i n t e n d e d f o r u s e i n m i l i t a r y / a e r o s p a c e a p p l i c a t i o n s o r e n v i r o n m e n t s u n l e s s t h e T I p r o d u c t s a r es p e c i f i c a l l y d e s i g n a t e d b y T I a s m i l i t a r y - g r a d e o r " e n h a n c e d p l a s t i c . " O n l y p r o d u c t s d e s i g n a t e d b y T I a s m i l i t a r y - g r a d e m e e t m i l i t a r y s p e c i f i c a t i o n s . B u y e r s a c k n o w l e d g e a n d a g r e e t h a t a n y s u c h u s e o f T I p r o d u c t s w h i c h T I h a s n o t d e s i g n a t e d a s m i l i t a r y - g r a d e i s s o l e l y a t t h e B u y e r ' s r i s k , a n d t h a t t h e y a r e s o l e l y r e s p o n s i b l e f o r c o m p l i a n c e w i t h a l l l e g a l a n d r e g u l a t o r y r e q u i r e m e n t s i n c o n n e c t i o n w i t h s u c h u s e .

    T I p r o d u c t s a r e n e i t h e r d e s i g n e d n o r i n t e n d e d f o r u s e i n a u t o m o t i v e a p p l i c a t i o n s o r e n v i r o n m e n t s u n l e s s t h e s p e c i f i c T I p r o d u c t s a r ed e s i g n a t e d b y T I a s c o m p l i a n t w i t h I S O / T S 1 6 9 4 9 r e q u i r e m e n t s . B u y e r s a c k n o w l e d g e a n d a g r e e t h a t , i f t h e y u s e a n y n o n - d e s i g n a t e d p r o d u c t s i n a u t o m o t i v e a p p l i c a t i o n s , T I w i l l n o t b e r e s p o n s i b l e f o r a n y f a i l u r e t o m e e t s u c h r e q u i r e m e n t s .

    F o l l o w i n g a r e U R L s w h e r e y o u c a n o b t a i n i n f o r m a t i o n o n o t h e r T e x a s I n s t r u m e n t s p r o d u c t s a n d a p p l i c a t i o n s o l u t i o n s :

    P r o d u c t s A p p l i c a t i o n s A m p l i f i e r s a m p l i f i e r . t i . c o m A u d i o w w w . t i . c o m / a u d i o D a t a C o n v e r t e r s d a t a c o n v e r t e r . t i . c o m A u t o m o t i v e w w w . t i . c o m / a u t o m o t i v e D L P P r o d u c t s w w w . d l p . c o m B r o a d b a n d w w w . t i . c o m / b r o a d b a n d D S P d s p . t i . c o m D i g i t a l C o n t r o l w w w . t i . c o m / d i g i t a l c o n t r o l C l o c k s a n d T i m e r s w w w . t i . c o m / c l o c k s M e d i c a l w w w . t i . c o m / m e d i c a l I n t e r f a c e i n t e r f a c e . t i . c o m M i l i t a r y w w w . t i . c o m / m i l i t a r y L o g i c l o g i c . t i . c o m O p t i c a l N e t w o r k i n g w w w . t i . c o m / o p t i c a l n e t w o r k P o w e r M g m t p o w e r . t i . c o m S e c u r i t y w w w . t i . c o m / s e c u r i t y M i c r o c o n t r o l l e r s m i c r o c o n t r o l l e r . t i . c o m T e l e p h o n y w w w . t i . c o m / t e l e p h o n y R F I D w w w . t i - r f i d . c o m V i d e o & I m a g i n g w w w . t i . c o m / v i d e o R F / I F a n d Z i g B e e S o l u t i o n s w w w . t i . c o m / l p r f W i r e l e s s w w w . t i . c o m / w i r e l e s s

    M a i l i n g A d d r e s s : T e x a s I n s t r u m e n t s , P o s t O f f i c e B o x 6 5 5 3 0 3 , D a l l a s , T e x a s 7 5 2 6 5 C o p y r i g h t 2 0 0 9 , T e x a s I n s t r u m e n t s I n c o r p o r a t e d

    http://www.ti.com/lprfhttp://www.ti.com/wirelesshttp://www.ti-rfid.com/http://www.ti.com/videohttp://microcontroller.ti.com/http://www.ti.com/telephonyhttp://power.ti.com/http://www.ti.com/securityhttp://logic.ti.com/http://www.ti.com/opticalnetworkhttp://interface.ti.com/http://www.ti.com/militaryhttp://www.ti.com/clockshttp://www.ti.com/medicalhttp://dsp.ti.com/http://www.ti.com/digitalcontrolhttp://amplifier.ti.com/http://www.ti.com/audiohttp://www.ti.com/wirelesshttp://www.ti.com/lprfhttp://www.ti.com/videohttp://www.ti-rfid.com/http://www.ti.com/telephonyhttp://microcontroller.ti.com/http://www.ti.com/securityhttp://power.ti.com/http://www.ti.com/opticalnetworkhttp://logic.ti.com/http://www.ti.com/militaryhttp://interface.ti.com/http://www.ti.com/medicalhttp://www.ti.com/clockshttp://www.ti.com/digitalcontrolhttp://dsp.ti.com/http://www.ti.com/broadbandhttp://www.dlp.com/http://www.ti.com/automotivehttp://dataconverter.ti.com/http://www.ti.com/audiohttp://amplifier.ti.com/