SPRUJC5 April   2024 TMS320F28P550SJ , TMS320F28P559SJ-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Reference Material
    2. 1.2 Function Listing Format
  5. 2TMS320F28P55x Flash API Overview
    1. 2.1 Introduction
    2. 2.2 API Overview
    3. 2.3 Using API
      1. 2.3.1 Initialization Flow
        1. 2.3.1.1 After Device Power Up
        2. 2.3.1.2 Flash Wrapper and Bank Setup
        3. 2.3.1.3 On System Frequency Change
      2. 2.3.2 Building With the API
        1. 2.3.2.1 Ojbects Library Files
        2. 2.3.2.2 Distribution Files
        3. 2.3.2.3 Key Facts For Flash API Usage
  6. 3API Functions
    1. 3.1 Initialization Functions
      1. 3.1.1 Fapi_initializeAPI()
    2. 3.2 Flash State Machine Functions
      1. 3.2.1  Fapi_setActiveFlashBank()
      2. 3.2.2  Fapi_setupBankSectorEnable()
      3. 3.2.3  Fapi_issueAsyncCommandWithAddress()
      4. 3.2.4  Fapi_issueBankEraseCommand()
      5. 3.2.5  Fapi_issueProgrammingCommand()
      6. 3.2.6  Fapi_issueProgrammingCommandForEccAddresses()
      7. 3.2.7  Fapi_issueAutoEcc512ProgrammingCommand()
      8. 3.2.8  Fapi_issueDataAndEcc512ProgrammingCommand()
      9. 3.2.9  Fapi_issueDataOnly512ProgrammingCommand()
      10. 3.2.10 Fapi_issueEccOnly64ProgrammingCommand()
      11. 3.2.11 Fapi_issueAsyncCommand()
      12. 3.2.12 Fapi_checkFsmForReady()
      13. 3.2.13 Fapi_getFsmStatus()
    3. 3.3 Read Functions
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
    4. 3.4 Informational Functions
      1. 3.4.1 Fapi_getLibraryInfo()
    5. 3.5 Utility Functions
      1. 3.5.1 Fapi_flushPipeline()
      2. 3.5.2 Fapi_calculateEcc()
      3. 3.5.3 Fapi_isAddressEcc()
      4. 3.5.4 Fapi_remapEccAddress()
      5. 3.5.5 Fapi_calculateFletcherChecksum()
  7. 4Recommended FSM Flows
    1. 4.1 New Devices From Factory
    2. 4.2 Recommended Erase Flow
    3. 4.3 Recommended Bank Erase Flow
    4. 4.4 Recommended Program Flow
  8. 5Software Application Assumptions of Use Related to Safety
  9.   A Flash State Machine Commands
  10.   B Typedefs, Defines, Enumerations and Structures
    1.     B.1 Type Definitions
    2.     B.2 Defines
    3.     B.3 Enumerations
      1.      B.3.1 Fapi_FlashProgrammingCommandsType
      2.      B.3.2 Fapi_FlashBankType
      3.      B.3.3 Fapi_FlashStateCommandsType
      4.      B.3.4 Fapi_StatusType
      5.      B.3.5 Fapi_ApiProductionStatusType
    4.     B.4 Structures
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  11.   References

Fapi_issueEccOnly64ProgrammingCommand()

Sets up the flash state machine registers for the 64-bit (4 16-bit words) programming with user-provided ECC data and issues the programing command to valid Flash and OTP memory.

Synopsis

Fapi_StatusType
Fapi_issueEccOnly64ProgrammingCommand(
                   uint32 *pu32StartAddress,
                   uint16 *pu16EccBuffer,
                   uint16 u16EccBufferSizeInBytes
                                     )

Parameters

pu32StartAddress [in] 512-bit aligned flash address to program the provided ECC data
pu16EccBuffer [in] Pointer to the ECC buffer address
u16EccBufferSizeInBytes[in] Number of 8-bit bytes in the ECC buffer. Max Eccbuffer size in words should not exceed 8.

Description

This function will only program the ECC portion in Flash ECC memory space at the address (Flash main array address should be provided for this function and not the corresponding ECC address) specified. It can program 64-bit of ECC data (Second parameter) at the ECC address corresponding to the user provided 512-bit aligned flash address.

64-bit ECC data can be split as 8 bytes ECC data correlated to 512-bit aligned data (4 * 128, each 2 bytes corresponding to each 128 data). For more information, see Table 3-6.

Table 3-6 64-Bit ECC Data Interpretation
512 Bits Data (4 * 128bits)
1st 128-Bit Data 2nd 128-Bit Data 3rd 128-Bit Data 4th 128-Bit Data
LSB of pu16EccBuffer[0] LSB of pu16EccBuffer[1] LSB of pu16EccBuffer[2] LSB of pu16EccBuffer[3]
MSB of pu16EccBuffer[0] MSB of pu16EccBuffer[1] MSB of pu16EccBuffer[2] MSB of pu16EccBuffer[3]

For allowed programing range for the function, see Table 3-7.

Table 3-7 Permitted Programming Range for Fapi_issueEccOnly64ProgrammingCommand()
Flash API Main Array DCSM OTP ECC Link Pointer
Fapi_issueEccOnly64ProgrammingCommand() Not Allowed Not Allowed Allowed Not Allowed

Restrictions

  • As described above, this function can program only a max of 64-bits ECC at a time. If the user wants to program more than that, this function should be called in a loop to program 64-bits at a time.
  • The Main Array flash programming must be aligned to 512-bit address boundaries and 64-bit ECC word may only be programmed once per write or erase cycle.
  • ECC should not be programmed for link pointer locations. 512-bit address range starting with link pointer address shall always be programmed using 128-bit Fapi_issueProgrammingCommand().

Return Value

  • Fapi_Status_FsmBusy (FSM busy)
  • Fapi_Status_Success (success)
  • Fapi_Error_AsyncDataEccBufferLengthMismatch (failure: Data buffer size either is not 64-bit aligned or data length crosses the 128-bit aligned memory boundary)
  • Fapi_Error_FlashRegsNotWritable (failure: Flash register writes failed. The user should make sure that the API is executing from the same zone as that of the target address for flash operation OR the user should unlock before the flash operation.
  • Fapi_Error_FeatureNotAvailable (failure: User passed a mode that is not supported)
  • Fapi_Error_InvalidAddress (failure: User provided an invalid address. For the valid address range, see the TMS320F28P55x Microcontrollers Data Manual for TMS320F28P55x .

Sample Implementation

Example implementation for this function will be released in next C2000ware release.