91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

GD32的FLASH讀、擦除、寫操作

撞上電子 ? 2024-02-19 12:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一,GD32的flash特征

1、在flash的前256K字節空間內,CPU執行指令零等待;在此范圍外,CPU讀取指令存在較長延時;

2、對于flash大于512KB(不包括等于512KB)的GD32F10x_CL和GD32F10x_XD,使用了兩片閃存;前512KB容量在第一片閃存(bank0)中,后續的容量在第二片閃存(bank1)中;

3、對于flash容量小于等于512KB的GD32F10x_CL和GD32F10x_HD,只使用了bank0;

4、對 于 GD32F10x_MD , 閃 存 頁 大 小 為 1KB 。GD32F10x_CL 和 GD32F10x_HD ,GD32F10x_XD,bank0的閃存頁大小為2KB,bank1的閃存頁大小為4KB;

5、支持32位整字或16位半字編程,頁擦除和整片擦除操作;

二,GD32的flash結構

1、GD32F10x_MD

d596480a-cee1-11ee-9118-92fbcf53809c.png

GD32F10x_CL,GD32F10x_HD 和 GD32F10x_XD

d5d1b67e-cee1-11ee-9118-92fbcf53809c.png

三,GD32的flash讀操作

flash可以像普通存儲空間一樣直接尋址訪問。

value=*(uint32_t*)FlashAddr;

uint16_t IAP_ReadFlag(void){ return *(volatile uint16_t*)(FLASH_ADDR); }

四,GD32的flash擦除操作

每一頁可以被獨立擦除,步驟如下:

1,確保FMC_CTLx寄存器不處于鎖定狀態;

2,檢查FMC_STATx寄存器的BUSY位來判定閃存是否正處于擦寫訪問狀態,若BUSY位為1,則需等待該操作結束,BUSY位變為0;

3,置位FMC_CTLx寄存器的PER位;

4,將待擦除頁的絕對地址(0x08XX XXXX)寫到FMC_ADDRx寄存器;

5,通過將FMC_CTLx寄存器的START位置1來發送頁擦除命令到FMC;

6,等待擦除指令執行完畢,FMC_STATx寄存器的BUSY位清0;

7,如果需要,使用DBUS讀并驗證該頁是否擦除成功。

void fmc_erase_page(uint32_t Page_Address){ fmc_unlock(); //fmc解鎖 /* clear all pending flags */ fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR);
/* erase the flash pages */ fmc_page_erase(Page_Address);
/* clear all pending flags */ fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR);
fmc_lock(); //fmc上鎖}

要擦除連續的幾頁:

void fmc_erase_pages(void){uint32_terase_counter;
/* unlock the flash program/erase controller */ fmc_unlock(); /* clear all pending flags */ fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR);
/* erase the flash pages */ for(erase_counter = 0; erase_counter < page_num; erase_counter++){ fmc_page_erase(FMC_WRITE_START_ADDR + (FMC_PAGE_SIZE * erase_counter)); fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR); }

/* lock the main FMC after the erase operation */ fmc_lock();}

全部擦除:

void fmc_erase_page(uint32_t Page_Address){ fmc_unlock(); //fmc解鎖 /* clear all pending flags */ fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR);
/* erase whole chip */ fmc_mass_erase();
/* clear all pending flags */ fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR);
fmc_lock(); //fmc上鎖}

五,flash寫

往flash的某個地址寫入數據前,一般要先擦除該地址。

16位半字編程:

void IAP_WriteFlag(uint16_t flag){ fmc_unlock(); fmc_page_erase(IAP_FLAG_ADDR); fmc_halfword_program(IAP_FLAG_ADDR,flag); fmc_lock();}

32位整字編程:

