历史上的今天
返回首页

历史上的今天

今天是:2025年05月08日(星期四)

正在发生

2021年05月08日 | MSP430单片机的FLASH与存储器结构(2)

2021-05-08 来源:eefocus

1,FLASH存储器


1.1 FLASH存储器


MSP430的FLASH型芯片由于采用FLASH存储器作为程序代码及信息的存储,因此可以实现多次擦除和写入,也可以实现在线写入。FLASH存储器的写入可以经过MSP430系列芯片的JTAG接口来完成,也可以由芯片内的驻留软件实现FLASH的写入操作,只是要求运行的程序代码存储区和待编程的存储区不在同一模块中。因此,甚至可以实现用FLASH存储器中的程序来对FLASH存储器进行编程。


2.2 FLASH存储器构成


MSP430是可以按照位、字节和字进行寻址,它的可编程FLASH存储器主要是由一个集成的控制器和FLASH存储单元来组成的,控制器由3个寄存器:一个定时器,一个定时发生器和一个电压产生器来构成的。这个电压产生器主要用来对提供FLASH编程电压和擦除电压,我们知道其实FLASH是一种特殊的存储介质,对他进行操作时所需要的电压实际上高于这个器件平常的工作电压的,这也就是为什么有些单片机是不支持ISP的,比如像最古老的AT89C51,它内部也是FLASH结构,但是你要是想对它进行编程的话,就必须用专用的编程器才可以。有了内部的电压发生器以后呢,就可以保证这个单片机在正常的工作电压下工作,比如说给一个3.3V的供电电压时,就可以对它内部的FLASH进行编程,或者说就可以让它自己对自己的FLASH进行编程,这个在后面介绍。


2.3计算分支跳转和子程序调用


MSP430的FLASH的主要特征:


※内部的编程电压发生器;


※可以进行位、字节和字寻址;


※超低功耗的操作;


※可以进行段的擦除和整体擦除。


有一点需要注意的就是:在对MSP430内部的FLASH进行操作的时候,供电电压不能小于2.7V。因为内部的电压发生器是有一个最小的供电电压的,如果小于这个电压,电压产生器就不能产生它对FLASH操作需要的足够电压了。


2.4FLASH的内部框图



这就是MSP430的FLASH的内部框图,大家可以看一下,这是FLASH存储的阵列,然后呢,这就是FCTL1,控制寄存器1,下面依次是控制寄存器2,控制寄存器3。这3个寄存器呢,对它的设定就可以完成对FLASH操作的一些基本的设定。这是定时发生器,它主要用来产生对FLASH操作的时钟。还有就是编程电压产生器。这是它内部的一个基本结构。


2.5FLASH内部的分段


我们来看一下FLASH内部的分段。我们知道FLASH是一个比较特殊的存储介质。它在写入的时候用户可以按照位写入、字节写入或者字写入。但是呢,如果想要擦除的话,那么就必须要擦除一个整段。就是它内部的这个段,是一个擦除时的最小单位。这就和传统的EEPROM不一样了,我们都知道EEPROM是电可擦除的存储介质,它内部也可以按照位、字节和字写入,但是擦除的时候也可以按照位、字节和字擦除。但是FLASH不同,FLASH特殊的结构要求必须按照段segment擦除,这是一个它的特例。


2.6FLASH存储区分段图



MSP430的FLASH内部通常情况是分成两部分的,一部分是主存储区,也就是main memory。一部分叫做信息存储区,也就是information memory。其实他们的作用是完全一样的,不同的就是在于每个存储区的分段的大小。


这个图是一个大概4KB的存储区的示意图。可以看到,在这个主存储区里面,它每一个分段是按照512个字节为一段进行分段的;而在这个信息存储区里面是按照128个字节为一段进行操作的,就是说你在擦出的时候信息端擦一次是128个字节,而在主存储区擦一段是512字节,这就是他们最主要的不同点。其余的在操作上,信息端和主存储端是没有差别的。


2.7对FLASH存储器的操作


FLASH存储区支持以下的一些操作:


※字或字节的写入;也就是说一次写入一个字节或一个字。


※块状的写入;也就是说一次连续的写入多个数据。


※段的擦除;


※主存储区的使用段的擦除;


※所有段的擦除。


2.8FLASH的定时发生器



MSP430内部的FLASH的定时发生器,它用来产生对FLASH编程的时钟,这个时钟有一个特殊的要求就是,它必须在大概257KHz到4763KHz之间,这是一个编程时钟频率的一个范围。


