CH552 手册 6.2提到
ROM 是 iFlash?工艺,对于空白 ROM 正式封装后的成品,可以在 5V 电源下进行约 200 次编程。
6.5 flash-ROM 操作步骤 也没提到擦除。
相对应的CH559
就写的是100K次擦写的Flash-ROM,6.5 flash-ROM 操作步骤要先擦再写。
我查了一下,iFlash这个关键词除了在芯片介绍里之外,我没找到任何相关资料。请问有没有更多信息?在用户的角度是否可以认为它就是一个少编程次数但不用擦的flash存储器?
CH552 手册 6.2提到
ROM 是 iFlash?工艺,对于空白 ROM 正式封装后的成品,可以在 5V 电源下进行约 200 次编程。
6.5 flash-ROM 操作步骤 也没提到擦除。
相对应的CH559
就写的是100K次擦写的Flash-ROM,6.5 flash-ROM 操作步骤要先擦再写。
我查了一下,iFlash这个关键词除了在芯片介绍里之外,我没找到任何相关资料。请问有没有更多信息?在用户的角度是否可以认为它就是一个少编程次数但不用擦的flash存储器?
理解的没问题,”iFlash“只是一个代名词而已。
特点就是:不用擦除,直接写0或1;相比常见的MCU,flash的写次数少一些。
只是尤其要注意的是,flash只能在VCC外部提供5V电压的时候进行编程。
虽然flash写次数不多,不过加上一些简单的平衡算法,也能够做到类似上万次擦写寿命的flash差不多的作用。
mm what kind of balance algorithms do you mean?.
The WCHIspTool does always erase the flash before programming. Especially since loader 2.31 that seems a serios problem to me. I have already 2 CH552 here which fail programming the first block.
So my advice dont flash too often.
@TECH5 感谢回复。
那是不是也可以认为,iFlash是按照字节扣除寿命,而不是像一般flash一样是按照块扣除寿命?
寿命是对最小单元而言,552上的最小单元就是字节。
在考虑flash寿命的时候,整体固件升级的情况当然是无法对擦写寿命上有什么优化。平衡算法更多的是把剩余的code flash区当作data flash区来用的情况下:
例如需要保存2byte字节数据,那一个数据单元可以由4个字节组成,1字节已写次数+数据L+数据H+检验和。程序约定起始地址A,需要获取该数据时从A开始遍历,直到遇到非零数据,读取4个;如果已写次数差不多到200了,那就把数据向后移动4字节,当前位置写0。那1K的flash空间,可以获得2字节数据的1K/4*200=51200次的存储。
当然CH552本身就有更长寿命的data flash可以用,以及还有CH546之类更更长寿命的。
@usbman
Pardon me for replying to a dead thread.
Maybe you can try wchisp(https://github.com/ch32-rs/wchisp). This tool supports skipping verifying and erasing.