我写了个IAP.用了flash的前16KB 08000000~08004000,有几次我发现在电流不太充足的情况下,擦除08004000之后的数据,会导致下次上电连IAP都进不去.有没有办法解决?
神奇的是,触发bug的时候,本次运行不会有问题,下次运行才出现iap进不去的现象
我写了个IAP.用了flash的前16KB 08000000~08004000,有几次我发现在电流不太充足的情况下,擦除08004000之后的数据,会导致下次上电连IAP都进不去.有没有办法解决?
神奇的是,触发bug的时候,本次运行不会有问题,下次运行才出现iap进不去的现象
这是我擦除数据用的代码,在电流不足的情况下执行,会导致08000000~08004000的固件程序也出问题
您好,有几个点需要跟你确认一下:1、电流不太足丢固件的情况下,此时MCU的供电电压是多少以及是否稳定;2、程序中系统主频配置的大小是多少,若系统主频超过100MHz时,操作FLASH时需要将HCLK进行2分频,FLASH操作完成后再恢复,具体可参考我们CH32V307 EVT的FLASH操作例程;3、看你这段代码包含标准编程擦除方式以及快速编程擦除方式,程序中是否有进行标准编程解锁和快速编程解锁。此外,在CH32V307 EVT中有对应IAP例程,你可以参考一下。后续的问题沟通可通过邮箱(lzs@wch.cn)和我沟通。
CH32V307 EVT:https://www.wch.cn/downloads/CH32V307EVT_ZIP.html
把频率降低到100MHz以下后,似乎就没有问题了,这是怎么回事,手册上似乎没怎么提到这个,太坑了
您好,在CH32V307应用手册中有一段关于FLASH操作的介绍,当主频超过100MHz时,需要先进行2分频,具体如下图。关于这段介绍,可参考CH32V307应用手册第32章。应用手册下载链接如下:
ch32V307跑程序千万别用144Mhz,手册上默认值已经是2分频了,大概率有些ic跑不了