当前位置:首页 > 单片机 > 单片机
[导读] 关于MSP430-Flash超过64K的读写操作方法#include "msp430xG46x.h" void WriteFlashErrorNum(void); //---------------------------------------------------------------------- //功能:从flash中读出

关于MSP430-Flash超过64K的读写操作方法


#include "msp430xG46x.h"

void WriteFlashErrorNum(void);

//----------------------------------------------------------------------

//功能:从flash中读出数据,只需给出首地址和取出数据的数量

//输入:waddr为flash的地址,length为数据长度

//输出:无

//----------------------------------------------------------------------

void ReadFlash(unsigned long int waddr,unsigned int length)

{

unsigned char i=0;

if(FlashMangleFlag==0)

{

while(FCTL3 & BUSY);

if(length>64) length=64;

while(length--)

{

Internal_flashdata[i++]=__data20_read_char(waddr++);

}

}

}

//----------------------------------------------------------------------

//功能:段擦除;

//日期:2006.12.13

//输入:waddr为flash的地址,

//输出:无

//----------------------------------------------------------------------

//void EraseFlashOneBlock(unsigned long int waddr)

void EraseFlash(unsigned long int waddr)

{

if(FlashMangleFlag==0)

{

if((waddr>=0x1f400) && (waddr<0x20000))

{

while(FCTL3 & BUSY);

_DINT();

FCTL2 = FWKEY + FSSEL1 + FN4;

FCTL3 = FWKEY; // Clear Lock bit

FCTL1 = FWKEY + ERASE; // Set Erase bit

__data20_write_char(waddr,0); // Dummy write to erase Flash segment

while(FCTL3 & BUSY);

FCTL3 = FWKEY + LOCK; // Reset LOCK bit

_EINT();

}

}

}

//----------------------------------------------------------------------

//功能:将数据写入flash;

//日期:2006.12.13

//输入:waddr为flash的地址,length为数据长度,*buf为指向数据的指针

//输出:无

//----------------------------------------------------------------------

unsigned char WriteFlash(unsigned long int waddr,unsigned char *buf,unsigned int length)

{

unsigned int i;

unsigned char temp,ErrorFlag = 0;

if(FlashMangleFlag==0)

{

if((waddr>=0x1f400) && (waddr<0x20000))

{

while(FCTL3 & BUSY);

_DINT();

FCTL2 = FWKEY + FSSEL1 + FN4;

FCTL3 = FWKEY; // Clear Lock bit

FCTL1 = FWKEY + WRT; // Set WRT bit for write operation

for(i=0;i

{

__data20_write_char(waddr,*buf); // Write value to flash

temp = __data20_read_char(waddr); // Read one byte

if(temp!=(*buf)) // 判断读出的数据和写入的数据是否相当

{

ErrorFlag = 1; //写入flash操作错误标志

ErrorFlashNum ++ ;

}

waddr++;buf++;

}

while(FCTL3 & BUSY);

FCTL1 = FWKEY;

FCTL3 = FWKEY + LOCK; // Reset LOCK bit

_EINT();

if(ErrorFlag == 1) WriteFlashErrorNum();

}

}

return ErrorFlag;

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

西班牙塞维利亚,2024年3月12日 — Teledyne Technologies旗下公司、全球成像解决方案创新者Teledyne e2v宣布扩展其Flash™ CMOS图像传感器系列,推出Flash 2K LSA,该...

关键字: 图像传感器 Flash 摄像机

在这篇文章中,小编将为大家带来JTAG接口与Flash的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: JTAG Flash

近日,第11届EEVIA年度中国硬科技媒体论坛暨产业链研创趋势展望研讨会在深圳召开,兆易创新Flash事业部产品市场经理张静在会上发布了主题为“持续开拓,兆易新一代存储产品助力行业创新”的演讲。

关键字: 兆易创新 Flash 闪存

随着信息技术的快速发展,存储器的需求日益增长。Flash存储器作为一种非易失性存储器,具有重要的应用价值和广泛的应用领域。本文将详细介绍Flash存储器的基本原理、工作方式和作用,帮助读者更好地了解这一重要的存储器技术。

关键字: Flash 汽车 电子设备

随着信息时代的到来,数据存储成为了一项基本需求。Flash存储器成为了一种常见的存储设备,用于存储各种类型的数据,如文档、图片、视频等。本文将详细介绍如何使用Flash存储器以及如何写入数据,帮助读者了解Flash存储器...

关键字: Flash 存储器 数据

随着科技的不断发展,Flash存储器已经成为存储设备中最常用的一种类型。它具有非易失性、高密度、低功耗和快速读写等特点,广泛应用于各种领域,如移动设备、嵌入式系统和存储芯片等。本文将介绍Flash存储器的编程设计以及一些...

关键字: 存储器 Flash 嵌入式

(全球TMT2023年7月28日讯)2023年7月28日,江波龙上海总部项目封顶仪式在中国(上海)自由贸易试验区临港新片区举行。江波龙上海总部位于临港新片区滴水湖科创总部湾核心区,项目于2021年启动建设,占地面积约1...

关键字: 存储芯片 数据中心 芯片设计 Flash

昨天下午,中国市场监管总局附加限制性条件批准了美国半导体公司迈凌(MaxLinear)对全球最大 NAND Flash 控制芯片供应商慧荣科技(SMI)的收购。

关键字: 迈凌 慧荣 芯片 NAND Flash

Flash存储器,也称为闪存存储器,是一种非易失性存储器(Non-Volatile Memory,NVM),用于在设备断电后仍然能够保持存储的数据。它的名称来源于一种称为“闪存技术”的特殊电子存储技术。Flash存储器的...

关键字: Flash 存储器 电荷贮存器

据业内信息统计数据,2023 年第一季度 NAND-Flash 存储市场的营收或将持续下滑,除了传统的淡季影响之外,还和过去两年的市场影响以及双边制裁等因素有关。据悉,NAND-Flash 存储市场去年不断下跌,最后一个...

关键字: NAND Flash 闪存 三星 美光 SK 海力士 铠侠
关闭
关闭