历史上的今天
返回首页

历史上的今天

今天是:2024年10月12日(星期六)

正在发生

2020年10月12日 | FLASH操作程序设计与存储器结构

2020-10-12 来源:elecfans

1,FLASH操作程序设计

下面我们来学习编程的内容。在学习编程前,我们要先了解一下FLASH存储模块的控制寄存器。


FLASH存储模块的所有操作都通过控制相关的控制寄存器来实现的。包括FCTL1、FCTL2、FCTL3三个控制寄存器,其中FCTL1主要包含对FLASH的编程和擦除操作的控制位;FCTL2主要定义进入时序发生器前的时钟源和分频系数;FCTL3保存FLASH存储模块的一些标志位。


2, FCTL1控制寄存器

FWKEY:FLASH存储模块的安全键值。共8位,对FLASH操作时应该向其中写入对应的安全键值,否则会引起PUC信号以及KEYV信号。0x96:读取时的安全键值;0x5A:写入时的安全键值。


BLKWRT:段编程控制位。当需要对某一个段或者几个段连续编程时,使用段编程方式可以加快编程的速度。1:使用段编程方式;0:不适用段编程方式。


WRT:编程控制位。当需要对FLASH编程时,必须对该位置位,否则会导致ACCVIFG(非法访问中断标志位)置位。1:允许对FLASH编程;0:禁止对FLASH编程。


MERAS:多段擦除控制位,当需要擦除多段时,对改为置位。1:擦除多段;0:不擦除。

ERASE:但段擦除控制位,当需要擦除一个段时,对该位进行置位。1:擦除一个段;0:不擦除。


3,FCTL2控制寄存器

FWKEY:FLASH存储模块的安全键值。共8位,对FLASH操作时应该向其中写入对应的安全键值,否则会引起PUC信号以及KEYV信号。0x96:读取时的安全键值;0x5A:写入时的安全键值。


FSSEL1~0:选择FLASH存储模块的时序发生器的时钟源。3:选择SMCLK;2:选择SMCLK;1:选择CMLK;0:选择ACLK。


FN5-0:为时序发生器的时钟源选择分频系数,最终的分频比为32*FN5+16*FN4+8*FN3+4*FN2+2*FN1+FN0+1.


4, FCTL3控制寄存器

FWKEY为安全键值,和前两个一样,我们不在赘述。

EMEX:紧急退出位。对该位置位能够紧急停止对FLASH的操作。1:紧急停止FLASH操作;0:不操作。

LOCK:FLASH锁定位。如果在该位置位时对FLASH进行擦除和写入操作会导致非法访问,对应的标志位ACCVIFGF置位。1:锁定FLASH存储模块,锁定时可读,但不可擦除和写入;0:不锁定FLASH存储模块,可读可写可擦除。

WAIT:等待标志位,用户通过读取该位的状态已获得FLASH存储器和段编程状态。1:段编程有效;0:段编程操作正在进行。

ACCVIFG:非法访问标志位。1:非法访问;0:没有非法访问。

KEYV:非法安全键值标志位。1:错误安全键值;0:正确的安全键值。

BUSY:FLASH存储模块忙标志位。1:当前FLASH存储模块忙;0:当前FLASH存储模块空闲。


5,单字节写入操作

程序时对单字节写入的操作,向Seg_A中的地址0x1090写入数据0xAA。从这个程序段,我们可以看出向FLASH写入的数据的基本流程,大部分与擦除还是很相似的。需要特别注意的是,在这段程序中我们省略了检测BUSY状态位的环节,并且在实际情况下,只要用户程序不是频繁的、交叉的操作FLASH存储模块,一般是需要检测BUSY位的。


对于多字节的写入操作,其基本操作方式单字节类似,只需要每次修改FLASH地址指针,并写入对应的数据即可。


6,段擦除操作

MSP430系列MCU尽管可以向FLASH存储模块的任意地址写入数据,但是擦除操作只能以段位基本单位操作,即最少只能擦除Seg_A和Seg_B段。从示例的程序中,可以看出段擦除的基本流程:除了启动擦除操作之前的基本设置,擦除之后的基本设置之外,还需特别注意的是:向要擦除的段(程序中位Seg_A)任意一个地址中写入任意数据以启动擦除操作。同样,这是一个简化的程序段,也没有检测BUSY等标志位。


