https://www.ti.com/jp/lit/ug/swcu185e/swcu185e.pdf
你好
技术参考手册规定、如果要在单个文字线上执行83次以上的写入操作、则应擦除闪存。
我们使用 TI 驱动程序创建了以下代码、以检查本例中的行为。
for(uint16_t count=0;count<256;count++) { uint8_t tw_buff = 0xFF; for(uint8_t subcount=0; subcount<8;subcount++) { tw_buff = tw_buff & (~(0x01 << subcount)); ret_list2[count*8+subcount] = NVS_write(nvsHandle2, count, &tw_buff, 1, NVS_WRITE_POST_VERIFY); } }
此代码将文字行中的所有位逐个设置为0。
技术参考手册对其进行了如下描述:
"如果在重新擦除之前执行了83个以上的写入操作、则可能会看到被擦除的行中的未写入位(处于逻辑1状态)会被编程(更改为逻辑0状态)。"
因此,我们希望通过对每个位执行 NVS_WRITE_POST_VERIFY,从某个点返回 NVS_STATUS_ERROR。
但是、结果是写入所有位返回 NVS_STATUS_SUCCESS、刷新值按预期写入。
是否有任何误解?