VINKA/永嘉微LCD驅(qū)動(dòng)IC兼容替代HT16C23
VK2C23 ¥33通信電纜 網(wǎng)絡(luò)設(shè)備 無(wú)線通信 云計(jì)算|大數(shù)據(jù) 顯示設(shè)備 存儲(chǔ)設(shè)備 網(wǎng)絡(luò)輔助設(shè)備 信號(hào)傳輸處理 多媒體設(shè)備 廣播系統(tǒng) 智慧城市管理系統(tǒng) 其它智慧基建產(chǎn)品
沈陽(yáng)芯碩科技有限公司
產(chǎn)品型號(hào)
品 牌
廠商性質(zhì)代理商
所 在 地沈陽(yáng)市
聯(lián)系方式:宣女士查看聯(lián)系方式
更新時(shí)間:2021-07-20 08:59:52瀏覽次數(shù):812次
聯(lián)系我時(shí),請(qǐng)告知來(lái)自 智慧城市網(wǎng)1 | 1 |
---|
什么是 FLASH?
FLASH 接口通過(guò) FLASH ICODE、DCODE、MCODE 總線對(duì) FLASH 進(jìn)行訪問(wèn),該接口可對(duì) FLASH 執(zhí)行編程、擦除和全擦除操作;通過(guò)緩存機(jī)制加速代碼執(zhí)行。
FLASH 的重要特征?
FLASH 讀、編程、擦除和全擦除操作,支持引導(dǎo)交換,安全保護(hù)和數(shù)據(jù)加密。
1
摘要
本篇應(yīng)用筆記主要介紹如何使用 HC32F460 系列芯片的嵌入式 FLASH 讀寫(xiě)數(shù)據(jù)。
2
FLASH 簡(jiǎn)介
什么是 FLASH?
FLASH 接口通過(guò) FLASH ICODE、DCODE、MCODE 總線對(duì) FLASH 進(jìn)行訪問(wèn),該接口可對(duì) FLASH 執(zhí)行編程、擦除和全擦除操作;通過(guò)緩存機(jī)制加速代碼執(zhí)行。
FLASH 的重要特征?
FLASH 讀、編程、擦除和全擦除操作,支持引導(dǎo)交換,安全保護(hù)和數(shù)據(jù)加密。
3
HC32F460 系列的 FLASH
3.1
簡(jiǎn)介
FLASH 接口通過(guò) FLASH ICODE、DCODE、MCODE 總線對(duì) FLASH 進(jìn)行訪問(wèn),該接口可對(duì)FLASH 執(zhí)行編程、擦除和全擦除操作;通過(guò)指令預(yù)取和緩存機(jī)制加速代碼執(zhí)行。
3.2
說(shuō)明
FLASH 讀、編程、扇區(qū)擦除和全擦除操作。CODE 總線 16Bytes 預(yù)取值,I_CODE 和 D-CODE 總線上共享 64 個(gè)緩存(128bit 寬)。支持 FLASH 低功耗讀。支持引導(dǎo)交換。支持安全保護(hù)及數(shù)據(jù)加密。容量為 512Kbytes(其中有 32bytes 為功能保留位),分為 64 個(gè)扇區(qū),每個(gè)扇區(qū)為 8KBytes。編程單位為 4Bytes,擦除單位為8KBytes。128bit 寬數(shù)據(jù)讀取。OTP(One Time Program)區(qū)域共 1020Bytes,分為 960Bytes 數(shù)據(jù)區(qū),并配有 60Bytes 的鎖存區(qū)。
3.2.1 寄存器介紹
1)
EFM_FAPRT:訪問(wèn) EFM 寄存器保護(hù)寄存器。
2)
EFM_FSTP:FLASH 停止寄存器。
3)
EFM_FRMC:讀模式寄存器。可配置插入等待周期,緩存功能、預(yù)取指功能等。
4)
EFM_FWMC:擦寫(xiě)模式寄存器。配置編程擦除模式。
5)
EFM_FSR:狀態(tài)寄存器。查看 FLASH 狀態(tài),結(jié)束標(biāo)志、錯(cuò)誤標(biāo)志等。
6)
EFM_FSCLR:狀態(tài)清除寄存器。
7)
EFM_FITE:中斷許可寄存器。配置操作結(jié)束或錯(cuò)誤中斷許可。
8)
EFM_FSWP:引導(dǎo)交換狀態(tài)寄存器。通過(guò)該寄存器可判斷程序復(fù)位后從扇區(qū) 0 還是扇區(qū) 1 啟動(dòng)。
9) EFM_FPMTSW:FLASH 窗口保護(hù)起始地址寄存器。
10) EFM_FPMTEW:FLASH 窗口保護(hù)結(jié)束地址寄存器。
11) EFM_UQID1~3:Unique ID 寄存器。
3.2.2 工作流程介紹
3.2.2.1 寄存器解除保護(hù)和寫(xiě)保護(hù)
本模塊的寄存器受 EFM_FAPRT 寄存器保護(hù),當(dāng)處于保護(hù)狀態(tài),屏蔽普通的寫(xiě)操作。
-
在實(shí)際應(yīng)用中,發(fā)現(xiàn)寄存器值未寫(xiě)入成功,應(yīng)首先檢查 EFM 寄存器訪問(wèn)保護(hù)是否有效,
保護(hù)有效時(shí),EFM_FAPRT 寄存器值讀出為 0x00000000。
3.2.2.2 扇區(qū)擦除
EFM 提供扇區(qū)擦除和全擦除兩種擦除方式。對(duì) FLASH 進(jìn)行扇區(qū)擦除操作后,該扇區(qū)內(nèi)地址(8Kbytes 空間)數(shù)據(jù)刷新為全 1。
3.2.2.3 全擦除
EFM 提供扇區(qū)擦除和全擦除兩種擦除方式。對(duì) FLASH 進(jìn)行全擦除操作后整個(gè)FLASH 區(qū)域素有地址數(shù)據(jù)刷新為全 1。
3.2.2.4 單次編程無(wú)回讀
單編程無(wú)回讀模式設(shè)定步驟如下:
3.2.2.5 單次編程回讀
單編程回讀模式是指編程結(jié)束后自動(dòng)讀取編程地址并和寫(xiě)入數(shù)據(jù)對(duì)比,輸出判斷一致標(biāo)志位EFM_FSR.PGMISMTCH。
單編程回讀模式設(shè)定步驟如下:
注意:
- EFM_FSR.PGMISMTCH 為 0,表示編程成功,為 1 表示該 FLASH 地址已遭破壞,永廢棄。
3.2.2.6 連續(xù)編程
當(dāng)連續(xù)對(duì) FLASH 地址進(jìn)行編程時(shí),推薦使用連續(xù)編程模式。連續(xù)編程模式比單編程模式可以節(jié)約時(shí)間 50%以上。連續(xù)編程模式時(shí),頻率不能低于 12MHz。
3.2.2.7 總線保持/釋放功能
通過(guò)設(shè)定寄存器 EFM_FWMC.BUSHLDCTL 位,可設(shè)定 FLASH 編程、擦除期間,總線處于保持還是釋放狀態(tài)。
FLASH 編程、擦除指令在 FLASH 上執(zhí)行時(shí),該控制位必須設(shè)定為 0。擦除指令在 FLASH 意外空間(例如 RAM)執(zhí)行時(shí),可根據(jù)需求自由設(shè)定。
當(dāng) EFM_FWMC.BUSHLDCTL 為 1(即 FLASH 編程、擦除期間,總線釋放狀態(tài))時(shí),在編程(連續(xù)編程除外)、擦除結(jié)束前(EFM_FSR.RDY=1)對(duì) FLASH 的讀寫(xiě)訪問(wèn)將會(huì)被保護(hù),標(biāo)志位 EFM_FSR.BUSCOLERR 位置位。
3.2.3 一次性可編程字節(jié)(OTP)
OTP(One Time Program)區(qū)域分為 15 個(gè) 64 字節(jié)的數(shù)據(jù)塊,每塊數(shù)據(jù)對(duì)應(yīng)一個(gè) 4Bytes 的鎖存地址。
鎖存地址用于鎖存對(duì)應(yīng)的數(shù)據(jù)塊。鎖存地址數(shù)據(jù)全為 1 時(shí),對(duì)應(yīng)的 OTP 區(qū)域數(shù)據(jù)塊可以編程;當(dāng)鎖存地址數(shù)據(jù)全為 0 時(shí),對(duì)應(yīng)的 OTP 區(qū)域數(shù)據(jù)不可編程。
所有 OTP 數(shù)據(jù)塊和鎖存地址均無(wú)法擦除。OTP 區(qū)域的編程已封裝在 flashloader 中,用戶可以直接操作 otp 對(duì)應(yīng)地址。具體樣例請(qǐng)參考EFM 模塊下的 efm_otp 樣例代碼。
3.2.4 引導(dǎo)交換
EFM 提供引導(dǎo)交換功能,用戶在升級(jí)引導(dǎo)程序的時(shí)候,對(duì)扇區(qū) 0(0x00000000~0x00001FFF)進(jìn)行擦寫(xiě),如擦寫(xiě)時(shí)遇到不可期的意外(掉電、復(fù)位),有可能會(huì)導(dǎo)致整個(gè)芯片不能正常啟動(dòng)。引導(dǎo)交換功能可以避免這種情況。
在對(duì)扇區(qū) 0 擦除前預(yù)先把新的引導(dǎo)程序?qū)懭肷葏^(qū) 1(0x00002000~0x00003FFF),然后對(duì) EFM地址 0x0007FFDC 進(jìn)行編程數(shù)據(jù) 0xFFFF4321,通過(guò)端子復(fù)位,實(shí)現(xiàn) CPU 從扇區(qū) 1 啟動(dòng)新的引導(dǎo)程序,此時(shí),再對(duì)扇區(qū) 0 進(jìn)行擦除,重新編程用戶程序。再次升級(jí)啟動(dòng)引導(dǎo)程序時(shí),由于保存啟動(dòng)扇區(qū)交換信息的地址 0x0007FFDC 已經(jīng)被編程過(guò)了(用戶可以根據(jù)讀 FLASH 地址或者 EFM_FSWP 寄存器判斷是否使用過(guò)啟動(dòng)交換功能,EFM_FSWP.FSWP = 0,表明扇區(qū) 0 和扇區(qū) 1 已經(jīng)交換,復(fù)位后從扇區(qū) 1 啟動(dòng)),需對(duì)扇區(qū) 63 (0x0007E000~0x0007FFFF)進(jìn)行扇區(qū)擦除后再進(jìn)行啟動(dòng)程序的升級(jí)。在對(duì)扇區(qū) 0 進(jìn)行擦除前,預(yù)先把新的引導(dǎo)程序?qū)懭肷葏^(qū) 1,然后對(duì)扇區(qū) 63 進(jìn)行擦除,通過(guò)端子復(fù)位,CPU 就從扇區(qū) 1 啟動(dòng)新的引導(dǎo)程序,此時(shí)再對(duì)扇區(qū) 0 進(jìn)行擦除,重新編程新的引導(dǎo)程序。
4
樣例代碼
4.1
代碼介紹
用戶可根據(jù)上述的工作流程編寫(xiě)自己的代碼來(lái)學(xué)習(xí)驗(yàn)證該模塊,也可以直接通過(guò)華大半導(dǎo)體的網(wǎng)站下載到設(shè)備驅(qū)動(dòng)庫(kù)(Device Driver Library, DDL)的樣例代碼并使用其中的 FLASH 的樣例進(jìn)行驗(yàn)證。
4.2 代碼運(yùn)行
用戶可以通過(guò)華大半導(dǎo)體的網(wǎng)站下載到 HC32F460 的 DDL 的樣例代碼(efm_simple),并配合評(píng)估用板(EV-HC32F460-LQFP100-050-V1.1)運(yùn)行相關(guān)代碼學(xué)習(xí)使用 FLASH 模塊。以下部分主要介紹如何在評(píng)估板上運(yùn)行 FLASH 樣例代碼并觀察結(jié)果:
-
確認(rèn)安裝正確的 IAR EWARM v7.7 工具(請(qǐng)從 IAR *網(wǎng)站下載相應(yīng)的安裝包,并參考用戶手冊(cè)進(jìn)行安裝)。
-
從華大半導(dǎo)體網(wǎng)站下載 HC32F460 DDL 代碼。
-
下載并運(yùn)行 efm efm_simple中的工程文件.
您感興趣的產(chǎn)品PRODUCTS YOU ARE INTERESTED IN
VINKA/永嘉微LCD驅(qū)動(dòng)IC兼容替代HT16C23
VK2C23 ¥33華大單片機(jī)特殊端口應(yīng)用注意事項(xiàng)
華大HC32F460 面議智慧城市網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ?
請(qǐng)輸入賬號(hào)
請(qǐng)輸入密碼
請(qǐng)輸驗(yàn)證碼
請(qǐng)輸入你感興趣的產(chǎn)品
請(qǐng)簡(jiǎn)單描述您的需求
請(qǐng)選擇省份
聯(lián)系方式
沈陽(yáng)芯碩科技有限公司