91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CW32L052 FLASH存儲(chǔ)器

CW32生態(tài)社區(qū) ? 來源: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供用戶使用,可用來存儲(chǔ)應(yīng)用程序和用戶數(shù)據(jù)

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

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

FLASH存儲(chǔ)器組織

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

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

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

  • 擦寫保護(hù)

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

  • 讀保護(hù)

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

FLASH存儲(chǔ)器操作

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

頁擦除

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

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

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

寫操作

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

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

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

讀操作

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

核心代碼

//單片機(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頁擦除函數(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();          //頁擦除操作
 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)    //頁擦除
{
 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ǔ)器對比

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

使用場景側(cè)重:

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

審核編輯 黃宇

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

    關(guān)注

    463

    文章

    54004

    瀏覽量

    465795
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1747

    瀏覽量

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

    關(guān)注

    39

    文章

    7737

    瀏覽量

    171636
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    CW32L052的抗干擾能力如何?有沒有認(rèn)證報(bào)告?

    CW32L052的抗干擾能力如何?有沒有認(rèn)證報(bào)告?
    發(fā)表于 01-14 08:28

    CW32L052與STM32L053系列相比較,有什么優(yōu)勢么?

    CW32L052與STM32L053系列相比較,有什么優(yōu)勢么?
    發(fā)表于 01-13 06:27

    CW32F030 FLASH 存儲(chǔ)器的注意事項(xiàng)

    地址的 FLASH 存儲(chǔ)器進(jìn)行擦寫操作,以保證數(shù)據(jù)的可靠存儲(chǔ)。具體壽命數(shù)據(jù)請參閱數(shù)據(jù)手冊。 ?數(shù)據(jù)存儲(chǔ)模式CW32F030 應(yīng)用規(guī)定,數(shù)據(jù)
    發(fā)表于 01-12 06:26

    CW32L052的低功耗模式

    CW32L052工作溫度為-40℃~85℃,寬工作電壓1.65V~5.5V,支持Sleep和DeepSleep兩種低功耗工作模式,在DeepSleep模式下工作電流僅為500nA,從這一模式下喚醒
    發(fā)表于 01-07 07:45

    CW32F030片上FLASH閃存存儲(chǔ)器物理區(qū)域的劃分

    片上 FLASH 閃存由兩部分物理區(qū)域組成:主 FLASH 存儲(chǔ)器和啟動(dòng)程序存儲(chǔ)器。 1、主 FLASH
    發(fā)表于 12-23 08:28

    請問如何利用CW32L083系列微控制的內(nèi)部Flash存儲(chǔ)器進(jìn)行程序升級和數(shù)據(jù)存儲(chǔ)?

    如何利用CW32L083系列微控制的內(nèi)部Flash存儲(chǔ)器進(jìn)行程序升級和數(shù)據(jù)存儲(chǔ)?
    發(fā)表于 12-15 07:39

    請問CW32L052是基于什么內(nèi)核的芯片?

    CW32L052是基于什么內(nèi)核的芯片?
    發(fā)表于 12-15 06:02

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

    CW32L052 DMA直接內(nèi)存訪問概述CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問,無需CPU干預(yù),實(shí)現(xiàn)高速數(shù)據(jù)傳輸。數(shù)據(jù)的傳輸可以發(fā)生在: 外設(shè)和內(nèi)存
    發(fā)表于 12-12 07:21

    CW32F030的FLASH存儲(chǔ)器支持擦寫PC頁的保護(hù)功能

    CW32F030 的 FLASH 存儲(chǔ)器支持擦寫 PC 頁保護(hù)功能。 當(dāng)用戶程序運(yùn)行 FLASH 時(shí),如果當(dāng)前程序指針 PC 正好位于待擦寫的 FL
    發(fā)表于 12-11 07:38

    CW32L052 FLASH存儲(chǔ)器介紹

    概述CW32L052內(nèi)部集成了64KB嵌入式FLASH供用戶使用,可用來存儲(chǔ)應(yīng)用程序和用戶數(shù)據(jù)。 芯片支持對 FLASH 存儲(chǔ)器的讀、擦除和
    發(fā)表于 12-05 08:22

    請問CW32的22 字節(jié) OTP 存儲(chǔ)器一般都怎么使用?

    CW32的22 字節(jié) OTP 存儲(chǔ)器一般都怎么使用?
    發(fā)表于 12-02 06:39

    CW32L010的2種啟動(dòng)模式介紹

    CW32L010 支持以下 2 種啟動(dòng)模式: ●從主 FLASH 存儲(chǔ)器啟動(dòng),運(yùn)行用戶程序。 ●從啟動(dòng)程序存儲(chǔ)器啟動(dòng),運(yùn)行內(nèi)部 BootLoader。 當(dāng)運(yùn)行 Bootloader
    發(fā)表于 11-28 08:09

    CW32L052在串口數(shù)據(jù)傳輸中丟包怎么解決?

    CW32L052在串口數(shù)據(jù)傳輸中丟包
    發(fā)表于 11-24 07:35

    CW32L052串口的緩沖區(qū)機(jī)制

    默認(rèn)緩沖區(qū)配置 CW32L052的UART模塊支持硬件FIFO(通常為16字節(jié)),但HAL庫或用戶代碼需手動(dòng)管理接收緩沖區(qū)。若未顯式分配足夠大的軟件緩沖區(qū),可能導(dǎo)致數(shù)據(jù)溢出。 HAL庫緩沖區(qū)管理
    發(fā)表于 11-24 06:40

    CW32L010的內(nèi)部框圖

    CW32L010系列產(chǎn)品是基于 eFlash 的單芯片低功耗微控制,集成了主頻高達(dá) 48MHz 的 ARM? Cortex?-M0+ 內(nèi)核、高速嵌入式存儲(chǔ)器(多至 64K 字節(jié) FLASH
    發(fā)表于 11-21 06:40