精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HK32MCU應用筆記(十七)| HK32F103xC/D/E-flash擦寫應用及注意事項

jf_pJlTbmA9 ? 來源:航順芯片 ? 作者:航順芯片 ? 2023-09-18 10:58 ? 次閱讀

HK32F103x/C/D/E是深圳市航順芯片技術研發有限公司推出的中大容量的F103系列芯片。作為32位MCU,大多會內置flash以便應用程序的存儲及更新,其可靠性及訪問速度也遠遠優于外部flash。

01、Flash閃存主要特性

高達512 Kbyte Flash存儲器

存儲器結構:

◆主閃存模塊:512Kbyte,該存儲塊劃分為256(Page)×2Kbyte

◆選項字節有256個字

閃存的接口特征:

◆帶預取緩沖器的讀接口

◆選擇字節加載器

◆閃存編程/擦除操作

◆訪問/寫保護

◆低功耗模式

Flash空間由32位寬的存儲單元組成,既可以存代碼又可以存數據。主閃存塊有256頁(每頁2Kbyte)。模塊如下表所示:

wKgaomUD54iAD4qfAAC9ciF-iIA826.png

02、Flash寫和擦除操作

Flash擦寫模塊處理Flash的編程和擦除,它包含12個32位的寄存器。在產品的整個工作電壓范圍內支持執行Flash編程和擦除操作。該操作由下列12個寄存器完成:

●Flash關鍵字寄存器(FLASH_KEYR)

●Flash選項關鍵字寄存器(FLASH_OPTKEYR)

●Flash控制寄存器(FLASH_CR)

●Flash狀態寄存器(FLASH_SR)

●Flash地址寄存器(FLASH_AR)

●Flash選項字節寄存器(FLASH_OBR)

●Flash寫保護寄存器(FLASH_WRPR)

●Flash控制寄存器2(FLASH_ECR)

●4個編程數據寄存器(PW0~PW3)

只要CPU不訪問Flash空間,正在執行的Flash寫操作不會妨礙CPU的運行。即,在執行寫/擦除操作的同時,不能對Flash取指和訪問其數據。否則,總線訪問將暫停。

03、對Flash空間的解鎖

復位后,Flash存儲器默認處于受保護狀態,以避免意外擦除。FLASH_CR寄存器的值通常不允許改寫,只有對FLASH_KEYR寄存器進行解鎖操作后,才具有對FLASH_ CR寄存器的訪問權限。解鎖操作包括以下步驟:

1.向FLASH_KEYR寄存器寫入關鍵字KEY1=0x45670123。

2.向FLASH_KEYR寄存器寫入關鍵字KEY2=0xCDEF89AB。

任何錯誤的順序將會鎖死FLASH_CR直至下次復位。當發生關鍵字錯誤時,會由總線錯誤引發一次硬件錯誤中斷。

●如果KEY1出錯,就會立即中斷。

●如果KEY1正確但KEY2錯誤時,就會在KEY2錯的時刻觸發中斷。

可以對比以下該系列芯片的主要儲存器映射圖:

wKgZomUD542AMUD6AAJ9wuZWGHc015.png

04、標準編程

Flash 存儲器接口會預讀待編程地址的內容,然后判斷其是否已經被擦除,如果不是,那么編程操作會自動取消,并且在FLASH_SR寄存器的PGERR位上提示編程錯誤告警。如果被編程的內容為全零,則會例外,這時會正確編程并且不告警。

如果待編程地址所對應的FLASH_WRPR中的寫保護位有效,同樣也不會有編程動作,同樣也會產生編程錯誤告警。編程動作結束后,FLASH_SR寄存器中的EOP位會給出提示。

主Flash存儲器標準模式下的編程過程如下:

●半字、字編程:

1.檢查FLASH_SR中的BSY位,以確認上次操作已經結束。

2.置位FLASH_CR寄存器中的PG位或者FLASH_ECR的WPG位。

3.根據配置,以半字/字為單位向目標地址寫入數據。

4.等待FLASH_SR寄存器中的 BSY 歸零。

5、讀取編程的值然后驗證。

