日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

基于HPM6000系列芯片如何使用Flash模擬EEPROM存儲(chǔ)參數(shù)

331062281 ? 來(lái)源:先楫半導(dǎo)體HPMicro ? 2023-09-21 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概 述

MCU的使用中,經(jīng)常遇到需要存儲(chǔ)參數(shù)或掉電保持?jǐn)?shù)據(jù)等功能。其中,F(xiàn)lash和EEPROM是常見(jiàn)的非易失性存儲(chǔ)器,都可以做到設(shè)備掉電重啟后,數(shù)據(jù)還會(huì)保留。但二者有明顯的區(qū)別:EEPROM可以被編程和電擦除,而且大多數(shù)的EEPROM可以被編程和電擦除,大多數(shù)串行EEPROM允許逐字節(jié)程序或擦除操作。與EEPROM相比,閃存具有更高的密度,這允許在芯片上實(shí)現(xiàn)更大的內(nèi)存陣列(扇區(qū))。通過(guò)對(duì)每個(gè)單元施加時(shí)間控制的電壓來(lái)執(zhí)行閃存擦除和寫(xiě)入周期。典型的Flash寫(xiě)時(shí)間是50μs/8位字;然而,EEPROM通常需要5到10 ms。EEPROM不需要進(jìn)行頁(yè)面(扇區(qū))擦除操作,可以擦除一個(gè)需要指定時(shí)間的特定字節(jié)。與EEPROM相比,F(xiàn)lash具有更高的密度和更低的價(jià)格。

先楫產(chǎn)品可以外接大容量Flash芯片,支持可達(dá)256Mbyte程序或數(shù)據(jù)存儲(chǔ);部分產(chǎn)品如HPM6754、HPM6364、HPM6284內(nèi)置4Mbyte Flash,HPM53XX系列全系支持1Mbyte Flash。在使用Flash模擬EEPROM時(shí),最重要的挑戰(zhàn)是滿(mǎn)足Flash程序/擦除持久性和數(shù)據(jù)保留方面的可靠性目標(biāo)。

其次,在應(yīng)用程序的控制下,需要滿(mǎn)足更新和讀取數(shù)據(jù)的實(shí)時(shí)應(yīng)用要求。請(qǐng)注意,在Flash擦寫(xiě)期間,它不能執(zhí)行Flash應(yīng)用程序,因?yàn)樵诖藭r(shí)間內(nèi)不能執(zhí)行在Flash中的程序,通常程序是將Flash擦寫(xiě)程序拷貝到RAM中執(zhí)行。先楫半導(dǎo)體為了方便客戶(hù)程序應(yīng)用,已經(jīng)將Flash驅(qū)動(dòng)程序集成到ROM中,減少了系統(tǒng)對(duì)RAM的需求,用戶(hù)使用時(shí)更加靈活方便。

由于Flash的塊擦除要求,必須完全為模擬的EEPROM保留至少一個(gè)Flash扇區(qū)。例如,一個(gè)4K x 8bit大小的Flash扇區(qū)可以分為16頁(yè),每個(gè)頁(yè)的大小為256 x 8bit。這使得每個(gè)頁(yè)面相當(dāng)于一個(gè)256 x 8字節(jié)的EEPROM。要保存的數(shù)據(jù)首先寫(xiě)入RAM中的緩沖區(qū)中,每個(gè)部分RAM可以模擬EEPROM的存儲(chǔ)的數(shù)據(jù)。

如何實(shí)現(xiàn)?

根據(jù)Flash扇區(qū)和模擬的EEPROM的大小,劃分相應(yīng)的Flash和RAM空間。

功能:

? 讀取片內(nèi)或片外flash信息。

? 批量讀取flash中數(shù)據(jù)到RAM緩存中。

? 用戶(hù)可以自由讀寫(xiě)RAM緩存中數(shù)據(jù)。

? 用戶(hù)可以將RAM緩存中數(shù)據(jù)寫(xiě)入flash。

? 用戶(hù)可以根據(jù)自己的需要定制存儲(chǔ)空間大小和存儲(chǔ)地址。

由于先楫半導(dǎo)體MCU已經(jīng)集成了Flash驅(qū)動(dòng),用戶(hù)可以不再需要把精力放到繁瑣的底層Flash驅(qū)動(dòng)部分。

為了實(shí)現(xiàn)此功能,需要8個(gè)函數(shù)來(lái)進(jìn)行編程、讀取和擦除,3個(gè)宏定義確定存儲(chǔ)空間和位置。

/* Sector size */

#defineSECTOR_SIZE (uint32_t) (0x1000)

/* Sectors 0 and 1 base and end addresses */

#defineFlash_base 0x80000000L

#defineSECTOR1_BASE_ADDRESS (Flash_base+0x3FE000)