定时发生器的时钟源可以由三种时钟源的任何一种。然后会经过一个分频器,然后就产生了f(FTG)这个对FLASH编程的时钟。这是一个基本的时钟编程器。


2.9擦除模式



在擦除的时候,有三种模式擦除模式:


第一种是段擦除,就是擦除一个段的内容。


第二种是大量的段擦除,就是擦除所有主存储区的段的内容。


第三种是擦除所有的段,就是擦除所有段的内容。


这个模式是由MERAS和ERASE两个控制位控制的。


2.10 擦除时序图





我们现在看到的就是FLASH的擦除时序图。




BUSY是一个标志位。实际操作过程是这样的,用户首先要经过一个假的写入,用一个指针指向需要擦除的段的首地址,然后向段里面写入一个数据。这样的话就可以启动擦除的过程。




这是一个擦除的时序,一旦启动擦除后,BUSY就是一个标志位,指示现在对FLASH进行操作,然后BUSY就会变高,经过一段时间,产生这个编程电压,然后开始进行擦除操作,最后需要一段时间来除掉这个编程电压,然后BUSY就变低了。


2.11启动擦除



这就是一个擦除的流程图。首先在擦除之前需要关闭所有的中断和看门狗,因为在进行擦除FLASH的会后,CPU是进去休眠状态的,这时候如果有中段发生的话,CPU也不会响应,如果有看门狗复位的话,将导致整个系统复位,这样擦除的时候将会导致错误,会有不可预知的结果。


关闭中断和看门狗之后,就是设置FLASH控制器和启动擦除模式,然后通过一个伪的写入,就会启动擦除模式,擦除完成之后就会继续执行下一条指令。


2.12写入时钟



对FLASH的写入有两种模式,一种是字节或字的写入,一种是块写入。


在写入时,还是这么一个时序图,大家可以看一下。首先是产生一个编程电压,然后就行编程操作,最后移除这个编程电压。然后这个BUSY位变0。在整个编程过程中,BUSY位一直保持为1,表示当前正在对FLASH进行操作。


2.13启动写入过程


写入过程同样是有两种流程,一种是从FLASH中,流程图是这个。而另一种是代码从RAM中写入,流程图是这个。区别就是当代码从FLASH中写入时,CPU会被挂起进入休眠模式。


2.14块写入操作


块写入可以有效的加快编程速度,但是它也有一些问题。就是说在进行块写入的时候,会有一段累计编程时间,写入块的时间是不能超过这个累计编程时间的,通常这个累计编程实践位4ms。可以一次写入多个字节,但是时间不能超过累计编程时间。是因为编程电压不能长时间加在存储介质上的,否则容易损坏,所以需要用户计算好进行块写入时的时间。时间不能超过4ms。这个问题需要注意。还有就是块写入的代码必须要从RAM中执行。


块写入流程图:


首先关闭中断和看门狗,检查BUSY位,设置控制寄存器,然后写入。


推荐阅读

史海拾趣

Anvo-Systems公司的发展小趣事

Anvo-Systems深知人才是企业发展的核心动力。因此,公司一直注重与高校和研究机构的合作,共同开展电子技术的研发与创新。通过与高校合作开展科研项目、设立奖学金等方式,Anvo-Systems吸引了大批优秀的人才加入公司。同时,公司还建立了完善的培训体系,为员工的职业发展提供了有力支持。这些举措不仅提升了公司的研发实力,也为公司的未来发展储备了丰富的人才资源。

CEVA, Inc公司的发展小趣事

随着万物互联时代的到来,CEVA公司迎来了新的发展机遇。Wi-Fi 6、Wi-Fi 7、5G-Advanced和蜂窝式物联网等技术的快速发展,推动了客户对新建置芯片和解决方案的需求。CEVA凭借其在无线连接和智能传感技术领域的领先地位,能够为客户提供全面的解决方案,满足这些技术在多个终端市场带来的巨大商机。同时,CEVA也是唯一能够提供蓝牙加上Wi-Fi或UWB加上蓝牙等组合解决方案的授权许可商,这一优势使得CEVA在全球半导体产业中占据了重要地位。

以上是基于公开资料对CEVA, Inc.在电子行业中的几个重要发展节点的概述。这些故事展示了CEVA如何在技术创新、市场布局和应对挑战等方面取得了显著成就,为公司的持续发展奠定了坚实基础。然而,由于电子行业的快速发展和不断变化的市场环境,CEVA的未来仍充满挑战和机遇。