这是一个非常经典的TI的关于FLASH存储模块的程序,在几乎所有的关于MSP430的书籍等资料上都可以看见他的身影。这段程序包含了擦除,段写入、段复制等操作,是一个非常好的例子。


需要特别注意的是:前面的程序仅仅是一个示例,当你在很复杂的程序中操作FLASH前,一定要先禁止所有的中断并禁用看门狗,切记切记。

推荐阅读

史海拾趣

Fine Products Microelectronics Corp公司的发展小趣事

Fine Products Microelectronics Corp公司发展故事(虚构)

故事一:技术创新引领市场

Fine Products Microelectronics Corp(简称FPMC)自创立之初便致力于半导体技术的创新。在上世纪90年代,当半导体行业还普遍使用传统光刻技术时,FPMC的研发团队率先提出了步进式光刻机(Wafer Stepper)的概念。这一创新极大地提高了芯片制造的精度和效率,使得芯片特征尺寸得以大幅缩小。尽管初期面临技术难度大、市场接受度低等挑战,但FPMC凭借坚持不懈的努力,最终成功研发出并量产了步进式光刻机,迅速在半导体制造领域占据了领先地位。

故事二:与巨头的合作与竞争

在FPMC的成长过程中,与行业内巨头的合作与竞争是不可或缺的一部分。特别是在21世纪初,FPMC与IBM、TI等知名企业建立了合作关系,共同推进半导体技术的研发和应用。然而,这种合作并非一帆风顺,FPMC在某些关键技术上坚持自主研发,与IBM的电子束光刻(e-beam)技术产生了竞争。尽管这种竞争给FPMC带来了一定的压力,但也促使公司不断加大研发投入,提升技术实力,最终形成了自己独特的竞争优势。

故事三:石墨烯电极技术的突破

近年来,随着二维材料研究的兴起,FPMC紧跟科技前沿,成功研发出了石墨烯辅助金属电极转印技术。这一技术利用石墨烯与金属间较弱的范德华作用力,实现了金属电极阵列在二维沟道材料上的无损转移。该技术不仅提高了电极的制备精度和效率,还降低了制造成本,为二维芯片的应用开辟了新的路径。FPMC的这一创新成果迅速获得了业界的关注和认可,进一步巩固了公司在半导体材料领域的领先地位。

故事四:物联网时代的布局

随着物联网技术的快速发展,FPMC敏锐地捕捉到了这一市场机遇。公司及时调整战略方向,加大了对物联网相关产品的研发力度。通过与多家物联网企业和研究机构的合作,FPMC成功推出了一系列高性能、低功耗的物联网芯片和解决方案。这些产品广泛应用于智能家居、智慧城市、工业控制等领域,为物联网的普及和发展提供了强有力的支持。

故事五:绿色可持续发展

在追求技术创新和市场拓展的同时,FPMC始终不忘企业的社会责任。公司积极响应全球绿色可持续发展的号召,致力于研发环保型半导体产品和制造工艺。通过采用先进的节能减排技术和循环利用材料等手段,FPMC不仅降低了自身的生产成本和能耗水平,还为推动半导体行业的绿色可持续发展做出了积极贡献。此外,公司还积极参与社会公益活动,为构建和谐社会贡献自己的一份力量。

EXCELSEMI [ EXCEL SEMICONDUCTOR INC. ]公司的发展小趣事

随着公司产品的不断成熟和市场认可度的提高,EXCELSEMI开始积极拓展市场。公司通过参加国际展会、举办技术研讨会等方式提高品牌知名度,并积极寻求与全球知名企业的战略合作。这些合作不仅为公司带来了更多的业务机会,还进一步提升了公司的技术实力和品牌影响力。

Components Corporation公司的发展小趣事

EXCELSEMI公司始终将品质和客户满意度放在首位。公司建立了一套完善的质量管理体系和客户服务体系,确保每一款产品都符合高标准的质量要求。同时,公司还注重与客户的沟通和反馈,不断优化产品和服务以满足客户的需求。这种品质至上、客户为本的经营理念使得EXCELSEMI在市场中赢得了良好的口碑和信任。