#defineSECTOR1_END_ADDRESS (SECTOR1_BASE_ADDRESS+SECTOR_SIZE*2-1)

其中,SECTOR_SIZE定義了flash扇區(qū)大小,單位是byte。若不確定flash扇區(qū)大小可以在Initial_EEProm函數(shù)中獲取flash信息。Flash_base定義flash起始地址,具體可以參考user guider中系統(tǒng)內(nèi)存映射 System Memory Map地址。SECTOR1_BASE_ADDRESS和SECTOR1_END_ADDRESS為數(shù)據(jù)存放起始地址,SECTOR1_BASE_ADDRESS必須是特定扇區(qū)起始地址。

ATTR_PLACE_AT_WITH_ALIGNMENT(".ahb_sram",8) uint8_tEEPROM_data[SECTOR1_END_ADDRESS-SECTOR1_BASE_ADDRESS+1];

Flash模擬EEPROM時(shí)需在RAM中開(kāi)辟緩存用于常態(tài)數(shù)據(jù)讀寫(xiě),開(kāi)辟數(shù)據(jù)時(shí)應(yīng)注意RAM區(qū)數(shù)據(jù)應(yīng)放到ahb_sram或noncacheable區(qū)域。

ifdefined(FLASH_XIP) &&FLASH_XIP

ATTR_RAMFUNC hpm_stat_tInitial_EEProm(void)

#else

hpm_stat_tInitial_EEProm(void)

#endif

{

xpi_nor_config_option_toption;

option.header.U= BOARD_APP_XPI_NOR_CFG_OPT_HDR;

option.option0.U= BOARD_APP_XPI_NOR_CFG_OPT_OPT0;

option.option1.U= BOARD_APP_XPI_NOR_CFG_OPT_OPT1;

hpm_stat_tstatus= rom_xpi_nor_auto_config(HPM_XPI0, &s_xpi_nor_config, &option);

if(status!= status_success) {

returnstatus;

}

rom_xpi_nor_get_property(HPM_XPI0, &s_xpi_nor_config, xpi_nor_property_total_size,

&flash_size);

rom_xpi_nor_get_property(HPM_XPI0, &s_xpi_nor_config, xpi_nor_property_sector_size,

§or_size);

rom_xpi_nor_get_property(HPM_XPI0, &s_xpi_nor_config, xpi_nor_property_page_size, &page_size);

printf("Flash Size:%dMBytes Flash Sector Size:%dKBytes Flash Page Size:%dBytes ",

flash_size/ 1024U/ 1024U, sector_size/ 1024U, page_size);

EEProm_Flush();

}/* End Initial_EEProm */

通過(guò)調(diào)用rom_xpi_nor_auto_config()、rom_xpi_nor_get_property()獲取flash信息。

/*******************************************************************************

* Routine: EEPromFlush

* Purpose: Refresh data from flash to buffer.

*******************************************************************************/

inlinevoidEEProm_Flush(void)

{

memcpy((void*)EEPROM_data,(constvoid*)SECTOR1_BASE_ADDRESS,(SECTOR1_END_ADDRESS-SECTOR1_BASE_ADDRESS));

}/* End EEProm_Flush */

從flash中讀取數(shù)據(jù)無(wú)需單獨(dú)調(diào)用API函數(shù),直接尋址讀取效率更高,文中通過(guò)memcpy()函數(shù)直接從flash中讀取數(shù)據(jù)到RAM緩存中,后面讀寫(xiě)參數(shù)直接讀寫(xiě)RAM緩存即可。

如果需要將參數(shù)寫(xiě)入flash中,需將整塊flash擦寫(xiě),由于數(shù)據(jù)已經(jīng)存在RAM緩存,不會(huì)存在flash擦寫(xiě)時(shí)數(shù)據(jù)丟失的問(wèn)題。

/*******************************************************************************

* Routine: writeEEProm_withflush

* Purpose: Writes variable to EEPROM and flush flash later.

* Input : none

* Output: None.

* Return: Returns 0

*******************************************************************************/

#ifdefined(FLASH_XIP) &&FLASH_XIP

ATTR_RAMFUNC hpm_stat_twriteEEProm_withflush(uint16_tindex, uint8_t*data, uint16_tsize)

#else

hpm_stat_twriteEEProm_withflush(uint16_tindex, uint8_t*data, uint16_tsize)

#endif

{

hpm_stat_tstatus;

if(flash_size==0) returnstatus_fail;

memcpy((void*)&EEPROM_data[index],(constvoid*)data,size);

status= rom_xpi_nor_erase(HPM_XPI0, xpi_xfer_channel_auto, &s_xpi_nor_config,

SECTOR1_BASE_ADDRESS-Flash_base, SECTOR1_END_ADDRESS-SECTOR1_BASE_ADDRESS);

if(status!= status_success) {

returnstatus;

}

status= rom_xpi_nor_program(HPM_XPI0, xpi_xfer_channel_auto, &s_xpi_nor_config,

(constuint32_t*)EEPROM_data, SECTOR1_BASE_ADDRESS-Flash_base, SECTOR1_END_ADDRESS-SECTOR1_BASE_ADDRESS);

if(status!= status_success) {

returnstatus;

}

}

