ZHCUCQ7A January 2025 – July 2025 F29H850TU , F29H859TU-Q1
配置扇区的写入(编程)/擦除保护。
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 区域都可以擦除和编程。
(请参阅 F29H85x SDK 中提供的闪存编程示例“f29h85x-sdk > examples > driverlib > single_core > flash > flash_mode0_128_program”)