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

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

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

CW32L052 FLASH存儲(chǔ)器

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-02-28 17:43 ? 次閱讀

BD網(wǎng)盤鏈接:

https://pan.baidu.com/s/1dmtMWcK1TII-vutsS8X0Og?pwd=5wwy
提取碼:5wwy

概述

CW32L052內(nèi)部集成了64KB嵌入式FLASH供用戶使用,可用來(lái)存儲(chǔ)應(yīng)用程序和用戶數(shù)據(jù)

芯片支持對(duì) FLASH 存儲(chǔ)器的讀、擦除和寫操作,支持 擦寫保護(hù)和讀保護(hù) 。

芯片內(nèi)置 FLASH 編程所需的高壓 BOOST 電路, 無(wú)須額外提供編程電壓

FLASH存儲(chǔ)器組織

  • 總?cè)萘?4KB,分頁(yè)管理
  • 每頁(yè) 512 字節(jié)
  • 共 128 頁(yè)

FLASH存儲(chǔ)器保護(hù)

FLASH 存儲(chǔ)器具有擦寫保護(hù)讀保護(hù)功能。

  • 擦寫保護(hù)

包括鎖定頁(yè)擦寫保護(hù)和PC 地址頁(yè)擦寫保護(hù),處于保護(hù)狀態(tài)的頁(yè)面不能被擦寫,可避免 FLASH 內(nèi)容被意外改寫。

  • 讀保護(hù)

整片F(xiàn)LASH為保護(hù)對(duì)象,不支持單頁(yè)保護(hù),可避免用戶代碼被非法讀取。

FLASH存儲(chǔ)器操作

FLASH 存儲(chǔ)器操作包括:讀操作、擦除、寫(編程)操作。

頁(yè)擦除

FLASH 的頁(yè)擦除操作的最小單位為 1 頁(yè),即 512 字節(jié)。頁(yè)擦除操作完成后,該頁(yè)所有地址空間的數(shù)據(jù)內(nèi)容均為 0xFF 。

如果對(duì)未解鎖的 FLASH 頁(yè)面進(jìn)行頁(yè)擦除操作,或者對(duì)*正在運(yùn)行的程序[^1]*進(jìn)行擦除操作,會(huì)操作失敗,產(chǎn)生 錯(cuò)誤中斷標(biāo)志 。

CW32L052 內(nèi)部 FLASH 存儲(chǔ)器被劃分為 128 頁(yè),每 8 頁(yè)對(duì)應(yīng)擦寫鎖定寄存器1 個(gè)鎖定位 。擦寫鎖定寄存器的各位域與 FLASH 鎖定頁(yè)面的對(duì)應(yīng)關(guān)系如下表所示:
0fcb76c86bd5b5d35365f25a6895bb0a3493144165354211_.jpg

寫操作

基于嵌入式 FLASH 的特性,寫操作只能將 FLASH 存儲(chǔ)器中位數(shù)據(jù) 由'1'改寫為'0' ,不能由'0'改寫為'1', 因此在寫數(shù)據(jù)之前先要對(duì)對(duì)應(yīng)地址所在頁(yè)進(jìn)行擦除操作。

基于以上陳述,總結(jié)出以下三個(gè)原則:

  • 不可對(duì)數(shù)據(jù)位內(nèi)容為'0'的地址寫入
  • 不可對(duì)鎖定區(qū)域內(nèi)的地址寫入
  • 不可對(duì) PC(程序指針)所在的頁(yè)的地址寫入

讀操作

CW32L052 對(duì) FLASH 的讀操作支持 3 種不同位寬,可采用直接訪問(wèn)絕對(duì)地址方式讀取,讀取的數(shù)據(jù)位寬必 須和對(duì)應(yīng)地址邊界對(duì)齊。

核心代碼

//單片機(jī)頭文件
#include "main.h"
//硬件驅(qū)動(dòng)
#include "gpio.h"
#include "delay.h"

//子程序
void LCD_Configuration(void);       //段式LCD配置函數(shù)
void LCD_Display(uint16_t dispdata);     //段式LCD顯示函數(shù)
uint8_t FLASH_Erase(void);         //FLASH頁(yè)擦除函數(shù)
uint8_t FLASH_Write(uint8_t *ByteData,uint16_t amount); //FLASH寫操作函數(shù)

