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_setupBankSectorEnable()

Configures Write(program)/Erase protection for the sectors.

Synopsis

Fapi_StatusType Fapi_setupBankSectorEnable( 
                              uint32 WEPROT_register,
                              uint32 oSectorMask 
                                          )

Parameters

pu32StartAddress [in]Register address for Write/Erase protection configuration.

Use FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTA for the first 32 (0-31) sectors.

Use FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROTB for the remaining main-array (32-127) sectors.

Use FLASH_WRAPPER_PROGRAM_BASE+FLASH_O_CMDWEPROT_UO for the USER OTP.

OSectorMask [in]32-bit mask indicating which sectors to mask from the erase and program operations.

Description

On this device, all of the flash main-array sectors and the USER OTP are protected from the erase and program operations by default. User application has to disable the protection for the sectors on which it wants to perform erase and/or program operations. This function can be used to enable/disable the protection. This function should be called before each erase and program command as shown in the flash API usage example provided in the C2000Ware.

First input parameter for this function can be the address of any of these three registers: CMDWEPROTA, CMDWEPROTB, CMDWEPROT_UO

CMDWEPROTA register is used to configure the protection for the first 32 sectors (0 to 31). Each bit in this register corresponds to each sector – Example: Bit 0 of this register is used to configure the protection for Sector 0 and Bit 31 of this register is used to configure the protection for Sector 31. A 32-bit user-provided sector mask (second parameter passed to this function) indicates which sectors the user wants to mask from the erase and program operations, that is, sectors that will not be erased and programmed. If a bit in the mask is 1, that particular sector will not be erased/programmed. If a bit in the mask is 0, that particular sector will be erased/programmed.

CMDWEPROTB register is used to configure the protection for the 32 – 127 sectors in the main-array flash bank. However, please note that each bit in this register is used to configure protection for 8 sectors together. This means, bit 0 is used to configure the protection for all of the sectors 32 to 39 together, bit 1 is used to configure the protection for all of the sectors 40 to 47 together, and so on. A 32-bit user-provided sector mask (second parameter passed to this function) indicates which sectors the user wants to mask from the erase and program operations, that is, sectors that will not be erased and programmed. If a bit in the mask is 1, that particular set of sectors will not be erased/programmed. If a bit in the mask is 0, that particular set of sectors will be erased/programmed.

CMDWEPROT_UO register is used to configure the protection for the USER OTP. Bit 0 in this register is used to configure the protection for the USER OTP. This means, if bit 0 is configured as 1, USER OTP will not be programmed. If bit 0 is configured as 0, USER OTP will be programmed. Other bits of this register can be configured as 1s. Since USER OTP is not erasable, the CMDWEPROT_UO register protection is not applicable for erase operations. This should be configured only for the program operation as needed.

Note:

There are no separate dedicated CMDWEPROT_x registers for each bank. Hence, these registers should be configured before each and every flash erase and program command for any bank.

Return Value

  • Fapi_Status_Success (success)

Sample Implementation

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