ZHCUCQ7A January   2025  – July 2025 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P589DM-Q1 , F29P589DU-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.   修订历史记录

SECCFG 编程

SECCFG 扇区是闪存存储器的一部分,用于存储 SSU 用户配置或用户保护策略 (UPP)。每个 CPU 都有一个活动的 SECCFG 起始地址和一个备用(后备)SECCFG 起始地址。当使用闪存 API 擦除/编程 SECCFG 扇区时,可以使用备用(后备)SECCFG 扇区的起始地址。有关 SECCFG 配置详情,请参阅 F29H85x 和 F29P58x 实时微控制器技术参考手册。

注: 在使用闪存 API 对 SECCFG 进行编程时,用户必须始终提供整个扇区长度 (0x1000)。未使用的扇区位置可以写为 0xFF。
表 4-3 SECCFG 起始地址
存储体模式CPUxSWAP区域CPU1/CPU2 存储体CPU1 地址CPU2 地址CPU3 存储体CPU3 地址
模式 0有效FLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D8 9000
备选FLC1.B2/B30x10D8 50000x10D8 5800FLC2.B2/B30x10D8 D000
模式 1SWAP = 0有效FLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D8 5000
备选FLC1.B2/B30x10D9 90000x10D9 9800FLC2.B2/B30x10D9 D000
SWAP = 1有效FLC1.B2/B30x10D8 10000x10D8 1800FLC2.B2/B30x10D8 5000
备选FLC1.B0/B10x10D9 90000x10D9 9800FLC2.B0/B10x10D9 D000
模式 2有效FLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D9 1000
备选FLC1.B2/B30x10D8 50000x10D8 5800FLC2.B2/B30x10D9 5000
模式 3SWAP = 0有效FLC1.B0/B10x10D8 10000x10D8 1800FLC2.B0/B10x10D9 1000
备选FLC1.B2/B30x10D9 90000x10D9 9800FLC2.B2/B30x10D9 D000
SWAP = 1有效FLC1.B2/B30x10D8 10000x10D8 1800FLC2.B2/B30x10D9 1000
备选FLC1.B0/B10x10D9 90000x10D9 9800FLC2.B0/B10x10D9 D000

编程 SECCFG 的步骤如下:

  1. 发出擦除扇区命令。当使用闪存 API 擦除 SECCFG 时,用户可以始终为起始地址提供一个后备(备用)FLC 地址。有关详细信息、请参阅 SECCFG 起始地址。
  2. 发出 128 位编程命令来对 SECCFG 扇区进行编程。
    1. 用户可以始终使用 AutoEccGeneration 编程模式
    2. 起始地址可以为后备(备用)扇区地址。有关详细信息、请参阅 SECCFG 起始地址。
    3. 必须对整个扇区长度进行编程,未使用的位置可以编程为 0xFF。
  3. 对 SECCFG 扇区进行编程后,可以发出外部重置 (XSRn),以便启动 ROM 读取活动的 SECCFG 扇区值并将其写入必要的 SSU 寄存器。