Daco Semiconductor Co Ltd公司的发展小趣事

Daco深知人才是企业发展的核心动力。因此,公司一直注重人才培养和团队建设。Daco为员工提供了良好的工作环境和发展机会,鼓励员工不断学习和创新。同时,公司也建立了完善的激励机制和福利制度,确保员工能够全身心地投入到工作中。这种注重人才培养和团队建设的做法,使得Daco能够吸引和留住一批优秀的员工,为公司的持续发展提供了有力的保障。

成都成电硅海公司的发展小趣事

成都成电硅海公司自2009年成立以来,就以其独特的技术创新能力在电子行业中崭露头角。公司创始人李德全深谙半导体行业的技术趋势,带领团队攻克了一个又一个技术难题。在成立初期,公司就成功研发出一款高性能的硅基材料,这一创新不仅打破了国外企业的技术垄断,还为公司赢得了市场的初步认可。

Bestar Electric公司的发展小趣事

在电子行业的早期,Bestar Electric公司应运而生。作为一家初创企业,公司凭借对技术的深刻理解和市场需求的敏锐洞察,专注于电子元器件的研发与生产。通过不断的技术创新和产品优化,Bestar Electric逐渐在行业内建立起良好的声誉,并获得了初步的市场份额。

Chipcera Technology Co Ltd公司的发展小趣事

在电子行业的激烈竞争中,Chipcera Technology Co Ltd始终坚持以技术为核心的发展策略。某年,公司研发团队成功研发出一款具有更高耐压、更低损耗的陶瓷电容器。这款产品不仅满足了市场对高性能电容器的迫切需求,还为公司赢得了大量订单。随着该产品的广泛应用,Chipcera在行业内的影响力逐渐提升,为后续的发展奠定了坚实基础。

问答坊 | AI 解惑

单片机音乐门铃

老师给的毕业设计的题目  感觉很吃力  学的不是很好   不知道该怎么下手    希望有高手指点一下…

查看全部问答>

求数控直流稳压电源设计方案!!!

本帖最后由 paulhyde 于 2014-9-15 04:11 编辑 求数控直流稳压电源设计方案!!! 一、设计任务设计出有一定输出电压范围和功能的数控电源。 二、设计要求1.基本要求(1)输出电压:范围0~+9.9V,步进0.1V,纹波不大于10mV;(2)输出电流:5 ...…

查看全部问答>

单片机资料

[local]3[/local][local]2[/local]…

查看全部问答>

刚入门,使用MAX232遇到的问题,希望高手能解答

刚开始设计单片机, 用MAX232做串联通讯,想问问有没有什么简易方法测试MAX232 IC的好坏. 只用万用表和5V开关电源 我现在的电路板只是基本连接(只用输入pin13, 输出pin14和GND),加了该加的电容,P7-P14八个输出输入脚没外接任何东西 通电后, ...…

查看全部问答>

串联式开关电源

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑  …

查看全部问答>

如何把自己的文件打包进NK.bin

我以前做过wince4.2,将自己的应该程序、动态库等文件加进NK.bin,是在user feature中添加文件进去的,但user feature 怎么来的,找不到啊。…

查看全部问答>

Wince4.2的编译报错

小弟用Wince4.2+s3c2410,在原来机子上编译都正确的smdk2410和工程拷贝到新的机子上以后编译就报如下错误: Compiling - c:\\wince420\\platform\\smdk2410\\eboot\\.\\main.c for ARM c:\\wince420\\platform\\smdk2410\\eboot\\main.c(57) : er ...…

查看全部问答>

频率综合器(Frequency Synthesizer)

有做过3G-4G低相噪数字锁相环式频率综合器(Low-Noise NPLL Frequency Synthesizer)吗?要求输出杂散小,连续可调,请前辈提供一个方案。…

查看全部问答>

利尔达的LSD-S2E21串口转以太网板光盘上的源程序有问题吗?

今天把利尔达LSD-S2E21-01_V1.0串口转以太网板在线升级,结果不能连接以太网了。用光盘上的boot_eth程序和ser2enet程序重新编译正确后,两个起始地址一个0x00,一个0x1000,用LM Flash下载后根本不能运行连接以太网。查看网站上网友也出现相同问题 ...…

查看全部问答>