ZHCUBW3 April   2024

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
    1. 1.1 参考书籍
    2. 1.2 函数清单格式
  5. 2TMS320F28P65x 闪存 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.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.   A 闪存状态机命令
  9.   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
  10.   C 从 v3.00.01 到 v3.00.02 的变更摘要

Fapi_issueEccOnly64ProgrammingCommand()

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

概要

Fapi_StatusType Fapi_issueEccOnly64ProgrammingCommand( 
                                      uint32 *pu32StartAddress, 
                                      uint16 *pu16EccBuffer, 
                                      uint16 u16EccBufferSizeInBytes 
                                                     ) 

参数

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

说明

此函数将仅在指定的地址处(应为该函数提供闪存主阵列地址,而不是相应的 ECC 地址)对闪存 ECC 存储空间中的 ECC 部分进行编程。它可以在与用户提供的 512 位对齐闪存地址相对应的 ECC 地址处对 64 位 ECC 数据(第二个参数)进行编程。64 位 ECC 数据可以拆分为与 512 位对齐数据相关的 8 字节 ECC 数据(4 * 128,每 2 字节对应每 128 个数据)。

请参阅下面的表 3-6

表 3-6 64 位 ECC 数据解释
512 位数据(4 * 128 位)
第 1 个 128 位数据第 2 个 128 位数据第 3 个 128 位数据第 4 个 128 位数据
pu16EccBuffer[0] 的 LSBpu16EccBuffer[1] 的 LSBpu16EccBuffer[2] 的 LSBpu16EccBuffer[3] 的 LSB
pu16EccBuffer[0] 的 MSBpu16EccBuffer[1] 的 MSBpu16EccBuffer[2] 的 MSBpu16EccBuffer[3] 的 MSB
有关该函数允许的编程范围,请参阅下面的表 3-7

表 3-7 Fapi_issueEccOnly64ProgrammingCommand() 的允许编程范围
闪存 API主阵列DCSM OTPECC链路指针
Fapi_issueEccOnly64Prog rammingCommand()不允许不允许允许不允许

限制

  • 如上所述,该函数一次最多只能对 64 位 ECC 进行编程。如果用户想对更多位进行编程,则应循环调用该函数,从而一次对 64 位进行编程。

  • 主阵列闪存编程必须与 512 位地址边界对齐,并且 64 位 ECC 字在每个写入或擦除周期只能编程一次。

  • 不应针对链路指针位置对 ECC 进行编程。以链路指针地址开头的 512 位地址范围应始终使用 128 位 Fapi_issueProgrammingCommand() 进行编程。

返回值

  • Fapi_Status_Success(成功)• Fapi_Status_FsmBusy(FSM 处于繁忙状态)

  • Fapi_Error_AsyncDataEccBufferLengthMismatch(失败:数据缓冲区大小不是 64 位对齐的,或者数据长度跨越了 128 位对齐的存储器边界)

  • Fapi_Error_FlashRegsNotWritable(失败:闪存寄存器写入失败。用户应确保 API 从与闪存操作的目标地址相同的区域执行,或者用户应在闪存操作之前解锁。)

  • Fapi_Error_FeatureNotAvailable(失败:用户传递了不受支持的模式)

  • Fapi_Error_InvalidAddress(失败:用户提供的地址无效。有关有效地址范围的信息,请参阅 TMS320F28P65x 微控制器数据手册。)

实现示例

(请参阅 C2000Ware 中提供的闪存编程示例,该示例位于“C2000Ware_.....\driverlib\F28P65x\examples\....\flash\flashapi_512bit_programming\flashapi_cpu1_512bitprogramming.c”)