NAND Flash跟普通的Flash结构不一样,由于NAND Flash自身的特性,偶尔会出现位反转的情况,所以在烧录的时候要注意下ECC。位反转是指原先Nand Flash中的某个位,变化了,即要么从1变成0了,要么从0变成1了。小容量的NandFlash一般不容易产生位反转,如1Gbit、2Gbit的;一般大容量的会比较容易产生,如32Gbit的。
为什么会出现位反转的情况,有以下几点原因:
漂移效应:漂移效应指的是,Nand Flash中cell的电压值,慢慢地变了,变的和原始值不一样了。
编程干扰所产生的错误:此现象有时候也叫做,过度编程效应。
对于某个页面的编程 *** 作,即写 *** 作,引起非相关的其他的页面的某个位跳变了。
读 *** 作干扰产生的错误:此效应是,对一个页进行数据读取 *** 作,却使得对应的某个位的数据,产生了永久性的变化,即Nand Flash上的该位的值变了。
在烧录的过程中如果没有设置相应的ECC,那么在校验的时候发现NAND Flash里面的数据和原始数据不一样,烧录就提示出错了。
解决的办法就是在烧录前,就设置好ECC,如我用的SmartPRO 6000F-PLUS是这样设置的,如下图示。
程序1、使用STM32CubeProgrammer软件,连接STM32开发板,点击Erase,擦除Flash;
2、点击Program,选择新的程序文件,点击Program,烧录新的程序;
3、点击Verify,校验烧录的程序是否正确;
4、点击Reset,重启STM32,新的程序就烧录成功了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)