●雙字和四字編程:

1.檢查FLASH_SR中的BSY位,以確認上次操作已經結束。

2.置位FLASH_ECR寄存器中的2WPG位或者4WPG位。

3.根據配置,向PW0~PW1或者PW0~PW4寫入數據。

4.向FLASH_AR寫入待編程位置最低位置地址。

5.置位FLASH_CR寄存器中的STRT位為1。

6.等待FLASH_SR寄存器中的BSY歸零。

7.讀取編程的值然后驗證。

注意:當 FLASH_SR中的BSY被置’1’時,寫模式下的寄存器不能被讀。

Flash存儲器擦除

Flash存儲器可以按頁或半頁為單位擦除,也可以整片擦除。

頁擦除

擦除頁的步驟如下:

1.檢查FLASH_SR中的BSY位,以確認上次操作已經結束。

2.將FLASH_CR寄存器中的PER位置為1,以選擇按頁擦除。

3.寫FLASH_AR寄存器的FAR位,寫入待擦除頁的地址。

4.將FLASH_CR寄存器中的 STRT 位置為1,以啟動擦除操作。

5.等待FLASH_SR中的BSY變為0,表明擦除操作完成。

6.檢查LASH_SR寄存器的EOP標志(若Flash擦除成功會置位EOP),然后軟件清除該標志位。

半頁擦除

Flash的半頁為1Kbyte,半頁擦除流程和頁擦除流程類似,區別在于把FLASH_ECR中的HPER位置’1’。擦除半頁的步驟如下:

1.檢查FLASH_SR寄存器中的BSY位,以確認上次操作已經結束。

2.將FLASH_CR寄存器中的HPER位置為1,以選擇按半頁擦除。

3.寫FLASH_AR寄存器的FAR位,寫入待擦除半頁的地址。

4.將FLASH_CR寄存器中的STRT位置為1,以啟動擦除操作。

5.等待FLASH_SR中的BSY變為0,表明擦除操作完成。

6.檢查LASH_SR寄存器的EOP標志(若Flash擦除成功會置位EOP),然后軟件清除該標志位。

整片擦除

可以用整片擦除命令一次擦除整個Flash區,但該命令不會影響信息塊,具體步驟如下:

1.檢查FLASH_SR寄存器的BS位,以確認上次操作已經結束。

2.將FLASH_CR寄存器中的MER位置為1,以選擇整片擦除。

3.將FLASH_CR寄存器中的STRT位置為1,以啟動擦除操作。

4.等待FLASH_SR中的BSY位置0,表明整片擦除操作結束。

5.檢查FLASH_SR寄存器的EOP標志位(如果Flash擦除成功會置位EOP),然后軟件清除該標志位。

05、flash在寫及擦除使用過程中需要注意的地方

問題描述:

CACHE打開的情況下,FLASH寫及擦除操作時產生錯誤。

根本原因:設計原因。

解決方案:

在寫了FLASH->AR寄存器后,操作FLASH->CR寄存器前執行CACHE->CTL|=0x0800指令清一下CACHE。對于HK32F103xCxDxE,我們已經在hk32f10x_flash.c 中已經修改。

來源:航順芯片

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16667

    瀏覽量

    347791
  • FlaSh
    +關注

    關注

    10

    文章

    1598

    瀏覽量

    147339
  • 航順芯片
    +關注

    關注

    1

    文章

    96

    瀏覽量

    22740
