ZHCUBW5 April   2024

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 参考资料
    2. 1.2 函数清单格式
  5. 2TMS320F28P55x 闪存 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 闪存包装程序和存储体设置
        3. 2.3.1.3 关于系统频率变化
      2. 2.3.2 使用 API 进行构建
        1. 2.3.2.1 对象库文件
        2. 2.3.2.2 分布文件
        3. 2.3.2.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_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 读取函数
      1. 3.3.1 Fapi_doBlankCheck()
      2. 3.3.2 Fapi_doVerify()
    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_remapEccAddress()
      5. 3.5.5 Fapi_calculateFletcherChecksum()
  7. 4推荐的 FSM 流程
    1. 4.1 新出厂器件
    2. 4.2 推荐的擦除流程
    3. 4.3 推荐的存储体擦除流程
    4. 4.4 推荐的编程流程
  8. 5与安全相关的软件应用程序使用假设
  9.   A 闪存状态机命令
  10.   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
    4.     B.4 结构
      1.      B.4.1 Fapi_FlashStatusWordType
      2.      B.4.2 Fapi_LibraryInfoType
  11.   参考资料

Fapi_issueDataOnly512ProgrammingCommand()

设置使用用户提供的闪存数据进行 512 位(32 个 16 位字)编程的闪存状态机寄存器,并向有效闪存发出编程命令。

概要

Fapi_StatusType
Fapi_issueDataOnly512ProgrammingCommand(
                        uint32 *pu32StartAddress,
                        uint16 *pu16DataBuffer,
                        uint16 u16DataBufferSizeInWords
                                       )

参数

pu32StartAddress [in] 用于对提供的数据进行编程的 512 位对齐闪存地址
pu16DataBuffer [in] 指向数据缓冲区地址的指针。数据缓冲区应为 512 位对齐。
u16DataBufferSizeInWords [in] 数据缓冲区中 16 位字的数量。最大数据缓冲区大小(以字为单位)不应超过 32。

说明

此函数只对闪存中指定地址的数据部分进行编程。它可以在用户提供的 512 位对齐闪存地址处对 512 位数据(第二个参数)进行编程。

当用户应用程序(嵌入/使用闪存 API)必须单独对 512 位数据和相应的 64 位 ECC 数据进行编程时,使用此函数。使用 Fapi_issueDataOnly512ProgrammingCommand () 函数对 512 位数据进行编程,然后使用 Fapi_issueEccOnly64ProgrammingCommand() 函数对 64 位 ECC 进行编程。通常,大多数编程实用程序不会单独计算 ECC,而是使用 Fapi_issueAutoEcc512ProgrammingCommand() 函数。但是,某些安全应用程序可能需要在其闪存映像中插入有意的 ECC 错误(使用 Fapi_AutoEccGeneration 模式时无法实现),从而在运行时检查单错校正和双错检测 (SECDED) 模块的运行状况。在这种情况下,ECC 是单独计算的(如果适用,使用 Fapi_calculateEcc() 函数)。应用程序可能希望根据需要在主阵列数据或 ECC 中插入错误。在这种情况下,在错误插入之后,可以使用 Fapi_issueDataOnly512ProgrammingCommand () API 和 Fapi_issueEccOnly64ProgrammingCommand() API 分别对 512 位数据和 64 位 ECC 进行编程。

有关该函数允许的编程范围,请参阅表 3-5

表 3-5 Fapi_issueDataOnly512ProgrammingCommand() 的允许编程范围
闪存 API 主阵列 DCSM OTP ECC 链路指针
Fapi_issueDataOnly512ProgrammingCommand() 允许 不允许 不允许 不允许

限制

  • 如上所述,该函数一次最多只能对 512 位进行编程(鉴于提供的地址进行了 512 位对齐)。如果用户想对更多位进行编程,则应循环调用该函数,从而一次对 512 位进行编程。
  • 主阵列闪存编程必须与 512 位地址边界对齐,并且 32 个 16 位字在每个写入或擦除周期只能编程一次。
  • 以链路指针地址开头的 512 位地址范围应始终使用 128 位 Fapi_issueProgrammingCommand() 进行编程。

返回值

  • Fapi_Status_Success(成功)
  • Fapi_Status_FsmBusy(FSM 处于繁忙状态)
  • Fapi_Error_AsyncIncorrectDataBufferLength(失败:指定的数据缓冲区大小不正确。此外,如果在对存储体 0 DCSM OTP 空间进行编程时选择了 Fapi_EccOnly 模式,则会返回该错误)
  • Fapi_Error_FlashRegsNotWritable(失败:闪存寄存器写入失败。用户应确保 API 从与闪存操作的目标地址相同的区域执行,或者用户应在闪存操作之前解锁。)
  • Fapi_Error_FeatureNotAvailable(失败:用户传递了不受支持的模式)
  • Fapi_Error_InvalidAddress(失败:用户提供的地址无效。对于 TMS320F28P55x,有关有效地址范围,请参阅 TMS320F28P55x 实时微控制器数据手册

实现示例

将在下一个 C2000ware 版本中发布此功能的示例实现。