Electro-Term/Hollingsworth公司的发展小趣事

在快速发展的过程中,Electro-Term公司始终重视人才培养和团队建设。公司建立了完善的人才选拔和培训体系,为员工提供广阔的发展空间和良好的福利待遇。同时,公司还鼓励员工积极参与创新实践和技术交流,营造了浓厚的学术氛围和团队合作精神。这些举措为公司的发展提供了有力的人才保障。

Echelon_Corporation公司的发展小趣事

Echelon Corporation于1988年在美国加州成立,其初衷是开发和推广先进的通信和控制技术。在成立初期,Echelon便推出了其标志性的LonWorks控制网络平台。该平台采用了开放的通信协议,使得不同厂商的设备可以无缝连接和通信,为工业自动化、建筑自动化等领域带来了革命性的变化。LonWorks平台的成功推出,为Echelon在电子行业奠定了坚实的基础。

Dantona Industries公司的发展小趣事

作为一家有社会责任感的企业,Dantona Industries始终关注环境保护和社会公益。他们积极推广绿色生产理念,采用环保材料和生产工艺,减少对环境的影响。同时,公司还积极参与社会公益活动,为贫困地区的教育、医疗等事业提供援助。这些举措不仅展现了公司的社会担当精神,也为公司赢得了良好的社会声誉和品牌形象。

问答坊 | AI 解惑

电子大赛论文写作格式

本帖最后由 paulhyde 于 2014-9-15 09:16 编辑 大赛临近,希望对大家有所帮助  …

查看全部问答>

DO-254中的高设计可靠性的逻辑综合(十)--使用Precision综合可以不用担心设计可靠性

在一些应用中,例如DO-254的A级和B级,对于设计可靠性的要求是非常重要的,而面积和性能的要求相应的优先级比较低。对这样的工程来说,通常会建议采用一个全局的选项,能够关闭一些优化后难以验证的功能。 这个全局选项要有两个功能,一个是能够自 ...…

查看全部问答>

奇怪:Design Templates设为Small footprint device时模拟器跑不起来,而设为PDA时可以?

   昨天,我将Design Templates设为PDA时模拟器跑起来了.    附: 在Builder options中,去掉Enable KITL;      在Target-〉Connectivity options->Debugger选none.    而今天自己想再试一 ...…

查看全部问答>

UcosII的外中断问题

两个任务: task1:优先级5    LED灯闪烁 task2:优先级6    测试外中断 当我按下外中断以后,UcosII就老跑空闲任务 为什么?可能是那的错??…

查看全部问答>

怎样让cE 6.0响应VB net的textbox输入

我用VB.net开发一个小程序 有一个teXtboX的输入框 我想让程序在cE6下一点该输入框就跳出输入键盘 该怎么做呢 谢谢…

查看全部问答>

如何改变设备电源状态

我想在WinCE下通过DeviceIOControl来改变LCD背光电源的状态以实现背光灯的亮灭控制。 bResult = DeviceIoControl(hDevice,  // device to be queried                    ...…

查看全部问答>

什么是单片机?

常常听到别人说单片机,到底什么是单片机,还有C和单片机有什么关系呀?…

查看全部问答>

想和單片機高手一起討論下這個簡單串口中斷程序的問題所在!!!

我編寫了一個串口中斷匯編程序,不復雜,調試也沒有出現問題,但是就是工作不了,我想和大家討論下究竟是什么錯誤導致它運\行出錯~請大家幫忙... T2CON EQU 0C8H T2MOD EQU 0C9H TR2 BIT T2CON.2 RCAP2L EQU 0CAH RCAP2H EQU 0CBH TH2 EQU 0C ...…

查看全部问答>

[IAR4.42A]stm32上电默认初始化会清空内存么?

                                  …

查看全部问答>

如何用汇编和C语言混合编程实现约瑟夫环问题

#include <stdio.h>#define N 9int a[N];int k;int function(int m){ int j=1; while(j<m) {  while(a[k]==0)   k=(k+1)%N;  j++;  k=(k+1)%N; } while(a[k]==0)&nbs ...…

查看全部问答>