int main(void)
{
 int i;
 int temp8;
 uint8_t cnt=0;
 uint8_t WriteBuf[256];

    LED_Init();    //初始化程序運(yùn)行情況指示燈
 LCD_Configuration();    //配置LCD液晶顯示屏

 FLASH_Erase();          //頁(yè)擦除操作
 for(i=0;i< 256;i++)      //驗(yàn)證是否擦除成功
 {
  temp8=*((volatile uint8_t*)(512*127+i));
  if(temp8!=0xff)
  {
   while(1)
   {
    LED2_ON();       //LED2閃爍
    Delay_ms(300);
    LED2_OFF();
    Delay_ms(300);
   }
  }
 }

 for(i=0;i< 256;i++)      //準(zhǔn)備寫入FLASH存儲(chǔ)器的數(shù)據(jù)
 {
  WriteBuf[i]=i;
 }
 FLASH_Write(WriteBuf,256); //寫操作
 for(i=0;i< 255;i++)           //驗(yàn)證是否寫入正確
 {
  temp8=*((volatile uint8_t*)(512*127+i));
  if(temp8!=i)
  {
   while(1)
   {
    LED1_ON();     //LED1、LED2同時(shí)閃爍指示寫入失敗
    LED2_ON();
    Delay_ms(300);
    LED1_OFF();
    LED2_OFF();
    Delay_ms(300);
   }
  }
 }

 LED1_ON();       //指示擦除、讀、寫均成功
 LED2_ON();
    while(1)
    {
  LCD_Display(*((volatile uint8_t*)(512*127+cnt)));  //LCD上依次顯示寫入的數(shù)據(jù)
  Delay_ms(500);
  cnt++;
    }
}

uint8_t FLASH_Erase(void)    //頁(yè)擦除
{
 int flag=1;

 FLASH_UnlockPages(512*127,512*127);
 flag=FLASH_ErasePages(512*127,512*127);
 FLASH_LockAllPages();
 if(flag!=0)
 {
  while(1)
  {
   LED1_ON();
   Delay_ms(300);
   LED1_OFF();
   Delay_ms(300);
  }
 }

 return 0;
}

uint8_t FLASH_Write(uint8_t *ByteData,uint16_t amount)  //寫操作
{
 int flag=1;

 FLASH_UnlockPages(512*127,512*127);
 flag=FLASH_WriteBytes(512*127,ByteData,amount);
 FLASH_LockAllPages();
 if(flag!=0)
 {
  while(1)
  {
   LED2_ON();
   Delay_ms(300);
   LED2_OFF();
   Delay_ms(300);
  }
 }

 return 0;
}

void LCD_Configuration(void)      //段式LCD配置
{
    __RCC_LCD_CLK_ENABLE();
 RCC_LSI_Enable();

    LCD_InitTypeDef LCD_InitStruct = {0};

    LCD_InitStruct.LCD_Bias = LCD_Bias_1_3;
    LCD_InitStruct.LCD_ClockSource = LCD_CLOCK_SOURCE_LSI;
    LCD_InitStruct.LCD_Duty = LCD_Duty_1_4;
    LCD_InitStruct.LCD_ScanFreq = LCD_SCAN_FREQ_256HZ;
    LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal;

    LCD_Init(&LCD_InitStruct);
 LCD_COMConfig(LCD_COM0 | LCD_COM1 | LCD_COM2 | LCD_COM3, ENABLE);
    LCD_SEG0to23Config(LCD_SEG0|LCD_SEG1|LCD_SEG2|LCD_SEG3|LCD_SEG4|LCD_SEG5|LCD_SEG6|LCD_SEG7, ENABLE);

 LCD_Cmd(ENABLE);
}

