ZHCUCQ7A January   2025  – July 2025 F29H850TU , F29H859TU-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 与 C28x 的区别
    2. 1.2 函数清单格式
  5. 2F29H85x 闪存 API 概述
    1. 2.1 简介
    2. 2.2 API 概述
    3. 2.3 使用 API
      1. 2.3.1 初始化流程
        1. 2.3.1.1 器件上电后
        2. 2.3.1.2 关于系统频率变化
      2. 2.3.2 使用 API 进行构建
        1. 2.3.2.1 目标库文件
        2. 2.3.2.2 分布文件
      3. 2.3.3 闪存 API 使用的关键事实
  6. 3API 函数
    1. 3.1 初始化函数
      1. 3.1.1 Fapi_initializeAPI()
    2. 3.2 闪存状态机函数
      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_issueAutoEcc512ProgrammingCommand()
      7. 3.2.7  Fapi_issueDataAndEcc512ProgrammingCommand()
      8. 3.2.8  Fapi_issueDataOnly512ProgrammingCommand()
      9. 3.2.9  Fapi_issueEccOnly64ProgrammingCommand()
      10. 3.2.10 Fapi_issueAsyncCommand()
      11. 3.2.11 Fapi_checkFsmForReady()
      12. 3.2.12 Fapi_getFsmStatus()
    3. 3.3 读取函数
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
      3. 3.3.3 Fapi_doVerifyByByte()
    4. 3.4 信息函数
      1. 3.4.1 Fapi_getLibraryInfo()
    5. 3.5 实用功能
      1. 3.5.1 Fapi_flushPipeline()
      2. 3.5.2 Fapi_calculateEcc()
      3. 3.5.3 Fapi_isAddressEcc()
      4. 3.5.4 Fapi_getUserConfiguration()
      5. 3.5.5 Fapi_setFlashCPUConfiguration()
      6. 3.5.6 Fapi_issueProgBankMode()
  7. 4使用闪存 API 对 SECCFG 和 BANKMGMT 编程
    1. 4.1 BANKMGMT 编程
    2. 4.2 SECCFG 编程
  8. 5所有模式允许的编程范围
  9. 6推荐的 FSM 流程
    1. 6.1 新出厂器件
    2. 6.2 推荐的擦除流程
    3. 6.3 推荐的存储组擦除流程
    4. 6.4 推荐的编程流程
  10. 7参考资料
  11.   A 闪存状态机命令
  12.   B typedef、定义、枚举和结构
    1.     B.1 类型定义
    2.     B.2 定义
    3.     B.3 枚举
      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
      6.      B.3.6 Fapi_BankID
      7.      B.3.7 Fapi_FLCID
      8.      B.3.8 Fapi_BankMode
      9.      B.3.9 Fapi_CPU1BankSwap
      10.      B.3.10 Fapi_CPU3BankSwap
      11.      B.3.11 Fapi_FOTAStatus
      12.      B.3.12 Fapi_SECVALID
      13.      B.3.13 Fapi_BankMgmtAddress
    4.     B.4 结构
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  13.   修订历史记录

Fapi_setupBankSectorEnable()

配置扇区的写入(编程)/擦除保护。

概要

Fapi_StatusType Fapi_setupBankSectorEnable( 
                              uint32_t *pu32StartAddress,
                              uint32_t u32UserFlashConfig,
                              uint32_t reg_address,
                              uint32_t value 
                                          )

参数

pu32StartAddress [in]

正在写入的闪存地址

u32UserFlashConfig [in]

用户闪存配置位域

reg_address [in]

用于写/擦除保护配置的寄存器地址。保护掩码适用于交错对中的两个组。

对前 32 个 (0-31) 扇区使用 FLASH_NOWRAPPER_O_CMDWEPROTA。

对其余的主阵列 (32-128) 扇区使用 FLASH_NOWRAPPER_O_CMDWEPROTB。

对 BANKMGMT 和 SECCFG 使用 FLASH_NOWRAPPER_O_CMDWEPROTNM

value [in]

32 位掩码,指示擦除和编程操作中要屏蔽的扇区。

说明

在此器件上,默认情况下,所有闪存主扇区和非主扇区(BANKMGMT 和 SECCFG)均受到保护,无法对其执行擦除和编程操作。用户应用程序必须禁用想要对其执行擦除和/或编程操作的扇区的保护。该函数可用于启用/禁用保护。必须在每次擦除和编程命令之前调用该函数,如 F29H85x SDK 中提供的闪存 API 使用示例所示。

该函数的第一个输入参数可以是以下三个寄存器中任何一个的地址:FLASH_NOWRAPPER_O_CMDWEPROTA、FLASH_NOWRAPPER_O_CMDWEPROTB、FLASH_NOWRAPPER_O_CMDWEPROTNM

CMDWEPROTA 寄存器用于配置组的前 32 个扇区(0 至 31)的保护。此寄存器中的每个位对应交错的组每个扇区。因此,编程时,用户必须配置此寄存器两次(为组对 B0/2 或 B1/3 中的每个组配置一次)。例如:此寄存器的位 0 用于配置扇区 0 的保护,该寄存器的位 31 用于配置扇区 31 的保护。用户提供的 32 位扇区掩码(传递给该函数的第二个参数)指示用户想要屏蔽擦除和编程操作的扇区,即不会被擦除和编程的扇区。如果掩码中的某个位为 1,则不会擦除/编程该特定扇区。如果掩码中的某个位为 0,则会擦除或编程特定扇区。

CMDWEPROTB 寄存器用于配置对主阵列闪存组中交错扇区 32 - 127 的保护。此寄存器中的每个位用于一起配置对 8 个扇区的保护。这意味着,位 0 用于一起配置对所有扇区 32 至 39 的保护,位 1 用于一起配置对所有扇区 40 至 47 的保护,依此类推。用户提供的 32 位扇区掩码(传递给该函数的第二个参数)指示用户想要屏蔽擦除和编程操作的扇区,即不会被擦除和编程的扇区。如果掩码中的某个位为 1,则不会擦除/编程该组特定扇区。如果掩码中的某个位为 0,则会擦除/编程该组特定扇区。

CMDWEPROT_NM 寄存器用于配置 BANKMGMT 和 SECCFG 区域保护。只有此寄存器中的位 0 用于配置保护。如果位 0 被配置为 1,则 BANKMGMT 和 SECCFG 不被编程。如果位 0 配置为 0,则会为区域编程。此寄存器的其他位可配置为 1。BANKMGMT 和 SECCFG 区域都可以擦除和编程。

注: 每个闪存组没有单独的专用 CMDWEPROT_x 寄存器。因此,对于任何闪存组,必须在每个闪存擦除和编程命令之前配置这些寄存器。

返回值

  • Fapi_Status_Success(成功)

实现示例

(请参阅 F29H85x SDK 中提供的闪存编程示例“f29h85x-sdk > examples > driverlib > single_core > flash > flash_mode0_128_program”)