我在沁恒公眾號上的ch582手表項目得到靈感使用easyflash存儲配置信息,但是在向ch32v307移植的時候出現(xiàn)不能正常讀寫的問題,這里貼一下工程和錯誤截圖,希望官方可以幫忙查一下這個問題的所在。
您好,注意在進行FLASH編程的時候,要根據(jù)所選的編程方式進行擦寫。CH32V307支持標準編程(2字節(jié)編程)和快速編程(256字節(jié)編程)方式,要根據(jù)不同的編程方式進行解鎖上鎖。注意一下寫函數(shù)中編程方式的選擇,其次,擦除時注意一下進行解鎖操作。在我們手冊以及EVT例程 FLASH例程中都有對應的講解和例程。手冊可參考第二章。
CH32V307應用手冊:http://m.findthetime.net/downloads/CH32FV2x_V3xRM_PDF.html?
CH32V307EVT例程:http://m.findthetime.net/downloads/CH32V307EVT_ZIP.html
?
還有幾個疑問:
1、非0等待區(qū)也能用快速編程嗎?
2、如果要進行uint32數(shù)據(jù)的寫入,調用FLASH_ProgramWord是否可行?
3、片上flash最小erase大小是不是4k字節(jié)?
4、flash擦除和寫入之前是不是都要先執(zhí)行FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
5、單字寫入有辦法解決嗎?
初學問題有點多,見諒。
您好,關于你的疑問,回復如下:
1、非零等待區(qū)域可以用快速編程;
2、FLASH編程寫入只能按照 2字節(jié)或 256字節(jié)的編程方式,如下圖。但FLASH_ProgramWord函數(shù)是在2字節(jié)編程基礎上寫的,應該也是沒問題的,需要注意一下地址遞增要+4;
3、標準編程下,最小擦除區(qū)域4K字節(jié);快速編程下,最小擦除區(qū)域256字節(jié),參考下圖;
4、該操作為清除狀態(tài)寄存器的相應位,非必要,但建議加上;
5、參考2
建議看應用手冊32 章節(jié),有詳細介紹及操作步驟,后續(xù)若有問題,可通過郵箱聯(lián)系(lzs@wch.cn)。