考慮到flash擦寫(xiě)期間不能讀取flash,flash擦寫(xiě)函數(shù)需放置在RAM執(zhí)行的程序存儲(chǔ)空間。先楫SDK中已經(jīng)定義好了ram運(yùn)行區(qū)域,并在HPM_COMMON.H文件中將函數(shù)和數(shù)字放置屬性重新封裝,通過(guò)ATTR_RAMFUNC等效定義__attribute__((section(“.fast”)))。為確保擦寫(xiě)flash期間不會(huì)被中斷打斷從而調(diào)用其他flash中的程序,需在運(yùn)行中關(guān)閉中斷。

//disable all interrupt before programming flash

CSR_reg= disable_global_irq(CSR_MSTATUS_MIE_MASK);

disable_global_irq(CSR_MSTATUS_SIE_MASK);

disable_global_irq(CSR_MSTATUS_UIE_MASK);

writeEEProm_withflush(0,(uint8_t*)s_write_buf,0x1000);//update eeprom with flash

//restore interrupt

restore_global_irq(CSR_reg);

小 結(jié)

本文首先介紹了基于HPM6000系列芯片如何使用Flash模擬EEPROM存儲(chǔ)參數(shù)。由于先楫SDK中已經(jīng)提供了強(qiáng)大的驅(qū)動(dòng)庫(kù),用戶(hù)可以方便地通過(guò)Flash存儲(chǔ)數(shù)據(jù),降低成本和提高使用靈活性。

“先楫半導(dǎo)體”(HPMicro)是一家致力于高性能嵌入式解決方案的半導(dǎo)體公司,總部位于上海,產(chǎn)品覆蓋微控制器、微處理器和周邊芯片,以及配套的開(kāi)發(fā)工具和生態(tài)系統(tǒng)。公司成立于2020年6月,總部坐落于上海市張江高科技園區(qū),并在天津、深圳和蘇州均設(shè)立分公司。核心團(tuán)隊(duì)來(lái)自世界知名半導(dǎo)體公司管理團(tuán)隊(duì),具有15年以上,超過(guò)20個(gè)SoC的豐富的研發(fā)及管理經(jīng)驗(yàn)。先楫半導(dǎo)體以產(chǎn)品質(zhì)量為本,所有產(chǎn)品均通過(guò)嚴(yán)格的可靠性測(cè)試。目前已經(jīng)量產(chǎn)的高性能通用MCU產(chǎn)品包含HPM6700/6400、HPM6300、HPM6200及HPM5300四個(gè)系列,性能領(lǐng)先國(guó)際同類(lèi)產(chǎn)品并通過(guò)AEC-Q100認(rèn)證。公司已完成ISO9001質(zhì)量管理認(rèn)證和ISO 26262功能安全管理體系A(chǔ)SIL D認(rèn)證,全力服務(wù)中國(guó)乃至全球的工業(yè)、汽車(chē)和能源市場(chǎng)。更多信息,請(qǐng)?jiān)L問(wèn) https://hpmicro.com/

審核編輯:彭菁

聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    463

    文章

    54463

    瀏覽量

    469692
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1761

    瀏覽量

    155954
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4897

    瀏覽量

    90311
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3346

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何使用Flash模擬EEPROM存儲(chǔ)參數(shù)

    概述在MCU的使用中,經(jīng)常遇到需要存儲(chǔ)參數(shù)或掉電保持?jǐn)?shù)據(jù)等功能。其中,FlashEEPROM是常見(jiàn)的非易失性存儲(chǔ)器,都可以做到設(shè)備掉電重啟
    的頭像 發(fā)表于 09-22 08:19 ?2962次閱讀
    如何使用<b class='flag-5'>Flash</b><b class='flag-5'>模擬</b><b class='flag-5'>EEPROM</b><b class='flag-5'>存儲(chǔ)</b><b class='flag-5'>參數(shù)</b>

    請(qǐng)問(wèn)HPM6000系列CPU中斷有何特點(diǎn),注意事項(xiàng)有哪些?

    HPM6000系列CPU中斷有何特點(diǎn),注意事項(xiàng)有哪些?
    發(fā)表于 05-26 06:19

    請(qǐng)問(wèn)HPM6000系列MCU如何使用硬件DSP單元?

    HPM6000系列MCU如何使用硬件DSP單元?
    發(fā)表于 05-26 06:18

    請(qǐng)問(wèn)HPM6000系列MCU如何使用硬件浮點(diǎn)數(shù)單元?

    HPM6000系列MCU如何使用硬件浮點(diǎn)數(shù)單元?
    發(fā)表于 05-26 06:49

    HPM6000系列微控制器的片上各類(lèi)SRAM使用指南

    HPM6000系列微控制器片上SRAM使用指南
    發(fā)表于 06-01 06:19

    HPM6000系列微控制器片上閃存使用指南

    HPM6000系列MCU片上Flash使用指南
    發(fā)表于 06-01 06:20

    HPM6000系列微控制器BOOT模式的說(shuō)明資料

    HPM6000系列微控制器BOOT MODE指南
    發(fā)表于 06-01 08:43

    HPM6000系列微控制器片上閃存使用指南

    HPM6000系列MCU片上Flash使用指南
    發(fā)表于 06-02 08:54

    HPM6000系列芯片內(nèi)部模擬地和數(shù)字地

    HPM6000系列芯片內(nèi)部模擬地和數(shù)字地是隔離開(kāi)的嗎?
    發(fā)表于 07-10 17:49

    HPM6000系列微控制器 CMSIS DAP調(diào)試器使用指南

    在上海先楫提供的HPM系列MCU評(píng)估套件上,多數(shù)集成了基于FTDI的FT2232芯片的板載調(diào)試器,方便了開(kāi)發(fā)人員直接調(diào)試并評(píng)估HPM6000系列
    的頭像 發(fā)表于 06-19 17:02 ?5944次閱讀
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制器 CMSIS DAP調(diào)試器使用指南

    HPM6000系列 ADC 相關(guān)硬件設(shè)計(jì)教程

    本文將為大家展示國(guó)產(chǎn)芯片HPM6000系列ADC性能出色的測(cè)試結(jié)果并為您提供了與HPM6000系列微控制器的模數(shù)轉(zhuǎn)換器ADC相關(guān)的外部電路設(shè)
    的頭像 發(fā)表于 07-22 11:18 ?2633次閱讀
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b> ADC 相關(guān)硬件設(shè)計(jì)教程

    HPM6000系列微控制器的BOOT 模式的說(shuō)明以及相應(yīng)的外部電路設(shè)計(jì)建議

    1.簡(jiǎn)介HPM6000系列MCU目前提供了不同的啟動(dòng)方式,方便客戶(hù)在研發(fā)生產(chǎn)等不同階段使用。本文提供了HPM6000系列微控制器的BOOT模式的說(shuō)明以及相應(yīng)的外部電路設(shè)計(jì)建議。2.BO
    的頭像 發(fā)表于 07-21 15:15 ?3148次閱讀
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制器的BOOT 模式的說(shuō)明以及相應(yīng)的外部電路設(shè)計(jì)建議

    應(yīng)用分享| HPM6000系列片上SRAM揭秘

    本期開(kāi)發(fā)筆記由費(fèi)神編寫(xiě)主要會(huì)為大家介紹HPM6000系列的各類(lèi)片上SRAM并結(jié)合SeggerEmbeddedStudio的linker文件介紹,提供了如何使用這些SRAM的建議,趕快來(lái)了解吧~簡(jiǎn)介
    的頭像 發(fā)表于 09-19 11:02 ?3319次閱讀
    應(yīng)用分享| <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>片上SRAM揭秘

    應(yīng)用貼士 | HPM6000系列 Security Flash介紹

    本期介紹的是HPM6000系列中securityflash方面內(nèi)容。希望可以幫助用戶(hù)了解先楫為了用戶(hù)信息安全方面所做的設(shè)計(jì)。SecurityFlash模塊概述首先進(jìn)行一些名詞解釋?zhuān)涸诰€(xiàn)執(zhí)行
    的頭像 發(fā)表于 09-29 10:48 ?2166次閱讀
    應(yīng)用貼士 | <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b> Security <b class='flag-5'>Flash</b>介紹

    HPM6000系列微控制器DSP/FFT使用介紹

    電子發(fā)燒友網(wǎng)站提供《HPM6000系列微控制器DSP/FFT使用介紹.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 15:21 ?1次下載
    <b class='flag-5'>HPM6000</b><b class='flag-5'>系列</b>微控制器DSP/FFT使用介紹
    长春市| 富蕴县| 涞源县| 湖南省| 海伦市| 延津县| 买车| 外汇| 商都县| 巫溪县| 香河县| 三台县| 社会| 壶关县| 南郑县| 德化县| 武强县| 晋江市| 东阿县| 苗栗县| 大城县| 若尔盖县| 都江堰市| 兴安县| 太白县| 类乌齐县| 阳西县| 新和县| 封丘县| 临沂市| 九江市| 康马县| 汝州市| 洛扎县| 阿拉善右旗| 沁源县| 塔河县| 成安县| 任丘市| 田阳县| 佛教|