SPRUJB8 April   2024

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Reference Material
    2. 1.2 Function Listing Format
  5. 2TMS320F28P65x 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 Object Library Files
        2. 2.3.2.2 Distribution Files
      3. 2.3.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.   A Flash State Machine Commands
  9.   B Typedefs, Defines, Enumerations and Structure
    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
  10.   C Summary of Changes From v3.00.01 to v3.00.02

Fapi_issueDataAndEcc512ProgrammingCommand()

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

Synopsis

Fapi_StatusType Fapi_issueDataAndEcc512ProgrammingCommand( 
                                      uint32 *pu32StartAddress, 
                                      uint16 *pu16DataBuffer, 
                                      uint16 u16DataBufferSizeInWords, 
                                      uint16 *pu16EccBuffer, 
                                      uint16 u16EccBufferSizeInBytes
                                                          ) 

Parameters

pu32StartAddress [in]512-bit aligned flash address to program the provided data and ECC.
pu16DataBuffer [in]Pointer to the Data buffer address. Address of the Data buffer should be 512-bit aligned.
u16DataBufferSizeInWords [in]Number of 16-bit words in the Data buffer. Max Databuffer size in words should not exceed 32.
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 programs both the user provided 512-bit data (second parameter) and 8 bytes of ECC data (fourth parameter) together at the user provided 512-bit aligned flash address. The address of data provided must be aligned on a 512-bit memory boundary and the length of data must correlate to the supplied ECC. That means, if the data buffer length is 32 16-bit words, the ECC buffer must be 8 bytes (1 ECC bytes corresponding to 64-bit data).

Each byte of pu16EccBuffer corresponds to each 64-bit of the main array data provided in the pu16DataBuffer. Refer Table 3-6 for more details.

The Fapi_calculateEcc() function can be used to calculate ECC for a given 64-bit aligned address and the corresponding data.

Refer below Table 3-4 for allowed programming range for the function.

Table 3-4 Permitted programming range for Fapi_issueDataAndEcc512ProgrammingCommand()
Flash APIMain ArrayDCSM OTPECCLink Pointer
Fapi_issueDataAndEcc512ProgrammingCommand()AllowedAllowedAllowedNot allowed

Restrictions

  • As described above, this function can program only a max of 512-bits (given the address provided is 512-bit aligned) at a time. If the user wants to program more than that, this function should be called in a loop to program 512-bits at a time.

  • The Main Array flash programming must be aligned to 512-bit address boundaries and 32 16-bit word may only be programmed once per write or erase cycle.

  • 512-bit address range starting with link pointer address shall always be programmed using 128-bit Fapi_issueProgrammingCommand().

Return Value

  • Fapi_Status_Success (success)

  • Fapi_Status_FsmBusy (FSM busy)

  • Fapi_Error_AsyncIncorrectDataBufferLength (failure: Data buffer size specified is incorrect. Also, this error will be returned if Fapi_EccOnly mode is selected when programming the Bank0 DCSM OTP space)

  • Fapi_Error_AsyncIncorrectEccBufferLength (failure: ECC buffer size specified is incorrect)

  • 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 TMS320F28P65x Microcontrollers Data Manual.)

Sample Implementation

(Please refer to the flash programming example provided in C2000Ware at “C2000Ware_.....\driverlib\F28P65x\examples\....\flash\flashapi_512bit_programming\flashapi_cpu1_512bitprogramming.c”)