您好!
SPNU501h 中的第21/52页规定:"读取函数不会将主范围和 ECC 范围组合在一起。 因为这是您需要读取操作时的结果
数据和相应的 ECC 上执行、您必须为这两者调用函数。 例如、如果您
已擦除组0、扇区0、您需要对扇区0主地址范围执行空白检查
和 ECC 地址范围。"
这是否意味着如果我必须检查闪存的一部分是否被擦除、我必须执行以下操作:
Fapi_doBlankCheck (FlashData_StartAddress、执行空白检查的闪存字的长度、FlashStatusWord)
Fapi_doBlankCheck (对应 FlashData 的 FlashECC 地址、ECC 数据字的长度、FlashStatusWord)
我对此操作进行了一些测试:
1.测试一个样本数据以检查它是否在闪存组7扇区0中为空。 我只使用 Fapi_doBlankCheck 来检查闪存数据、而不是其相应的 ECC 数据。
情况 A:EE_CTRL1寄存器中的 EE_All1_OK 位设置为"不将所有1s 视为 ECC 故障"。 Fapi_doBlankCheck 返回成功
情况 b:EE_CTRL1寄存器中的 EE_All1_OK 位被清除。 Fapi_doBlankCheck 返回失败、并且一些位翻转为1。 我认为这是因为 ECC 试图纠正它们。
2.将0xFFFF 写入闪存并使用 Fapi_doBlankCheck 检查其是否处于已擦除状态。 我只使用 Fapi_doBlankCheck 来检查闪存数据、而不是其相应的 ECC 数据。
情况 A:EE_CTRL1寄存器中的 EE_All1_OK 位设置为"不将所有1s 视为 ECC 故障"。 Fapi_doBlankCheck 返回成功
情况 b:EE_CTRL1寄存器中的 EE_All1_OK 位被清除。 Fapi_doBlankCheck 返回成功。
为什么在测试2的情况 b 中它返回成功。 写入0xFFFF 是否与使能 ECC 时使闪存处于擦除状态相同? 如果否、为什么空白检查返回成功。
如果还必须验证相应的 ECC 以确定已擦除状态与将0xFFFF 写入闪存的状态之间的差异、那么为什么这在测试1中看起来有效。