void fmc_program(void){ /* unlock the flash program/erase controller */ fmc_unlock();
address = FMC_WRITE_START_ADDR; /* program flash */ while(address < FMC_WRITE_END_ADDR){ fmc_word_program(address, data0); address += 4; fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR); } /* lock the main FMC after the program operation */ fmc_lock();}

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

    關注

    10

    文章

    1679

    瀏覽量

    151911
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11083

    瀏覽量

    217189
  • GD32
    +關注

    關注

    7

    文章

    421

    瀏覽量

    25525
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    GD32H757Z海棠派開發板使用手冊】第四講 FMC-片內Flash擦寫實驗

    FMC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32H7XX系列MCU中,具有高達3840KB字節的片上閃存可用于存儲指令或數據。FMC也提供了扇區
    的頭像 發表于 04-19 10:09 ?2086次閱讀
    【<b class='flag-5'>GD</b>32H757Z海棠派開發板使用手冊】第四講 FMC-片內<b class='flag-5'>Flash</b>擦寫<b class='flag-5'>讀</b>實驗

    GD32 MCU 入門教程】GD32 MCU 常見外設介紹(12)FMC 模塊介紹

    閃存控制器(FMC),提供了片上閃存需要的所有功能。FMC 也提供了頁擦除,整片擦除,以及32 位整字或 16 位半字編程閃存等操作GD32 MCU 支持不同類型編程的具體說明如下
    的頭像 發表于 08-21 09:56 ?2157次閱讀
    <b class='flag-5'>GD32</b> MCU 入門教程】<b class='flag-5'>GD32</b> MCU 常見外設介紹(12)FMC 模塊介紹

    GD32無法燒的原因?

    GD32無法燒
    發表于 07-26 07:09

    什么是GD32

    一、前言什么GD32GD32是國內開發的一款單片機,據說開發的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的,不過
    發表于 08-12 07:46

    「必看干貨」淺談GD32與STM32之間的區別

    延長上電時間 ,配置(2ms) 。4.GD32提高了相同工作頻率下的代碼執行速度,所以GD32的_NOP()時間比STM32更加短,所以不使用定時器做延時時要注意修改。5.GD32的flash
    發表于 09-26 14:28

    JFlash解除GD32保護的方法

    JFlash解除GD32保護如果用戶添加了保護或者誤操作等導致的下載不了,可以先進行解鎖嘗試,步驟如下:1、打開J-Flash V6.4
    發表于 11-04 09:10

    GD32操作FLASH時有哪些注意事項呢

    GD32操作FLASH時注意事項GD32操作其內部FLASH時,發現連續存儲兩個數據,并且連續
    發表于 01-26 07:38

    GD32替換STM32?這些坑你別踩...

    味著單片機代碼運行的速度會更快,項目中如果需要進行刷屏,開方運算,電機控制等操作GD是一個不錯的選擇。3、供電外部供電:GD32外部供電范圍是2.6~3.6V,STM32外部供電范圍是2~3.6V。
    發表于 03-31 10:51

    分享在IAR環境下GD32flash下載算法的一些理解

    各個字段的地址分配,如.data, .bss段等,此處內容比較簡單,大家開發時也都會涉及到,當有新增SDRAM,和外部flash時,可以修改此文件,以及定義字段等操作。總結此次就簡單描述下GD32
    發表于 09-30 11:05

    GD32 MCU原理及固件庫開發指南》 + 初感悟

    庫開發能夠避免每次操作寄存器時去查芯片的應用手冊,這樣能很好地提高開發效率。GD32 MCU原理固件庫開發指南這本書它詳細描述了基本所有外設的底層驅動程序和API接口,可以讓我快速地明白各個API函數
    發表于 03-31 22:11

    Linux下flash操作擦除步驟

    的一段區域。 需要注意的是,在對NOR FLASH進行讀寫數據時,需要參考對應的datasheet,例如這里選用的NOR FLASH擦除
    發表于 06-30 09:49 ?1.6w次閱讀
    Linux下<b class='flag-5'>flash</b><b class='flag-5'>操作</b><b class='flag-5'>讀</b>、<b class='flag-5'>寫</b>、<b class='flag-5'>擦除</b>步驟

    如何使用QSPI Flash控制器開發板上的 QSPI Flash進行操作

    學習內容 本文首先介紹Flash和QSPI Flash控制器的相關內容,然后使用 QSPI Flash 控制器,開發板上的 QSPI Flash 進行
    的頭像 發表于 06-10 17:08 ?1.5w次閱讀
    如何使用QSPI <b class='flag-5'>Flash</b>控制器開發板上的 QSPI <b class='flag-5'>Flash</b>進行<b class='flag-5'>寫</b><b class='flag-5'>讀</b><b class='flag-5'>操作</b>

    GD32操作FLASH時注意事項

    GD32操作FLASH時注意事項GD32操作其內部FLASH時,發現連續存儲兩個數據,并且連續
    發表于 12-02 10:36 ?14次下載
    <b class='flag-5'>GD32</b><b class='flag-5'>操作</b><b class='flag-5'>FLASH</b>時注意事項

    flash芯片時為什么需要先擦除

    flash芯片時為什么需要先擦除? 在講解為什么需要先擦除Flash芯片之前,先來了解一下Flash
    的頭像 發表于 10-29 17:24 ?5143次閱讀

    Nor Flash編程和擦除操作的詳細流程

    Nor Flash 中的編程和擦除操作涉及寫入數據和擦除存儲單元的特定步驟。
    的頭像 發表于 12-05 15:19 ?2200次閱讀
    主站蜘蛛池模板: 亚洲成在人线久久综合 | 国产精品久久免费观看 | 久久草在线播放 | 99啪啪| 午夜久久久久久久 | 天天爱天天做色综合 | 草久久久久 | jlzz日本| 888米奇在线视频四色 | 日本免费黄色 | 黄色大片视频 | 国内精品视频 | 伊人免费网 | 韩国三级在线视频 | 91久久天天躁狠狠躁夜夜 | 欧美不在线 | 爱婷婷网站在线观看 | 国产看午夜精品理论片 | 色多多入口 | 免费人成在线观看网站 | 亚洲专区一区 | 午夜手机福利视频 | 种子搜索在线 | 日本大黄视频 | 亚洲免费黄色网 | 另类图片综合网 | 亚洲国产成人在线 | 奇米7777第四色 | 另类free性欧美护士 | 色网站免费在线观看 | 一二三四日本视频社区 | 天堂中文字幕 | 99久久久久久久 | 国产三区视频 | www.色亚洲 | 欧美性猛交xxxx | 不卡无毒免费毛片视频观看 | 一区二区三区电影 | 美女张开腿露尿口给男人亲 | 老熟女毛片| 美女扒开尿口给男人捅 |