Spnu 501 H
Spnu 501 H
Version 2.01.01
Reference Guide
1 Trademarks ......................................................................................................................... 4
2 Introduction ......................................................................................................................... 5
2.1 Reference Material ....................................................................................................... 5
2.2 ................................................................................................. 5
Function Listing Format
3 F021 Flash API Overview ...................................................................................................... 7
3.1 Introduction................................................................................................................ 7
3.2 API Overview ............................................................................................................. 7
3.3 Using API.................................................................................................................. 8
4 API Functions .................................................................................................................... 12
4.1 Flash State Machine Functions ....................................................................................... 12
4.2 Asynchronous Functions .............................................................................................. 18
4.3 Program Functions ..................................................................................................... 20
4.4 Read Functions ......................................................................................................... 22
4.5 Informational Functions ................................................................................................ 31
4.6 Utility Functions ......................................................................................................... 34
4.7 User Definable Functions .............................................................................................. 35
5 API Macros ........................................................................................................................ 36
5.1 FAPI_CHECK_FSM_READY_BUSY ................................................................................ 36
5.2 FAPI_CLEAR_FSM_DONE_EVENT ................................................................................. 36
5.3 FAPI_GET_FSM_STATUS ............................................................................................ 37
5.4 FAPI_SUSPEND_FSM ................................................................................................ 38
5.5 FAPI_WRITE_EWAIT .................................................................................................. 39
5.6 FAPI_WRITE_LOCKED_FSM_REGISTER ......................................................................... 39
6 Recommended FSM Flows .................................................................................................. 39
6.1 New Devices From Factory ........................................................................................... 39
6.2 Recommended Erase Flows .......................................................................................... 40
6.3 Recommended Program Flow ........................................................................................ 42
Appendix A Flash State Machine Commands ................................................................................. 43
A.1 Flash State Machine Commands.................................................................................... 43
Appendix B Typedefs and Enumerations....................................................................................... 44
B.1 Type Definitions ....................................................................................................... 44
B.2 Enumerations .......................................................................................................... 44
Appendix C Flash Validation Procedure ........................................................................................ 49
Appendix D Parallel Signature Analysis (PSA) Algorithm ................................................................ 50
Appendix E Revision History ....................................................................................................... 51
List of Figures
1 FMSTAT Register .......................................................................................................... 37
2 Recommended Sector Erase Flow....................................................................................... 40
3 Recommended Bank Erase Flow ........................................................................................ 41
4 Recommended Program Flow ............................................................................................ 42
List of Tables
1 Summary of Flash State Machine Functions ............................................................................. 7
2 Summary of Asynchronous Command Functions ....................................................................... 7
3 Summary of Program Functions ........................................................................................... 7
4 Summary of Read Functions ............................................................................................... 8
5 Summary of Information Functions ........................................................................................ 8
6 Summary of User Defined Functions...................................................................................... 8
7 Summary of Utility Functions ............................................................................................... 8
8 FMSTAT Register Field Descriptions .................................................................................... 37
9 Flash State Machine Commands ........................................................................................ 43
10 API Version History ........................................................................................................ 51
11 Document Revision History ............................................................................................... 52
1 Trademarks
All trademarks are the property of their respective owners.
This reference guide provides a detailed description of Texas Instruments' F021 Flash API functions that
can be used to erase, program and verify F021 Flash on TI devices.
2 Introduction
<type_n> parameter_n
)
Parameters
Description
Describes the function function_name(). This section also describes any special characteristics or
restrictions that might apply:
• Function blocks or might block under certain conditions
• Function has pre-conditions that might not be obvious
• Function has restrictions or special behavior
Return Value
Specifies any value or values returned by function function_name().
See Also
Lists other functions or data types related to function function_name().
Example
Provides an example (or a reference to an example) that illustrates the use of function function_name().
3.1 Introduction
The F021 Flash API is a library of routines that when called with the proper parameters in the proper
sequence, erases, programs, or verifies Flash memory on Texas Instruments microcontrollers using the
F021 (65nm) process. On ARM Cortex devices, these routines must be run in a privileged mode (a mode
other than user) to allow access to the Flash memory controller registers. The API verifies for the selected
bank, that the appropriate RWAIT or EWAIT value is set for the specified system frequency.
(1)
This function is only available on devices with the L2FMC Flash Controller.
(1)
For devices with L2FMC memory controller, these functions have to be executed from RAM.
(1)
This function is deprecated and should not be used in new projects
3.3.1.1 Before Using Any Erase, Program or Read Flash API Function
Before using any asynchronous command Table 2 , program Table 3 or read Table 4 functions, the
function Fapi_initializeFlashBanks() must be called to correctly initialize the Flash Memory controller.
– F021_API_CortexR4_BE_NDS.lib – This is the Flash API object file without debug symbols for
Cortex R4 Big Endian devices . (In addition to the general build options, this library was built using :
--symdebug:none)
– F021_API_CortexR4_BE_v3D16_NDS.lib – This is the Flash API object file without debug symbols
for Cortex R4 Big Endian devices that are using floating point unit. (In addition to the general build
options, this library was built using : --symdebug:none --float_support=VFPv3D16)
– F021_API_CortexR4_BE_L2FMC_NDS.lib – This is the Flash API object file without debug symbols
for Cortex R4 Big Endian devices using the L2FMC memory controller. (In addition to the general
build options, this library was built using : --symdebug:none )
– F021_API_CortexR4_LE_NDS.lib – This is the Flash API object file without debug symbols for
Cortex R4 Little Endian devices. (In addition to the general build options, this library was built
using : -me --symdebug:none)
– F021_API_CortexR4_LE_v3D16_NDS.lib – This is the Flash API object file without debug symbols
for Cortex R4 Little Endian devices that are using floating point unit. (In addition to the general build
options, this library was built using : -me --symdebug:none --float_support=VFPv3D16)
– F021_API_CortexR4_LE_L2FMC_NDS.lib – This is the Flash API object file without debug symbols
for Cortex R4 Little Endian devices using the L2FMC memory controller. (In addition to the general
build options, this library was built using : -me --symdebug:none)
– F021_API_CortexR4_BE_L2FMC_v3D16_NDS.lib – This is the Flash API object without debug
symbols file for Cortex R4/R5 Big Endian devices using the L2FMC memory controller and float
point unit. (In addition to the general build options, this library was built using : --symdebug:none --
float_support=VFPv3D16)
– F021_API_CortexR4_LE_L2FMCv3D16_NDS.lib – This is the Flash API object file without debug
symbols for Cortex R4/R5 Little Endian devices using the L2FMC memory controller and float point
unit. (In addition to the general build options, this library was built using : -me --symdebug:none --
float_support=VFPv3D16)
• Source Files
– Fapi_UserDefinedFunctions.c – This is file that contains the user definable functions.
• Include Files
– F021.h – This is the master include file and includes all other include files. This should be the only
include file added to the users's code.
• The following include files should not be included directly by the user’s code, but are listed here for
user reference:
– Compatibility.h - A set of macros to be used for backwards compatibility for 1.x.x versions of the
API.
– Constants.h – Constant definitions used by the API.
– FapiFunctions.h - Contains all the Fapi function prototypes.
– Helpers.h – Set of helper defines
– Registers.h – Definitions common to all register implementations and includes the appropriate
register include file for the selected device type.
– Registers_FMC_BE.h – Big Endian Flash memory controller registers structure for TMS570/RM4
devices.
– Registers_FMC_LE.h – Little Endian Flash memory controller registers structure for TMS570/RM4
devices.
– Types.h – Contains all the enumerations and structures used by the API
NOTE: The F021 Flash API library cannot be executed from the same bank as the active bank
selected for the API commands to operate on. On single bank devices, the F021 Flash API
must be executed from RAM.
NOTE: The F021 Flash API library must be able to read from addresses 0x000, 0x100, 0x200,
0x300, and the TI OTP region, 0xF008_0000 - 0xF00B_0000, for the API to operate
correctly.
4 API Functions
4.1.1 Fapi_disableAutoEccCalculation()
Disables auto generation of ECC on L2FMC devices
Synopsis
Fapi_StatusType Fapi_disableAutoEccCalculation(void)
Parameters
None
Description
NOTE: This function is only available on devices using the L2FMC Flash Memory Controller.
This function disables the auto generation of ECC when data is written to the FWPWRITEx registers on
L2FMC devices. The use of this function is primarily intended for those users writing their own
programming functions based on the application note, Advanced F021 Flash API Erase/Program Usage
(SPNA148). The function Fapi_issueProgrammingCommand() Section 4.2.2 will automatically set this bit
depending on the programming mode used (enabled for Fapi_AutoEccGeneration, disabled for all other
modes) and will stay that way when this function returns.
Return Value
• Fapi_Status_Success (success)
4.1.2 Fapi_disableBanksForOtpWrite()
Disables ability to program the Customer OTP on all Flash Banks.
Synopsis
Fapi_StatusType Fapi_disableBanksForOtpWrite(void)
Parameters
None
Description
This function sets OTPPRODIS field in the FBAC register to disable the ability to program the Customer
OTP for all banks.
Return Value
• Fapi_Status_Success (success)
4.1.3 Fapi_disableFsmDoneEvent()
Disables generation of the FSM_DONE event.
Synopsis
Fapi_StatusType Fapi_disableFsmDoneEvent(void)
Parameters
None
Description
This function disables the generation of the FSM_DONE event. For more information on the FSM_DONE
event, see the device-specific technical reference manual.
Return Value
• Fapi_Status_Success (success)
4.1.4 Fapi_enableAutoEccCalculation()
Enables auto generation of ECC on L2FMC devices
Synopsis
Fapi_StatusType Fapi_enableAutoEccCalculation(void)
Parameters
None
Description
NOTE: This function is only available on devices using the L2FMC Flash Memory Controller.
This function enables the auto generation of ECC when data is written to the FWPWRITEx registers on
L2FMC devices. The use of this function is primarily intended for those users writing their own
programming functions based on Advanced F021 Flash API Erase/Program Usage (SPNA148). The
function Fapi_issueProgrammingCommand() Section 4.2.2 will automatically set this bit depending on the
programming mode used (enabled for Fapi_AutoEccGeneration, disabled for all other modes) and will stay
that way when this function returns.
Return Value
• Fapi_Status_Success (success)
4.1.5 Fapi_enableBanksForOtpWrite()
Enables ability to program the Customer OTP region for the specified banks
Synopsis
Fapi_StatusType Fapi_enableBanksForOtpWrite(
uint8_t u8Banks)
Parameters
u8Banks [in] Bit mask indicating each bank to be enabled for OTP programming
Description
This function sets up the OTPPRODIS field in the FBAC register to enable the ability to program Customer
OTP for the banks specified in the bitfield mask u8Banks. The bitfield mask has Bank 0 as bit 1 up to
Bank 7 as bit 7.
Return Value
• Fapi_Status_Success (success)
4.1.6 Fapi_enableEepromBankSectors()
Sets up the sectors available on EEPROM banks for erase and programming
Synopsis
Fapi_StatusType Fapi_enableEepromBankSectors(
uint32_t u32SectorsEnables_31_0,
uint32_t u32SectorsEnables_63_32)
Parameters
u32SectorsEnables_31_0 [in] Bit mask indicating which of sectors 0-31 are enabled for erase and
programming.
u32SectorsEnables_63_32 [in] Bit mask indicating which of sectors 32-63 are enabled for erase and
programming.
Description
NOTE: On devices using the L2FMC Flash Memory Controller, this function should be called only
when the Flash State Machine is Idle .
This function sets up the sectors in the EEPROM banks that are available for erase and programming
operations. This function must be called with the EEPROM bank (Flash Bank 7) as the active bank.
Additionally, the function must be called once before performing program and sector erase operations and
always before a bank erase operation. Each bit refers to a single sector with Sector 0 is bit 0 in
u32SectorEnables_31_0 to Sector 31 is bit 31 in u32SectorEnables_31_0 and Sector 32 is bit 0 in
u32SectorEnables_63_32 to Sector 63 is bit 31 in u32SectorEnables_63_32. This function will check the
OTP to see if the requested sector exists on the device and will enable it only if exists.
Return Value
• Fapi_Status_Success (success)
4.1.7 Fapi_enableFsmDoneEvent()
Enables the generation of the FSM_DONE event
Synopsis
Fapi_StatusType Fapi_enableBanksForOtpWrite(void)
Parameters
None
Description
This function enables the generation of the FSM_DONE event. This event is generated when the FSM
finishes a program or erase operation. The FSM_DONE event flag resides in the FEDACSTATUS register
at bit 24. For a complete description of the FEDACSTATUS register and FSM_DONE event, see the F021
Flash Module chapter in the device-specific technical reference manual. This FSM_DONE flag must be
cleared by writing a one to this bit in order for the event signal to stop. There is a helper macro
CLEAR_FSM_DONE_EVENT defined to accomplish this.
Return Value
• Fapi_Status_Success (success)
4.1.8 Fapi_enableMainBankSectors()
Sets up the sectors available on non-EEPROM banks for erase and programming
Synopsis
Fapi_StatusType Fapi_enableMainBankSectors(
uint16_t u16SectorsEnables)
Parameters
u16SectorsEnables [in] Bit mask indicating which of sectors 0-15 are enabled for erase and
programming.
Description
NOTE: On devices using the L2FMC Flash Memory Controller, this function should be called only
when the Flash State Machine is Idle .
This function sets up the sectors in the non-EEPROM banks that are available for erase and programming
operations. This function must be called with the bank intended for the erase or program operation as the
active bank. Additionally, the function must be called once before performing program and sector erase
operations and always before a bank erase operation. Each bit refers to a single sector where Sector 0 is
bit 0 to Sector 15 is bit 15 in u16SectorEnables.This function will check the OTP to see if the requested
sector exists on the device and will enable it only if exists.
Return Value
• Fapi_Status_Success (success)
4.1.9 Fapi_isAddressEcc()
Indicates if an address is in the Flash Memory Controller ECC space
Synopsis
boolean_t Fapi_isAddressEcc(
uint32_t u32Address)
Parameters
Description
This function returns True if the address in u32Address is in ECC address space or False if it is not.
Return Value
• false (Address is not in ECC address space)
• true (Address is in ECC address space)
4.1.10 Fapi_initializeFlashBanks()
Initializes the Flash Banks for API operations
Synopsis
Fapi_StatusType Fapi_initializeFlashBanks(
uint32_t u32HclkFrequency)
Parameters
u32HclkFrequency [in] System clock frequency in MHz. The value should be rounded up to
the next integer. For example, if the system clock frequency is
133.3MHz, then the u32HclkFrequency value should be 134.
Description
This function is required to initialize the Flash Banks before using any asynchronous command Table 2 ,
program Table 3 or read Table 4 functions. This function must also be called if the system frequency is
changed and/or RWAIT/EWAIT values are changed.
NOTE: This function requires that Bank 7 be enabled and powered. Once this function has
completed, Bank 7 may be disabled and powered off.
RWAIT and EWAIT register values must be set before calling this function. There is a helper
macro FAPI_WRITE_EWAIT(_mEwait) is provided to make writing the EWAIT value easier
due to the need for the EEPROM_CONFIG register to be unlocked before you can write the
EWAIT value.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidHclkValue (failure: System clock does not match specified wait value)
• Fapi_Error_OtpChecksumMismatch (failure: Calculated TI OTP checksum does not match value in
TI OTP)
4.1.11 Fapi_remapEccAddress()
Takes ECC address and remaps it to main address space
Synopsis
uint32_t Fapi_remapEccAddress(
uint32_t u32EccAddress)
Parameters
Description
This function returns the main Flash address for the given ECC Flash address passed in u32EccAddress.
Return Value
• 32-bit Main Flash Address
4.1.12 Fapi_remapMainAddress()
Takes Flash Main address and remaps it to its corresponding ECC address
Synopsis
uint32_t Fapi_remapMainAddress(
uint32_t u32MainAddress)
Parameters
Description
This function returns the ECC Flash address for the given Main Flash address passed in
u32MainAddress.
Return Value
• 32-bit ECC Flash Address
4.1.13 Fapi_setActiveFlashBank()
Sets the active Flash Bank
Synopsis
Fapi_StatusType Fapi_setActiveFlashBank(
Fapi_FlashBankType oNewFlashBank)
Parameters
Description
This function sets the active bank (passed in oNewFlashBank) for any Flash operation issued after calling
this function.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidBank (failure: Bank specified does not exist on device)
4.2.1 Fapi_issueAsyncCommand()
Issues a command to the Flash State Machine that only requires a command
Synopsis
Fapi_StatusType Fapi_issueAsyncCommand(
Fapi_FlashStateCommandsType oCommand)
Parameters
Description
This function issues a command to the Flash State Machine for commands not requiring any additional
information. Typical commands are Clear Status, Program Resume, Erase Resume and Clear_More.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidCommand (failure: Command specified requires an address to be specified)
4.2.2 Fapi_issueAsyncCommandWithAddress()
Issues a command to the Flash State Machine with an address
Synopsis
Fapi_StatusType Fapi_issueAsyncCommandWithAddress(
Fapi_FlashStateCommandsType oCommand,
uint32_t *pu32StartAddress)
Parameters
Description
This function issues a command to the Flash State Machine for commands requiring an address to
function correctly. Primary commands used with function are Erase Sector and Erase Bank.
NOTE: Reading a Flash memory location from the bank that an erase command (sector or bank) is
currently being performed will stall the CPU until the erase command finishes and the
FMSTAT register indicates the FSM is not busy.
The Bank Erase command is not a suspendable operation.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidCommand (failure: Command specified does not require an address to be
specified or is a program command)
4.3.1 Fapi_issueProgrammingCommand()
Sets up data and issues program command to valid Flash memory addresses
Synopsis
Fapi_StatusType Fapi_issueProgrammingCommand(
uint32_t *pu32StartAddress,
uint8_t *pu8DataBuffer,
uint8_t u8DataBufferSizeInBytes,
uint8_t *pu8EccBuffer,
uint8_t u8EccBufferSizeInBytes,
Fapi_FlashProgrammingCommandType oMode)
Parameters
pu32StartAddress [in] start address in Flash for the data and ECC to be programmed
pu8DataBuffer [in] pointer to the Data buffer address
u8DataBufferSizeInBytes [in] number of bytes in the Data buffer
pu8EccBuffer [in] pointer to the ECC buffer address
u8EccBufferSizeInBytes [in] number of bytes in the ECC buffer
oMode [in] Indicates the programming mode to use:
Fapi_DataOnly Programs only the data buffer
Fapi_AutoEccGeneration Programs the data buffer and
auto generates and programs the
ECC.
Fapi_DataAndEcc Programs both the data and ECC
buffers
Fapi_EccOnly Programs only the ECC buffer
Description
This function sets up the programming registers of the Flash State Machine based on the supplied
parameters. It offers four different programming modes to the user and handles multiple bank widths
automatically.
Programming modes:
Fapi_DataOnly – This mode will only program the data portion in Flash at the address specified. It can
program from 1 byte up to the bank width (8,16,32) bytes based on the bank architecture. The supplied
starting address to program at plus the data buffer length cannot exceed the bank data width. (Ex.
Programming 14 bytes on a 16 byte wide bank starting at address 0x4 is not allowed.)
Fapi_AutoEccGeneration – This will program the supplied data portion in Flash along with automatically
generated ECC. ECC is calculated on 64-bit aligned addresses up to the data width of the bank. Data not
supplied is treated as 0xFF. For example, on a device with a 144-bit wide bank width, if data is written
only to bytes 0x0-0x7 (or 0x8-0xF), then the ECC will only be calculated for those 64 bits. If the data
supplied crosses a 64-bit boundary, ECC will be calculated for both 64-bit words. For example, on a
device with a 144-bit wide bank width, data is written to bytes 0x4 - 0xB, the 2 bytes of ECC data will be
calculated. The data restrictions for Fapi_DataOnly also exist for this option.
Fapi_DataAndEcc – This will program both the supplied data and ECC in Flash at the address specified.
The data supplied must be aligned on a 64-bit word and the length of data must correlate to the supplied
ECC. (For example, data buffer length is 8 bytes, the ECC buffer must be 1 byte).
Fapi_EccOnly – This mode will only program the ECC portion in Flash at the address specified. It can
program from 1 byte up to the bank ECC width (1, 2, 4) bytes based on the bank architecture. The
supplied starting address to program at plus the ECC buffer length cannot exceed the bank ECC width
(programming 3 bytes on a 2 byte ECC wide bank starting at address 0x0 is not allowed).
NOTE: Reading a Flash memory location from the bank that an program command is currently
being performed will stall the CPU until the program command finishes and the FMSTAT
register indicates the FSM is not busy.
The length of pu8DataBuffer and pu8EccBuffer cannot exceed the bank width of the current
active bank. For bank width information, see the F021 Flash Module chapter in the device-
specific technical reference manual.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_AsyncIncorrectDataBufferLength (failure: Data buffer size specified exceeds Data bank
width)
• Fapi_Error_AsyncIncorrectEccBufferLength (failure: ECC buffer size specified exceeds ECC bank
width)
• Fapi_Error_AsyncDataEccBufferLengthMismatch (failure: Data buffer size either is not 64-bit
aligned or Data length exceeds amount ECC supplied)
4.3.2 Fapi_issueProgrammingCommandForEccAddress()
Synopsis
Fapi_StatusType Fapi_issueProgrammingCommandForEccAddress(
uint32_t *pu32StartAddress,
uint8_t *pu8EccBuffer,
uint8_t u8EccBufferSizeInBytes)
Parameters
pu32StartAddress [in] ECC start address in Flash for the ECC to be programmed
pu8EccBuffer [in] pointer to the ECC buffer address
u8EccBufferSizeInBytes [in] number of bytes in the ECC buffer
Description
This function will remap an address in the ECC memory space to the corresponding data address space
and then call Fapi_issueProgrammingCommand() to program the supplied ECC data. The same
limitations for Fapi_issueProgrammingCommand() using Fapi_EccOnly mode applies to this function.
NOTE: Reading a Flash memory location from the bank that a program command is currently being
performed will stall the CPU until the program command finishes and the FMSTAT register
indicates the FSM is not busy.
The length of pu8EccBuffer cannot exceed the bank width of the current active bank. For
bank width information, see the F021 Flash Module chapter in the device-specific technical
reference manual.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_AsyncIncorrectEccBufferLength (failure: Data buffer size specified exceeds ECC bank
width)
4.4.1 Fapi_doBlankCheck()
Verifies region specified is erased value
Synopsis
Fapi_StatusType Fapi_doBlankCheck(
uint32_t *pu32StartAddress,
uint32_t u32Length,
Fapi_FlashStatusWordType *poFlashStatusWord)
Parameters
Description
This function checks the device for blank (erase state) starting at the specified address for the length of
32-bit words specified. If a non-blank location is found, these results will be returned in the
poFlashStatusWord parameter. This will use read margin 1 mode for this check. As the erase state of the
Flash is not a valid ECC condition, on Banks 0 - 6 ECC correction at a minimum must be disabled. On
Bank 7, ECC can either be temporarily disabled by writing 0101 to the EE_EDACEN bits or setting the
EE_ALL1_OK bit EE_CTRL1 register.
This function assumes the value passed in pu32StartAddress is a 32bit aligned address.
NOTE: For devices with L2FMC memory controller, this function has to be executed from RAM.
Restrictions
The region being blank checked cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_Fail (failure: region specified is not blank)
4.4.2 Fapi_doBlankCheckByByte()
Verifies region specified is erased value by byte
Synopsis
Fapi_StatusType Fapi_doBlankCheckByByte(
uint8_t *pu8StartAddress,
uint32_t u32Length,
Fapi_FlashStatusWordType *poFlashStatusWord)
Parameters
Description
This function checks the device for blank (erase state) starting at the specified address for the length of 8-
bit words specified. If a non-blank location is found, these results will be returned in the
poFlashStatusWord parameter. This will use read margin 1 mode for this check. As the erase state of the
Flash is not a valid ECC condition, on Banks 0 - 6 ECC correction at a minimum must be disabled. On
Bank 7, ECC can either be temporarily disabled by writing 0101 to the EE_EDACEN bits or setting the
EE_ALL1_OK bit EE_CTRL1 register.
NOTE: For devices with L2FMC memory controller, this function has to be executed from RAM.
Restrictions
The region being blank checked cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_Fail (failure: region specified is not blank)
4.4.3 Fapi_doVerify()
Verifies region specified against supplied data
Synopsis
Fapi_StatusType Fapi_doVerify(
uint32_t *pu32StartAddress,
uint32_t u32Length,
uint32_t *pu32CheckValueBuffer,
Fapi_FlashStatusWordType *poFlashStatusWord)
Parameters
Description
This function verifies the device against the supplied data starting at the specified address for the length of
32-bit words specified. If a location fails to compare, these results will be returned in the
poFlashStatusWord parameter. This will use normal read, read margin 0 and read margin 1 modes for
verifying the data.
This function assumes the value passed in pu32StartAddress is a 32bit aligned address.
Restrictions
The region being verified cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_Fail (failure: region specified does not match supplied data)
4.4.4 Fapi_doVerifyByByte()
Verifies region specified against supplied data by byte
Synopsis
Fapi_StatusType Fapi_doVerifyByByte(
uint8_t *pu8StartAddress,
uint32_t u32Length,
uint8_t *pu8CheckValueBuffer,
Fapi_FlashStatusWordType *poFlashStatusWord)
Parameters
Description
This function verifies the device against the supplied data by the byte starting at the specified address for
the length of 8-bit words specified. If a location fails to compare, these results will be returned in the
poFlashStatusWord parameter. This will use normal read, read margin 0 and read margin 1 modes
checking for verifying the data.
Restrictions
The region being verified cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_Fail (failure: region specified does not match supplied data)
4.4.5 Fapi_doPsaVerify()
Verifies region specified against specified PSA value
Synopsis
Fapi_StatusType Fapi_doPsaVerify(
uint32_t *pu32StartAddress,
uint32_t u32Length,
uint32_t u32PsaValue,
Fapi_FlashStatusWordType *poFlashStatusWord)
Parameters
Description
This function verifies the device against the supplied PSA value starting at the specified address for the
length of 32-bit words specified. The calculated PSA values for all 3 margin modes are returned in the
poFlashStatusWord parameter.
This function assumes the value passed in pu32StartAddress is a 32bit aligned address.
Restrictions
The region being verified checked cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_Fail (failure: region specified does not match supplied data)
4.4.6 Fapi_calculatePsa()
Calculates the PSA for a specified region
Synopsis
uint32_t Fapi_calculatePsa(
uint32_t *pu32StartAddress,
uint32_t u32Length,
uint32_t u32PsaSeed,
Fapi_FlashReadMarginModeType oReadMode)
Parameters
Description
This function calculates the PSA value for the region specified starting at pu32StartAddress for u32Length
32-bit words using u32PsaSeed value in the margin mode specified.
This function assumes the value passed in pu32StartAddress is a 32bit aligned address.
Restrictions
The region that the PSA is being calculated must be 32-bit aligned.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidReadMode (failure: read mode specified is not valid)
4.4.7 Fapi_doMarginRead()
Reads a region of Flash Memory using specified margin mode
Synopsis
Fapi_StatusType Fapi_doMarginRead(
uint32_t *pu32StartAddress,
uint32_t *pu32ReadBuffer,
uint32_t u32Length,
Fapi_FlashReadMarginModeType oReadMode)
Parameters
Description
This function reads the region specified starting at pu32StartAddress for u32Length 32-bit words using
pu32ReadBuffer to store the read values.
This function assumes the value passed in pu32StartAddress is a 32bit aligned address.
NOTE: The region that is being read cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidReadMode (failure: read mode specified is not valid)
• Fapi_Error_NullPointer (failure: pu32ReadBuffer is a NULL pointer)
4.4.8 Fapi_doMarginReadByByte()
Reads a region of Flash Memory using specified margin mode by byte
Synopsis
Fapi_StatusType Fapi_doMarginReadByByte(
uint8_t *pu8StartAddress,
uint8_t *pu8ReadBuffer,
uint32_t u32Length,
Fapi_FlashReadMarginModeType oReadMode)
Parameters
Description
This function reads the region specified starting at pu8StartAddress for u32Length 8-bit words using
pu8ReadBuffer to store the read values.
Restrictions
The region that is being read cannot cross bank address boundary.
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_InvalidReadMode (failure: read mode specified is not valid)
• Fapi_Error_NullPointer (failure: pu8ReadBuffer is a NULL pointer)
4.4.9 Fapi_flushPipeline()
Flushes the FMC pipeline buffers
Synopsis
void Fapi_flushPipeline(void)
Parameters
None
Description
This function flushes the FMC pipeline buffers.
NOTE: The pipeline must be flushed before the first non-API Flash read after an operation that
modifies the Flash contents (Erasing and Programming).
This function makes the assumption that is can read from Flash Addresses 0, 0x100, 0x200,
0x300.
If the Flash and RAM memory regions are swapped, you will need to do 2 dummy reads 128
bytes apart from the remapped Flash memory addresses after an operation that modifies the
Flash contents (Erasing and Programming) before performing any API read functions.
Return Value
None
4.5.1 Fapi_getLibraryInfo()
Returns information about this compile of the Flash API
Synopsis
Fapi_LibraryInfoType Fapi_getLibraryInfo(void)
Parameters
None
Description
This function returns information specific to the compile of the Flash API library. The information is
returned in a struct Fapi_LibraryInfoType. The members are as follows:
• u8ApiMajorVersion – Major version number of this compile of the API
• u8ApiMinorVersion – Minor version number of this compile of the API
• u8ApiRevision – Revision version number of this compile of the API
• oApiProductionStatus – Production status of this compile (Alpha_Internal, Alpha, Beta_Internal, Beta,
Production)
• u32ApiBuildNumber – Build number of this compile. Used to differentiate between different alpha and
beta builds
• u8ApiTechnologyType – Indicates the Flash technology supported by the API. F021 is tech type of
0x04
• u8ApiTechnologyRevision – Indicates the revision of the Technology supported by the API
• u8ApiEndianness – Indicates if this compile of the API is for Big Endian or Little Endian memory
• u32ApiCompilerVersion – Version number of the Code Composer Studio code generation tools used to
compile the API
Return Value
• Fapi_LibraryInfoType (gives the information retrieved about this compile of the API)
4.5.2 Fapi_getDeviceInfo()
Returns information about specific to device code is being executed on
Synopsis
Fapi_DeviceInfoType Fapi_getDeviceInfo(void)
Parameters
None
Description
This function returns information about the specific device the Flash API library is being executed on. The
information is returned in a struct Fapi_DeviceInfoType. The members are as follows:
• u16NumberOfBanks – Number of banks on the device
• u16DevicePackage – Device package pin count
• u16DeviceMemorySize – Device memory size
• u32AsicId – Device ASIC id
• u32LotNumber – Device lot number
• u16FlowCheck – Device Flow check
• u16WaferNumber – Device wafer number
• u16WaferXCoordinate – Device wafer X coordinate
• u16WaferYCoordinate – Device wafer Y coordinate
Return Value
• Fapi_DeviceInfoType (gives the information retrieved about this compile of the API)
4.5.3 Fapi_getBankSectors()
Returns the sector information for the requested bank
Synopsis
Fapi_StatusType Fapi_getBankSectors(
Fapi_FlashBankType oBank,
Fapi_FlashBankSectorsType *poFlashBankSectors)
Parameters
Description
This function returns information about the bank starting address, number of sectors, sector sizes in
kilobytes, and bank technology type. The information is returned in a struct Fapi_FlashBankSectorsType.
The members are as follows:
• oFlashBankTech – Indicates if bank is an FLEP, FLEE or FLES bank type
• u32NumberOfSectors – Indicates the number of sectors in the bank
• u32BankStartAddress – Starting address of the bank
• au16SectorSizes[] – An array of sectors sizes for each sector in the bank (As all sectors on FLEE
banks are the same size, only au16SectorSizes[0] is returned with a sector size)
Return Value
• Fapi_Status_Success (success)
• Fapi_Error_FeatureNotAvailable (failure: Not all devices have this support in the Flash Memory
Controller)
• Fapi_Error_InvalidBank (failure: Bank does not exist on this device)
• Fapi_Error_NullPointer (failure: poFlashBankSectors is a NULL pointer)
4.6.1 Fapi_calculateFletcherChecksum()
Calculates the Fletcher checksum from the given address and length
Synopsis
uint32_t Fapi_calculateFletcherChecksum(
uint16_t *pu16Data,
uint16_t u16Length)
Parameters
Description
This function generates a 32-bit Fletcher checksum starting at the supplied address for the number of 16-
bit words specified.
This function assumes the value passed in pu16Data is a 16bit aligned address.
Return Value
• • 32-bit Fletcher Checksum value
4.6.2 Fapi_calculateEcc()
Calculates the ECC for a 64-bit value
Synopsis
uint8_t Fapi_calculateEcc(
uint32_t u32Address,
uint64 u64Data)
Parameters
Description
This function will calculate the ECC for a 64-bit aligned word including address if device supports address
in ECC calculation.
This function assumes the value passed in u32Address is a 64bit aligned address.
NOTE: As of version 1.51.0 of the API, this function expects the value in u64Data to be in the
natural Endianness of the system the function is being called on.
Return Value
• 8-bit calculated ECC
Parameters
Description
This function will generate a wait for a time rougnly proportional to the value of u32WaitDelay.
Return Value
• Fapi_Status_Success (success)
4.7.1 Fapi_serviceWatchdogTimer()
Services the watchdog timer
Synopsis
Fapi_StatusType Fapi_serviceWatchdogTimer(void)
Parameters
None
Description
This function allows the user to service their watchdog timer in the read Table 4 functions. It is called
when the address being read crosses the 256 byte aligned address boundaries.
Return Value
• Fapi_Status_Success (success)
Sample Implementation
#include “F021.h”
Fapi_StatusType Fapi_serviceWatchdogTimer(void)
{
/* User to add their own watchdog servicing code here */
return(Fapi_Status_Success);
}
5 API Macros
The API includes a set of helper macros that may be used by the developer.
5.1 FAPI_CHECK_FSM_READY_BUSY
Returns state of FSM.
Synopsis
#define FAPI_CHECK_FSM_READY_BUSY (FLASH_CONTROL_REGISTER-
>FmStat.FMSTAT_BITS.BUSY ? Fapi_Status_FsmBusy : Fapi_Status_FsmReady)
Parameters
None
Description
This macro returns the state of the FSM.
Return Value
• Fapi_Status_FsmReady (FSM is ready to accept a new command)
• Fapi_Status_FsmBusy (FSM is busy and may only accept a suspend command if operation is
program or erase sector)
5.2 FAPI_CLEAR_FSM_DONE_EVENT
Helper macro to clear FSM_DONE event
Synopsis
#define FAPI_CLEAR_FSM_DONE_EVENT (FLASH_CONTROL_REGISTER-
>FedAcStatus.FEDACSTATUS_BITS.FSM_DONE = 1U)
Parameters
None
Description
This macro writes a 1 to the FSM_DONE bit in the FEDACSTATUS register to clear the FSM_DONE
event.
Return Value
None
5.3 FAPI_GET_FSM_STATUS
Returns the value of the FMSTAT register
Synopsis
#define FAPI_GET_FSM_STATUS (FLASH_CONTROL_REGISTER->FmStat.u32Register)
Parameters
None
Description
This macro is used to get the value of the FMSTAT register.
23 16
Reserved
15 14 13 12 11 10 9 8
Reserved ILA Reserved PGV Reserved EV Reserved BUSY
7 6 5 4 3 2 1 0
ERS PGM INV-DAT CSTAT VOLTSTAT ESUSP PSUSP SLOCK
5.4 FAPI_SUSPEND_FSM
Issues FSM suspend command
Synopsis
#define FAPI_SUSPEND_FSM FAPI_WRITE_LOCKED_FSM_REGISTER(FLASH_CONTROL_REGISTER-
>FsmExecute.FSM_EXECUTE_BITS.SUSPEND_NOW, 0x5U)
Parameters
None
Description
This macro will issue a FSM suspend command. Only program and erase sector operations are valid
suspendable operations.
Return Value
None
5.5 FAPI_WRITE_EWAIT
Helper macro to write EWAIT value
Synopsis
#define FAPI_WRITE_EWAIT(_mEwait) FAPI_WRITE_LOCKED_FSM_REGISTER(FLASH_CONTROL_REGISTER-
>EepromConfig.EEPROM_CONFIG_BITS.EWAIT,_mEwait)
Parameters
Description
This macro writes _mEwait to the EWAIT bits in the EEPROM_CONFIG register.
Return Value
None
5.6 FAPI_WRITE_LOCKED_FSM_REGISTER
Allow easy writing to Flash Memory Controller registers that need to be unlocked first.
Synopsis
#define FAPI_WRITE_LOCKED_FSM_REGISTER(mRegister,mValue) \
do { \
Fapi_GlobalInit.m_poFlashControlRegisters->FsmWrEna.FSM_WR_ENA_BITS.WR_ENA = 0x5U; \
mRegister = mValue; \
Fapi_GlobalInit.m_poFlashControlRegisters->FsmWrEna.FSM_WR_ENA_BITS.WR_ENA = 0x2U; \
}while(0)
Parameters
Description
This function sets up the sectors in the non EEPROM banks that are available for erase and programming
operations.
Return Value
None
Start
Call
Fapi_issueAsyncCommandWithAddress()
Using Fapi_EraseSector command
Properly Initialized Device
Call
Fapi_initializeFlashBanks() No
Execute other
CHECK_FSM_READY_BUSY
code as
!= Fapi_Status_FsmBusy
needed
Call
Fapi_setActiveFlashBank()
for current bank
Yes
Call either
Fapi_enableMainBankSectors() or
Fapi_enableEepromBankSectors()
appropriate for current bank No
GET_FSM_STATUS
DUT fails Program
== 0
Yes
Yes
CHECK_FSM_READY_BUSY
== Fapi_Status_FsmReady
No
Another Sector to Erase? Done
No
Yes
No
Is Sector in a different
bank?
Yes
Start
Call
Fapi_issueAsyncCommandWithAddress()
Using Fapi_EraseBank command
Properly Initialized Device
Call
Fapi_initializeFlashBanks() No
Execute other
CHECK_FSM_READY_BUSY
code as
!= Fapi_Status_FsmBusy
needed
Call
Fapi_setActiveFlashBank()
for current bank
Yes
Call either
Fapi_enableMainBankSectors() or
Fapi_enableEepromBankSectors()
appropriate for current bank No
GET_FSM_STATUS
DUT fails Program
== 0
Yes
Yes
CHECK_FSM_READY_BUSY
== Fapi_Status_FsmReady
Yes
Another Bank to Erase?
No
No
Done
Start
Call Fapi_issueProgrammingCommand()
Supplying address, data and mode
No
Call
Fapi_setActiveFlashBank() Yes
for current bank
No
Call either GET_FSM_STATUS
Fapi_enableMainBankSectors() or DUT fails Program
== 0
Fapi_enableEepromBankSectors()
appropriate for current bank
Yes
Yes
CHECK_FSM_READY_BUSY No
== Fapi_Status_FsmReady
More data to program? Done
No
Yes
No
SPNU501H – December 2012 – Revised April 2015 Flash State Machine Commands 43
Submit Documentation Feedback
Copyright © 2012–2015, Texas Instruments Incorporated
Appendix B
SPNU501H – December 2012 – Revised April 2015
B.2 Enumerations
B.2.1 Fapi_CpuSelectorType
This is used to indicate which CPU is being used.
typedef enum
{
Fapi_MasterCpu,
Fapi_SlaveCpu0
} ATTRIBUTE_PACKED Fapi_CpuSelectorType;
B.2.2 Fapi_CpuType
This is used to indicate what type of Cpu is being used.
typedef enum
{
ARM7 = 0U, /* ARM7 core, Legacy placeholder */
M3 = 1U, /* ARM Cortex M3 core */
R4 = 2U, /* ARM Cortex R4 core without ECC logic */
R4F = 3U, /* ARM Cortex R4, R4F, and R5 cores with ECC logic*/
C28 = 4U, /* TI C28x core */
Undefined1 = 5U, /* To Be Determined. Future core placeholder */
Undefined2 = 6U, /* To Be Determined. Future core placeholder */
Undefined3 = 7U /* To Be Determined. Future core placeholder */
} ATTRIBUTE_PACKED Fapi_CpuType;
B.2.3 Fapi_FamilyType
This is used to indicate what type of Family is being used.
typedef enum
{
Family_FMC = 0x00,
B.2.4 Fapi_AddressMemoryType
This is used to indicate what type of Address is being used.
typedef enum
{
Fapi_Flash,
Fapi_FlashEcc,
Fapi_Otp,
Fapi_OtpEcc,
Fapi_Undefined
} ATTRIBUTE_PACKED Fapi_AddressMemoryType;
B.2.5 Fapi_FlashProgrammingCommandsType
This contains all the possible modes used in the Fapi_IssueAsyncProgrammingCommand().
typedef enum
{
Fapi_AutoEccGeneration, /* This is the default mode for the command and will auto generate
the ecc for the provided data buffer */
Fapi_DataOnly, /* Command will only process the data buffer */
Fapi_EccOnly, /* Command will only process the ecc buffer */
Fapi_DataAndEcc /* Command will process data and ecc buffers */
} ATTRIBUTE_PACKED Fapi_FlashProgrammingCommandsType;
B.2.6 Fapi_FlashBankType
This is used to indicate which Flash bank is being used.
typedef enum
{
Fapi_FlashBank0=0,
Fapi_FlashBank1=1,
Fapi_FlashBank2=2,
Fapi_FlashBank3=3,
Fapi_FlashBank4=4,
Fapi_FlashBank5=5,
Fapi_FlashBank6=6,
Fapi_FlashBank7=7
} ATTRIBUTE_PACKED Fapi_FlashBankType;
B.2.7 Fapi_FlashBankTechType
This is used to indicate what F021 Bank Technology the bank is.
typedef enum
{
Fapi_FLEP=0,
Fapi_FLEE=1,
Fapi_FLES=2,
Fapi_FLHV=3
} ATTRIBUTE_PACKED Fapi_FlashBankTechType;
B.2.8 Fapi_FlashSectorType
This is used to indicate which Flash sector is being used.
typedef enum
{
Fapi_FlashSector0,
Fapi_FlashSector1,
Fapi_FlashSector2,
Fapi_FlashSector3,
Fapi_FlashSector4,
Fapi_FlashSector5,
Fapi_FlashSector6,
Fapi_FlashSector7,
Fapi_FlashSector8,
Fapi_FlashSector9,
Fapi_FlashSector10,
Fapi_FlashSector11,
Fapi_FlashSector12,
Fapi_FlashSector13,
Fapi_FlashSector14,
Fapi_FlashSector15,
Fapi_FlashSector16,
Fapi_FlashSector17,
Fapi_FlashSector18,
Fapi_FlashSector19,
Fapi_FlashSector20,
Fapi_FlashSector21,
Fapi_FlashSector22,
Fapi_FlashSector23,
Fapi_FlashSector24,
Fapi_FlashSector25,
Fapi_FlashSector26,
Fapi_FlashSector27,
Fapi_FlashSector28,
Fapi_FlashSector29,
Fapi_FlashSector30,
Fapi_FlashSector31,
Fapi_FlashSector32,
Fapi_FlashSector33,
Fapi_FlashSector34,
Fapi_FlashSector35,
Fapi_FlashSector36,
Fapi_FlashSector37,
Fapi_FlashSector38,
Fapi_FlashSector39,
Fapi_FlashSector40,
Fapi_FlashSector41,
Fapi_FlashSector42,
B.2.9 Fapi_FlashStateCommandsType
This contains all the possible Flash State Machine commands.
typedef enum
{
Fapi_ProgramData = 0x0002,
Fapi_EraseSector = 0x0006,
Fapi_EraseBank = 0x0008,
Fapi_ValidateSector = 0x000E,
Fapi_ClearStatus = 0x0010,
Fapi_ProgramResume = 0x0014,
Fapi_EraseResume = 0x0016,
Fapi_ClearMore = 0x0018
} ATTRIBUTE_PACKED Fapi_FlashStateCommandsType;
B.2.10 Fapi_FlashReadMarginModeType
This contains all the possible Flash State Machine commands.
typedef enum
{
Fapi_NormalRead = 0x0,
Fapi_RM0 = 0x1,
Fapi_RM1 = 0x2
} ATTRIBUTE_PACKED Fapi_FlashReadMarginModeType;
B.2.11 Fapi_StatusType
This is the master type containing all possible returned status codes.
typedef enum
{
Fapi_Status_Success=0, /* Function completed successfully */
Fapi_Status_FsmBusy, /* FSM is Busy */
Fapi_Status_FsmReady, /* FSM is Ready */
Fapi_Error_Fail, /* Generic Function Fail code */
Fapi_Error_NullPointer, /* One of the pointer parameters is a null pointer */
Fapi_Error_InvalidCommand, /* Command used is invalid for the function called */
Fapi_Error_InvalidEccAddress, /* Returned if the ECC Address given to a function is
invalid for that function */
Fapi_Error_OtpChecksumMismatch, /* Returned if OTP checksum does not match expected value */
Fapi_Error_InvalidHclkValue, /* Returned if FClk is above max FClk value -
FClk is a calculated from HClk and
RWAIT/EWAIT */
Fapi_Error_InvalidBank, /* Returned if the specified bank does not exist */
Fapi_Error_InvalidAddress, /* Returned if the specified Address does not exist in
Flash or OTP */
Fapi_Error_InvalidReadMode, /* Returned if the specified read mode does not exist */
Fapi_Error_AsyncIncorrectDataBufferLength, /* Returned if Data buffer size specified
exceeds Data bank width */
Fapi_Error_AsyncIncorrectEccBufferLength, /* Returned if ECC buffer size specified
exceeds ECC bank width */
Fapi_Error_AsyncDataEccBufferLengthMismatch, /* Returned if Data buffer size either is not
64bit aligned or Data
length exceeds amount ECC supplied */
Fapi_Error_FeatureNotAvailable /* FMC feature is not available on this device */
} ATTRIBUTE_PACKED Fapi_StatusType;
B.2.12 Fapi_ApiProductionStatusType
This lists the different production status values possible for the API.
typedef enum
{
Alpha_Internal, /* For internal TI use only. Not intended to be used by customers
*/
Alpha, /* Early Engineering release. May not be functionally complete */
Beta_Internal, /* For internal TI use only. Not intended to be used by customers
*/
Beta, /* Functionally complete, to be used for testing and validation */
Production /* Fully validated, functionally complete, ready for production use
*/
} ATTRIBUTE_PACKED Fapi_ApiProductionStatusType;
TI distributes the F021 Flash API as pre-compiled object libraries which has been fully qualified for use on
Hercules devices. This ensures that the object code for programming will be the same as was qualified by
TI. However it might be still possible that the application program does not use the API functions correctly
by either passing incorrect values or using the API functions in a manner not in accordance with the API
documentation. In order to ensure proper usage of the Flash API, the in application and 3rd programming
tools must be validated.
1. Erase and program at least 4 devices with customer's object code using the method selected by the
customer for programming.
2. Using the TI profiling tool (contact local TI representative to obtain), generate profiles for each device
programmed in 1.
3. Erase and program these devices again using the same data pattern used in step 1 with the TI tool,
UniFlash.
4. Repeat step 2 on the devices programmed with UniFlash.
The profiles generated in steps 2 and 4 should correlate within 100mV or 18 indices on the 0's Vt and be
within 3 indices on the 1's BCC.
NOTE: It is also highly recommended that the F021 Flash API usage be thouroughly reviewed by
someone who was not involved with writing the code for Flash usage.
The functions Section 4.4.6 and Section 4.4.5 make use of the Parallel Signature Analysis (PSA) algoritm.
Those functions are typically used to verify a particular pattern is programmed in the Flash Memory
without transferring the complete data pattern. The PSA signature is based on this primative polynomial:
f(X) = 1 + X + X2 + X22 + X31
u32Seed = u32InitialSeed;
while(u32Length--)
{
u32SeedTemp = (u32Seed << 1)^*(pu32StartAddress++);
if(u32Seed & 0x80000000)
{
u32SeedTemp ^= 0x00400007; /* XOR the seed value with mask */
}
u32Seed = u32SeedTemp;
}
return u32Seed;
}
50 Parallel Signature Analysis (PSA) Algorithm SPNU501H – December 2012 – Revised April 2015
Submit Documentation Feedback
Copyright © 2012–2015, Texas Instruments Incorporated
Appendix E
SPNU501H – December 2012 – Revised April 2015
Revision History
Table 11 lists the API changes made since the previous revision of this document.
TI PROVIDES TECHNICAL AND RELIABILITY DATA (INCLUDING DATASHEETS), DESIGN RESOURCES (INCLUDING REFERENCE
DESIGNS), APPLICATION OR OTHER DESIGN ADVICE, WEB TOOLS, SAFETY INFORMATION, AND OTHER RESOURCES “AS IS”
AND WITH ALL FAULTS, AND DISCLAIMS ALL WARRANTIES, EXPRESS AND IMPLIED, INCLUDING WITHOUT LIMITATION ANY
IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT OF THIRD
PARTY INTELLECTUAL PROPERTY RIGHTS.
These resources are intended for skilled developers designing with TI products. You are solely responsible for (1) selecting the appropriate
TI products for your application, (2) designing, validating and testing your application, and (3) ensuring your application meets applicable
standards, and any other safety, security, or other requirements. These resources are subject to change without notice. TI grants you
permission to use these resources only for development of an application that uses the TI products described in the resource. Other
reproduction and display of these resources is prohibited. No license is granted to any other TI intellectual property right or to any third
party intellectual property right. TI disclaims responsibility for, and you will fully indemnify TI and its representatives against, any claims,
damages, costs, losses, and liabilities arising out of your use of these resources.
TI’s products are provided subject to TI’s Terms of Sale (www.ti.com/legal/termsofsale.html) or other applicable terms available either on
ti.com or provided in conjunction with such TI products. TI’s provision of these resources does not expand or otherwise alter TI’s applicable
warranties or warranty disclaimers for TI products.
Mailing Address: Texas Instruments, Post Office Box 655303, Dallas, Texas 75265
Copyright © 2018, Texas Instruments Incorporated