chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GD32的FLASH讀、擦除、寫(xiě)操作

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

掃碼添加小助手

加入工程師交流群

一,GD32的flash特征

1、在flash的前256K字節(jié)空間內(nèi),CPU執(zhí)行指令零等待;在此范圍外,CPU讀取指令存在較長(zhǎng)延時(shí);

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

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

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

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

二,GD32的flash結(jié)構(gòu)

1、GD32F10x_MD

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

GD32F10x_CL,GD32F10x_HD 和 GD32F10x_XD

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

三,GD32的flash讀操作

flash可以像普通存儲(chǔ)空間一樣直接尋址訪問(wèn)。

value=*(uint32_t*)FlashAddr;

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

四,GD32的flash擦除操作

每一頁(yè)可以被獨(dú)立擦除,步驟如下:

1,確保FMC_CTLx寄存器不處于鎖定狀態(tài);

2,檢查FMC_STATx寄存器的BUSY位來(lái)判定閃存是否正處于擦寫(xiě)訪問(wèn)狀態(tài),若BUSY位為1,則需等待該操作結(jié)束,BUSY位變?yōu)?;

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

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

5,通過(guò)將FMC_CTLx寄存器的START位置1來(lái)發(fā)送頁(yè)擦除命令到FMC;

6,等待擦除指令執(zhí)行完畢,F(xiàn)MC_STATx寄存器的BUSY位清0;

7,如果需要,使用DBUS讀并驗(yàn)證該頁(yè)是否擦除成功。

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上鎖}

要擦除連續(xù)的幾頁(yè):

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寫(xiě)

往flash的某個(gè)地址寫(xiě)入數(shù)據(jù)前,一般要先擦除該地址。

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();}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1715

    瀏覽量

    154637
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11213

    瀏覽量

    222783
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    429

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    GD32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第四講 FMC-片內(nèi)Flash擦寫(xiě)實(shí)驗(yàn)

    FMC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32H7XX系列MCU中,具有高達(dá)3840KB字節(jié)的片上閃存可用于存儲(chǔ)指令或數(shù)據(jù)。FMC也提供了扇區(qū)
    的頭像 發(fā)表于 04-19 10:09 ?2691次閱讀
    【<b class='flag-5'>GD</b>32H757Z海棠派開(kāi)發(fā)板使用手冊(cè)】第四講 FMC-片內(nèi)<b class='flag-5'>Flash</b>擦寫(xiě)<b class='flag-5'>讀</b>實(shí)驗(yàn)

    GD32 MCU 入門(mén)教程】GD32 MCU 常見(jiàn)外設(shè)介紹(12)FMC 模塊介紹

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

    GD32無(wú)法燒寫(xiě)的原因?

    GD32無(wú)法燒寫(xiě)
    發(fā)表于 07-26 07:09

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

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

    JFlash解除GD32保護(hù)的方法

    JFlash解除GD32保護(hù)如果用戶(hù)添加了保護(hù)或者誤操作等導(dǎo)致的下載不了,可以先進(jìn)行解鎖嘗試,步驟如下:1、打開(kāi)J-Flash V6.4
    發(fā)表于 11-04 09:10

    GD32操作FLASH時(shí)有哪些注意事項(xiàng)呢

    GD32操作FLASH時(shí)注意事項(xiàng)GD32操作其內(nèi)部FLASH時(shí),發(fā)現(xiàn)連續(xù)存儲(chǔ)兩個(gè)數(shù)據(jù),并且連續(xù)
    發(fā)表于 01-26 07:38

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

    味著單片機(jī)代碼運(yùn)行的速度會(huì)更快,項(xiàng)目中如果需要進(jìn)行刷屏,開(kāi)方運(yùn)算,電機(jī)控制等操作,GD是一個(gè)不錯(cuò)的選擇。3、供電外部供電:GD32外部供電范圍是2.6~3.6V,STM32外部供電范圍是2~3.6V。
    發(fā)表于 03-31 10:51

    分享在IAR環(huán)境下GD32flash下載算法的一些理解

    各個(gè)字段的地址分配,如.data, .bss段等,此處內(nèi)容比較簡(jiǎn)單,大家開(kāi)發(fā)時(shí)也都會(huì)涉及到,當(dāng)有新增SDRAM,和外部flash時(shí),可以修改此文件,以及定義字段等操作。總結(jié)此次就簡(jiǎn)單描述下GD32
    發(fā)表于 09-30 11:05

    GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》 + 初感悟

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

    Linux下flash操作、寫(xiě)擦除步驟

    的一段區(qū)域。 需要注意的是,在對(duì)NOR FLASH進(jìn)行讀寫(xiě)數(shù)據(jù)時(shí),需要參考對(duì)應(yīng)的datasheet,例如這里選用的NOR FLASH寫(xiě)、擦除
    發(fā)表于 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'>寫(xiě)</b>、<b class='flag-5'>擦除</b>步驟

    如何使用QSPI Flash控制器開(kāi)發(fā)板上的 QSPI Flash進(jìn)行寫(xiě)操作

    學(xué)習(xí)內(nèi)容 本文首先介紹Flash和QSPI Flash控制器的相關(guān)內(nèi)容,然后使用 QSPI Flash 控制器,開(kāi)發(fā)板上的 QSPI Flash 進(jìn)行
    的頭像 發(fā)表于 06-10 17:08 ?1.6w次閱讀
    如何使用QSPI <b class='flag-5'>Flash</b>控制器開(kāi)發(fā)板上的 QSPI <b class='flag-5'>Flash</b>進(jìn)行<b class='flag-5'>寫(xiě)</b><b class='flag-5'>讀</b><b class='flag-5'>操作</b>

    軟件優(yōu)化Flash擦除時(shí)間長(zhǎng)的方法

    。正文:??首先要明白Flash擦除需要很長(zhǎng)的時(shí)間,寫(xiě)用不了多少時(shí)間,所以我們可以在寫(xiě)之前執(zhí)行擦除指令,使
    發(fā)表于 12-01 20:36 ?4次下載
    軟件優(yōu)化<b class='flag-5'>Flash</b><b class='flag-5'>擦除</b>時(shí)間長(zhǎng)的方法

    GD32操作FLASH時(shí)注意事項(xiàng)

    GD32操作FLASH時(shí)注意事項(xiàng)GD32操作其內(nèi)部FLASH時(shí),發(fā)現(xiàn)連續(xù)存儲(chǔ)兩個(gè)數(shù)據(jù),并且連續(xù)
    發(fā)表于 12-02 10:36 ?14次下載
    <b class='flag-5'>GD32</b><b class='flag-5'>操作</b><b class='flag-5'>FLASH</b>時(shí)注意事項(xiàng)

    寫(xiě)flash芯片時(shí)為什么需要先擦除?

    寫(xiě)flash芯片時(shí)為什么需要先擦除? 在講解為什么需要先擦除Flash芯片之前,先來(lái)了解一下Flash
    的頭像 發(fā)表于 10-29 17:24 ?5698次閱讀

    Nor Flash編程和擦除操作的詳細(xì)流程

    Nor Flash 中的編程和擦除操作涉及寫(xiě)入數(shù)據(jù)和擦除存儲(chǔ)單元的特定步驟。
    的頭像 發(fā)表于 12-05 15:19 ?2623次閱讀