收藏 人收藏

    評論

    相關推薦

    HK32MCU用筆記(二十)| HK32F103xC/D/E USB枚舉情況分析(二)

    HK32MCU用筆記(二十)| HK32F103xC/D/E USB枚舉情況分析(二)
    的頭像 發表于 09-18 10:58 ?460次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(二十)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b> USB枚舉情況分析(二)

    HK32MCU用筆記(十九)| HK32F103xC/D/E USB枚舉情況分析

    HK32MCU用筆記(十九)| HK32F103xC/D/E USB枚舉情況分析
    的頭像 發表于 09-18 10:58 ?679次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十九)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b> USB枚舉情況分析

    HK32MCU用筆記(十八)| HK32F103xC/D/E-DAC的應用及注意事項

    HK32MCU用筆記(十八)| HK32F103xC/D/E-DAC的應用及注意事項
    的頭像 發表于 09-18 10:58 ?921次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十八)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-DAC的應用及<b class='flag-5'>注意事項</b>

    HK32MCU用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項

    HK32MCU用筆記(十六)| HK32F103xC/D/E-Timer的應用及注意事項
    的頭像 發表于 09-18 10:58 ?661次閱讀

    HK32MCU用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態不能單獨配置

    HK32MCU用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態不能單獨配置
    的頭像 發表于 09-18 10:58 ?588次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十五)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-同步注入模式下,ADC2工作狀態不能單獨配置

    HK32MCU用筆記(十四)| HK32F103x/C/D/E-TIM1的應用及注意事項

    HK32MCU用筆記(十四)| HK32F103x/C/D/E-TIM1的應用及注意事項
    的頭像 發表于 09-18 10:58 ?652次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十四)| <b class='flag-5'>HK32F103</b>x/C/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-TIM1的應用及<b class='flag-5'>注意事項</b>

    HK32MCU用筆記(十三)| HK32F103xC/D/E-ADC的應用及注意事項

    HK32MCU用筆記(十三)| HK32F103xC/D/E-ADC的應用及注意事項
    的頭像 發表于 09-18 10:58 ?939次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十三)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-ADC的應用及<b class='flag-5'>注意事項</b>

    HK32MCU用筆記(十二)| HK32F103xC/D/E的GPIO的應用及注意事項

    HK32MCU用筆記(十二)| HK32F103xC/D/E的GPIO的應用及注意事項
    的頭像 發表于 09-18 10:58 ?805次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十二)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>的GPIO的應用及<b class='flag-5'>注意事項</b>

    HK32MCU用筆記(十一)| HK32F103xC/D/Eflash讀保護應用及注意事項

    HK32MCU用筆記(十一)| HK32F103xC/D/Eflash讀保護應用及
    的頭像 發表于 09-18 10:58 ?822次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十一)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>的<b class='flag-5'>flash</b>讀保護應用及<b class='flag-5'>注意事項</b>

    HK32MCU用筆記(十)| HK32F103xC/D/E的ADC常規和注入通道同時觸發時的處理機制

    HK32MCU用筆記(十)| HK32F103xC/D/E的ADC常規和注入通道同時觸發時的處理機制
    的頭像 發表于 09-18 10:58 ?617次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(十)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>的ADC常規和注入通道同時觸發時的處理機制

    HK32MCU用筆記(九)| HK32F103x8xB系列CAN的應用解決方案

    HK32MCU用筆記(九)| HK32F103x8xB系列CAN的應用解決方案
    的頭像 發表于 09-18 10:59 ?561次閱讀

    HK32MCU用筆記(六)| HK32MCU芯片調試心得

    HK32MCU用筆記(六)| HK32MCU芯片調試心得
    的頭像 發表于 09-18 10:59 ?656次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(六)| <b class='flag-5'>HK32MCU</b>芯片調試心得

    HK32MCU用筆記(五)| 關于應用HK32F030延時效率問題

    HK32MCU用筆記(五)| 關于應用HK32F030延時效率問題
    的頭像 發表于 09-18 11:00 ?559次閱讀

    HK32MCU用筆記(四)| 關于老版本HK32F103串口USART偶爾出現數據錯誤

    HK32MCU用筆記(四)| 關于老版本HK32F103串口USART偶爾出現數據錯誤
    的頭像 發表于 09-18 11:00 ?989次閱讀

    HK32MCU用筆記(一)| HK32F030X系列在PH測量筆的應用

    HK32MCU用筆記(一)| HK32F030X系列在PH測量筆的應用
    的頭像 發表于 09-18 11:00 ?879次閱讀
    <b class='flag-5'>HK32MCU</b>應<b class='flag-5'>用筆記</b>(一)| <b class='flag-5'>HK32F</b>030X系列在PH測量筆的應用