欢迎来到天天文库
浏览记录
ID:10410291
大小:62.50 KB
页数:9页
时间:2018-07-06
《1 msp430flash型单片机内部flash存储器介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1Msp430Flash型单片机内部Flash存储器介绍MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。该模块由一个集成控制器来控制编程和擦除的操作。控制器包括三个寄存器,一个时序发生器及一个提供编程、擦除电压的电压发生器。Msp430的Flash存储器的特点有:1)产生内部编程电压2)可位、字节、字编程,可以单个操作,也可以连续多个操作3)超低功耗操作4)支持段擦除和多段模块擦除2Flash存储器的分割Msp430Flash存储器分成多个段。可对其进行单个字节、字的写入,也可以进行连续多个字
2、、字节的写入操作,但是最小的擦除单位是段。Flash存储器被分割成两部分:主存储器和信息存储器,两者在操作上没有什么区别。两部分的区别在于段的大小和物理地址的不同。以Msp430F149为例,信息存储器有两个128字节的段,即segmentA和segmentB,主存储器有多个512字节的段。Msp430F149内部Flash的地址为0x1000H~0xFFFFH,计60K。信息段SegA的起始地址为0x1080H,信息段SegB的起始地址为0x1000H。3Flash存储器的操作在默认状态下,处于读操作模式。在
3、读操作模式中,Flash存储器不能被擦除和写入,时序发生器和电压发生被关闭,存储器操作指向ROM区。Msp430Flash存储器在系统编程ISP(in-systemprogrammable)不需要额外的外部电压。CPU能够对Flash直接编程。Flash存储器的写入/擦除通过BLKWRT、WRT、MERAS、ERASE等位确定。3.1擦除Flash存储器各位的缺省值为1,每一位都可以单独编程为0,但只有擦除操作才能将其恢复为1。擦除操作的最小单位是段。通过erase和meras位设置可选择3种擦除模式。MERA
4、SERASE擦除模式01段擦除10多段擦除(所有主存储器的段)11整体擦除(LOCKA=0时,擦除所有主存储器和信息存储器的段;主存储器的段只有当LOCKA=0时可以擦除)擦除操作开始于对擦除的地址范围内的任意位置执行一次空写入。空写入的目的是启动时序发生器和擦除操作。在空写入操作之后,BUSY位自动置位,并保持到擦除周期结束。BUSY、MERAS、ERASE在擦除周期结束后自动复位。3.2写入写入模式由WRT和BLKWRT位进行设置。BLKWRT(块写入模式选择)WRT(写模式选择位)写入模式01单字节、单字
5、写入11块写入所有的写入模式使用一系列特有的写入命令,采用块写入的速度大约是单个写入的2倍,因为电压发生器在块写入完成器件均能保持。对于这两种写入模式,任何能修改目的操作数的指令均能用于修改地址。一个Flash字不能再擦除器件进行两次以上的写入。当启动写入操作时,BUSY置位,写入结束时复位。4操作编程4.1Flash擦除对Flash要写入数据,必须先擦除相应的段,且对Flash存储器的擦除必须是整段进行的,可以一段一段擦,也可以多段一起擦除。擦除操作的顺序如下:1)选择适当的时钟源和分频因子;2)清除LOCK
6、位3)判断BUSY位,只有当BUSY=0时才可以执行下一步4)使能段操作,设置ERASE、MERAS位等(如果是擦除一段,则ERASE=1,如果擦除多段,则MERAS=1,如果擦除整个Flash,则ERASE=1,MERAS=1)5)对擦除的地址范围内的任意位置作一次空写入,以启动擦除操作6)在擦除周期内,时钟源始终有效,不修改分频因子7)操作完成后,置位LOCK根据上述操作顺序,编写程序代码如下:voidFlashErase(unsignedintadr){uchar*p0;FCTL2=FWKEY+FSSEL
7、_1+FN3+FN4;//选择时钟源,分频FCTL3=FWKEY;//清除LOCKwhile(FCTL3&BUSY);//如果出于忙,则等待FCTL1=FWKEY+ERASE;//使能段操作p0=(unsignedchar*)adr;//数值强制转换成指针*p0=0;//向段内任意地址写0,即空写入,启动擦除操作FCTL1=FWKEY;FCTL3=FWKEY+LOCK;while(FCTL3&BUSY);}4.2写入对Flash的写入数据可以是单字、单字节,也可以是连续多个字或字节(即块操作)。编程写入操作的顺
8、序如下:1)选择适当的时钟源和分频因子;2)清除LOCK位3)判断BUSY位,只有当BUSY=0时才可以执行下一步操作4)使能写入功能,设置WRT、BLKWRT(如果写入单字或单字节则WRT=1,如果是块写入,或者是多字、多字节连续写入则WRT=1,BLKWRT=1);5)判断BUSY位,只有当BUSY=0时才可以执行下一步操作6)写入数据7)判忙,完了之后清除WRT,置位LOCK根据
此文档下载收益归作者所有