void LCD_Display(uint16_t dispdata)   //LCD顯示
{
 uint16_t DisBuf[10]={NUM0,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,NUM7,NUM8,NUM9};

 LCD_Write(LCD_RAMRegister_0,0x00000000);
 LCD_Write(LCD_RAMRegister_1,0x00000000);

 if(dispdata< 10)
  LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata]);
 else if(dispdata< 100)
  LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata/10]|DisBuf[dispdata%10]< 16);
 else if(dispdata< 1000)
 {
  LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata/100]|DisBuf[dispdata/10%10]< 16);
  LCD_Write(LCD_RAMRegister_1,DisBuf[dispdata%10]);
 }
 else
 {
  LCD_Write(LCD_RAMRegister_0,0xffffffff);
  LCD_Write(LCD_RAMRegister_1,0xffffffff);
 }

}

視頻演示
2月28日 00_00_00-00_00_30.gif

補(bǔ)充
FLASH存儲(chǔ)器和EEPROM存儲(chǔ)器對(duì)比

一般性的總結(jié):
7e689d56eb93c13b4fa97e4d66a8bc803493144165354211_.jpg

使用場(chǎng)景側(cè)重:

  • EEPROM:頻繁的擦寫操作,如存儲(chǔ)計(jì)數(shù)器、傳感器數(shù)據(jù)等
  • FLASH:大容量、高速讀寫,如存儲(chǔ)程序代碼和固件等

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    450

    文章

    49630

    瀏覽量

    417104
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

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

    關(guān)注

    38

    文章

    7365

    瀏覽量

    163085
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    168

    瀏覽量

    500
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    存儲(chǔ)器芯片的內(nèi)部結(jié)構(gòu)及其引腳類型

    存儲(chǔ)器芯片是計(jì)算機(jī)和其他電子設(shè)備中用于存儲(chǔ)數(shù)據(jù)的關(guān)鍵組件。它們可以是易失性的,如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),也可以是非易失性的,如閃存(
    的頭像 發(fā)表于 09-18 11:04 ?112次閱讀

    NAND Flash與其他類型存儲(chǔ)器的區(qū)別

    NAND Flash作為一種基于NAND技術(shù)的非易失性存儲(chǔ)器,具有多個(gè)顯著優(yōu)點(diǎn),這些優(yōu)點(diǎn)使其在數(shù)據(jù)存儲(chǔ)領(lǐng)域得到了廣泛應(yīng)用。以下是對(duì)NAND Flash優(yōu)點(diǎn)的詳細(xì)闡述,并簡(jiǎn)要探討與其他類
    的頭像 發(fā)表于 08-20 10:24 ?401次閱讀

    ram存儲(chǔ)器和rom存儲(chǔ)器的區(qū)別是什么

    定義: RAM(Random Access Memory):隨機(jī)存取存儲(chǔ)器,是一種易失性存儲(chǔ)器,主要用于計(jì)算機(jī)和其他設(shè)備的臨時(shí)存儲(chǔ)。 ROM(Read-Only Memory):只讀存儲(chǔ)器
    的頭像 發(fā)表于 08-06 09:17 ?356次閱讀

    昂科燒錄支持MindMotion靈動(dòng)微電子的32位微控制MM32L052NT

    。 MM32L052NT使用高性能的ARM? Cortex?-M0為內(nèi)核的32位微控制,最高工作頻率可達(dá)48MHz,內(nèi)置高速存儲(chǔ)器,豐富的增強(qiáng)型I/O端口和外設(shè)連接到外部總線。MM32L05
    的頭像 發(fā)表于 07-04 14:49 ?357次閱讀
    昂科燒錄<b class='flag-5'>器</b>支持MindMotion靈動(dòng)微電子的32位微控制<b class='flag-5'>器</b>MM32<b class='flag-5'>L052</b>NT

    EEPROM與Flash存儲(chǔ)器的區(qū)別

    可編程只讀存儲(chǔ)器)和Flash存儲(chǔ)器是兩種常見(jiàn)的非易失性存儲(chǔ)器,它們具有各自的特點(diǎn)和應(yīng)用場(chǎng)景。本文將深入分析和比較EEPROM與Flash
    的頭像 發(fā)表于 05-23 16:35 ?3572次閱讀

    STM32L053如何在FLASH程序存儲(chǔ)器模式下將程序燒錄成功?

    用的是STM32L053芯片,自舉模式為FLASH程序存儲(chǔ)器模式,此時(shí)如何燒錄程序?
    發(fā)表于 03-25 06:09

    CW32L052 DMA直接內(nèi)存訪問(wèn)

    CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問(wèn),無(wú)需CPU干預(yù),實(shí)現(xiàn)高速數(shù)據(jù)傳輸。數(shù)據(jù)的傳輸可以發(fā)生在: ? 外設(shè)和內(nèi)存之間 :例如ADC采集數(shù)據(jù)到內(nèi)存,這種
    的頭像 發(fā)表于 02-28 16:48 ?808次閱讀
    <b class='flag-5'>CW32L052</b> DMA直接內(nèi)存訪問(wèn)

    CW32L052單片機(jī)支持DMA實(shí)現(xiàn)高速數(shù)據(jù)傳輸

    CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問(wèn),無(wú)需CPU干預(yù),實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 02-27 11:36 ?871次閱讀

    淺談flash存儲(chǔ)器的特點(diǎn)和優(yōu)缺點(diǎn)

    Flash存儲(chǔ)器的寫操作具有特殊性,它只能將數(shù)據(jù)位從1寫成0,而不能從0寫成1。因此,在對(duì)存儲(chǔ)器進(jìn)行寫入操作之前,必須先執(zhí)行擦除操作,將預(yù)寫入的數(shù)據(jù)位初始化為1。
    的頭像 發(fā)表于 02-19 11:37 ?2183次閱讀
    淺談<b class='flag-5'>flash</b><b class='flag-5'>存儲(chǔ)器</b>的特點(diǎn)和優(yōu)缺點(diǎn)

    stm32 flash寫數(shù)據(jù)怎么存儲(chǔ)

    stm32 flash寫數(shù)據(jù)怎么存儲(chǔ)的? STM32是一款廣泛應(yīng)用于嵌入式系統(tǒng)開發(fā)的微控制,它的Flash存儲(chǔ)器是其中一個(gè)重要的組成部分。
    的頭像 發(fā)表于 01-31 15:46 ?1970次閱讀

    fpga配置flash怎么用來(lái)存儲(chǔ)數(shù)據(jù)

    要求使用其他存儲(chǔ)設(shè)備,如Flash存儲(chǔ)器,來(lái)存儲(chǔ)數(shù)據(jù)。 Flash存儲(chǔ)器是一種非易失性
    的頭像 發(fā)表于 12-15 15:42 ?1785次閱讀

    為什么Nor Flash可以實(shí)現(xiàn)XIP,而Nand flash就不行呢?

    為什么Nor Flash可以實(shí)現(xiàn)XIP,而Nand flash就不行呢? Flash存儲(chǔ)器是一種常用的非易失性存儲(chǔ)器,廣泛應(yīng)用于各種電子設(shè)備
    的頭像 發(fā)表于 10-29 16:32 ?1055次閱讀

    NAND Flash存儲(chǔ)器的基礎(chǔ)知識(shí)

    隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)存儲(chǔ)需求日益增長(zhǎng)。作為一種新型的非易失性存儲(chǔ)器,NAND Flash因其高容量、低功耗、高密度等優(yōu)勢(shì),在各個(gè)領(lǐng)域得到了廣泛應(yīng)用。本文將對(duì)NAND Flash
    發(fā)表于 09-27 18:26 ?3372次閱讀

    NAND Flash和NOR Flash存儲(chǔ)器的區(qū)別

    摘要:本文主要對(duì)兩種常見(jiàn)的非易失性存儲(chǔ)器——NAND Flash和NOR Flash進(jìn)行了詳細(xì)的比較分析。從存儲(chǔ)容量、性能、成本等方面進(jìn)行了深入探討,以幫助讀者更好地理解這兩種
    發(fā)表于 09-27 17:46 ?1250次閱讀

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

    在MCU的使用中,經(jīng)常遇到需要存儲(chǔ)參數(shù)或掉電保持?jǐn)?shù)據(jù)等功能。其中,Flash和EEPROM是常見(jiàn)的非易失性存儲(chǔ)器
    的頭像 發(fā)表于 09-21 09:14 ?1241次閱讀