ZHCUBW3 April 2024
设置使用用户提供的闪存数据进行 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
闪存 API | 主阵列 | DCSM OTP | ECC | 链路指针 |
---|---|---|---|---|
Fapi_issueDataOnly512Pr ogrammingCommand() | 允许 | 不允许 | 不允许 | 不允许 |
如上所述,该函数一次最多只能对 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(失败:用户提供的地址无效。有关有效地址范围,请参阅 TMS320F28P65x 微控制器数据手册。)
(请参阅 C2000Ware 中提供的闪存编程示例,该示例位于“C2000Ware_.....\driverlib\F28P65x\examples\....\flash\flashapi_512bit_programming\flashapi_cpu1_512bitprogramming.c”)