关于CH32V307移植easyflash的问题

我在沁恒公众号上的ch582手表项目得到灵感使用easyflash存储配置信息,但是在向ch32v307移植的时候出现不能正常读写的问题,这里贴一下工程和错误截图,希望官方可以帮忙查一下这个问题的所在。

QQ截图20220405234118.png

icon_rar.gifCH32V307VCT6 -ef.zip


您好,注意在进行FLASH编程的时候,要根据所选的编程方式进行擦写。CH32V307支持标准编程(2字节编程)和快速编程(256字节编程)方式,要根据不同的编程方式进行解锁上锁。注意一下写函数中编程方式的选择,其次,擦除时注意一下进行解锁操作。在我们手册以及EVT例程 FLASH例程中都有对应的讲解和例程。手册可参考第二章。

CH32V307应用手册:/downloads/CH32FV2x_V3xRM_PDF.html 

CH32V307EVT例程:/downloads/CH32V307EVT_ZIP.html

 



还有几个疑问:

1、非0等待区也能用快速编程吗?

2、如果要进行uint32数据的写入,调用FLASH_ProgramWord是否可行?

3、片上flash最小erase大小是不是4k字节?

4、flash擦除和写入之前是不是都要先执行FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

5、单字写入有办法解决吗?

初学问题有点多,见谅。


您好,关于你的疑问,回复如下:

1、非零等待区域可以用快速编程;

2、FLASH编程写入只能按照 2字节或 256字节的编程方式,如下图。但FLASH_ProgramWord函数是在2字节编程基础上写的,应该也是没问题的,需要注意一下地址递增要+4;

3、标准编程下,最小擦除区域4K字节;快速编程下,最小擦除区域256字节,参考下图;

4、该操作为清除状态寄存器的相应位,非必要,但建议加上;

5、参考2

建议看应用手册32 章节,有详细介绍及操作步骤,后续若有问题,可通过邮箱联系(lzs@wch.cn)。

image.png


只有登录才能回复,可以选择微信账号登录