簡介
CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基于RISC-V開源指令集設計。片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。此系列具有1路USB2.0主機/設備接口、多通道12位ADC轉換模塊、多通道TouchKey、多組定時器、多路IIC/USART/SPI接口等豐富的外設資源。
1、CH32V103內部FLASH簡介及相關函數介紹
CH32V103芯片含有一個內部FLASH,其存儲數據在掉電后不會丟失,主要用于存儲程序代碼。芯片在重新上電并復位后,可通過加載讀取內部FLASH中程序代碼運行。
通常,我們可通過兩種方式對內部FLASH進行讀寫:一是通過下載器等外部工具讀寫內部FLASH,二是通過芯片運行程序代碼讀取自身內部FLASH。本章即通過第二種方法進行內部FLASH讀寫。此外,就讀寫速度而言,讀寫內部FLASH比外部FLASH快的多,且由于內部FLASH掉電后數據不會丟失,因此內部FLASH剩余空間可用于存儲重要數據和關鍵記錄。
由于內部FLASH可被通過外部工具或程序代碼讀寫,為了防止內部FLASH中存儲數據被獲取,某些應用會禁止讀寫內部FLASH內容,或在第一次運行時計算加密信息并記錄到某些區域,然后刪除自身的部分加密代碼,這些應用都涉及到內部FLASH的操作。
CH32V103內部FLASH主要包含主存儲器和信息塊兩塊區域,其中信息塊又可被分為兩塊系統引導代碼存儲區域、用戶選擇字和廠商配置字區域。其中,主存儲器區域主要用于用戶的應用程序存儲,以4K字節(32 頁)單位進行寫保護劃分;除了“廠商配置字”區域出廠鎖定,用戶不可訪問,其他區域在一定條件下用戶可操作。
CH32V103內部FLASH具有2種編程/擦除方式,具體如下:
標準編程:此方式是默認編程方式(兼容方式)。這種模式下CPU以單次2字節方式執行編程,單次1K字節執行擦除及整片擦除操作。
快速編程:此方式采用頁操作方式(推薦)。經過特定序列解鎖后,執行單次128字節的編程及128字節擦除。
關于CH32V103內部FLASH具體信息,可參考CH32V103應用手冊。CH32V103內部FLASH標準庫函數具體內容如下:
2、硬件設計
本章教程主要通過程序代碼進行內部FLASH讀寫操作,使用CH32V103內部資源,無需進行硬件連接。
3、軟件設計
CH32V103內部FLASH編程/擦除方式有兩種,一種是標準編程,一種是快速編程,本章即使用上述這兩種方式分別進行內部FLASH讀寫操作,程序編程主要分3個步驟:
1、對內部FLASH進行解鎖;
2、對內部FLASH進行頁擦除;
3、對內部FLASH進行讀寫操作。
根據上述操作步驟,編寫具體程序,具體程序如下:
flash.h文件
flash.h文件主要包含相關定義和函數聲明;
flash.c文件
flash.c文件主要包含兩個函數,一個是內部FLASH標準編程函數Flash_Test,一個是內部FLASH快速編程函數Flash_Test_Fast,這兩個函數具體執行過程如下:
內部FLASH標準編程函數Flash_Test執行過程:
(1)調用FLASH_Unlock函數進行解鎖;
(2) 根據起始地址及結束地址計算需要擦除頁數;
(3) 調用FLASH_ClearFlag函數清除各種標志位;
(4) 使用for循環以及調用FLASH_ErasePage函數擦除頁數,每次擦除一頁;
(5) 使用while循環并調用FLASH_ProgramWord函數向起始地址至結束地址的存儲區域都寫入變量“Data”存儲的數值數值;
(6) 調用FLASH_Lock函數進行上鎖;
(7) 使用指針讀取寫入的數據內容并校驗。
內部FLASH快速編程函數Flash_Test_Fast執行過程與標準編程執行過程類似,具體如下:
(1)調用FLASH_Unlock_Fast函數進行解鎖;
(2) 調用FLASH_ErasePage_Fast函數擦除指定閃存頁;
(3) 調用FLASH_BufReset函數復位閃存緩沖區,執行清除內部128字節緩存區操作;
(4) 調用FLASH_BufLoad函數向指定地址開始連續寫入16字節數據(4字節/次操作,寫的地址每次偏移量為4),然后執行加載到緩沖區;
(5) 調用FLASH_ProgramPage_Fast函數啟動一次快速頁編程動作,編程指定的閃存頁;
(6) 調用FLASH_Lock_Fast函數進行上鎖;
(7) 使用for循環讀取編程地址進行數據校驗并返回校驗值。
以上兩個函數執行過程可對照CH32V103應用手冊第24章閃存操作流程進行程序編寫,更有助于理解編程。
main.c函數
main.c函數主要進行函數初始化以及根據flash.c文件兩個函數返回值輸出相應信息。
4、下載驗證
將編譯好的程序下載到開發板并復位,串口打印情況具體如下:
根據串口打印信息可知,內部FLASH標準編程和快速編程測試成功。
-
處理器
+關注
關注
68文章
19382瀏覽量
230482 -
mcu
+關注
關注
146文章
17199瀏覽量
351926 -
FlaSh
+關注
關注
10文章
1640瀏覽量
148299 -
RISC-V
+關注
關注
45文章
2307瀏覽量
46297 -
CH32V103
+關注
關注
1文章
13瀏覽量
1026 -
ch32
+關注
關注
0文章
73瀏覽量
663
發布評論請先 登錄
相關推薦
評論