微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 写MSP430片内flash

写MSP430片内flash

时间:11-25 来源:互联网 点击:

0x15000+0x200->

OSTCBCur->

三、FLASH寄存器说明// 来自 :ST_M_8.C_N
允许编程、擦除等操作首先要对3个控制寄存器(FCTL1、FCTL2、FCTL3)的各位进行定义。它们使用安全键值(口令码)来防止错误的编程和擦除周期,口令出错将产生非屏蔽中断请求。安全键值位于每个控制字的高字节,读时为96H,写时为5AH。
1.FCTL1 控制寄存器1(用于控制所有写/编程或者删除操作的有效位),各位定义如下:
bit15~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
安全键值,读为96H,写5AH BLKWRT WRT -- -- -- MERAS ERASE --
BLKWRT——段编程位。如果有较多的连续数据要编程到某一段或某几段,则可选择这种方式,这样可缩短编程时间。在一段程序完毕,再编程其它段,需对该位先复位再置位,在下一条写指令执行前WAIT位应为1。
0:未选用段编程方式
1:选用段编程方式
WRT——编程位
0:不编程,如对FLASH写操作,发生非法访问,使ACCVIFG位置位;
1:编程
MERAS——主存控制擦除位
0:不擦除
1:主存全擦除,对主存空写时启动擦除操作,完成后MERAS自动复位
ERASE——擦除一段控制位
0:不擦除
1:擦除一段。由空写指令带入段号来指定擦除哪一段,操作完成后自动复位
2.FCTL2 控制寄存器2(对进入时序发生器的时钟进行定义),各位定义如下:
bit15~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
安全键值,读为96H,写5AH SSEL1 SSEL0 FN5 FN4 FN3 FN2 FN1 FN0
SSEL1、SSEL0——选择时钟源
0:ACLK
1:MCLK
2:SMCLK
3:SMCLK
FN5~FN0——分频系数选择位
0:直通
1:2分频
2:3分频
...... read datasheet
63:64分频
3.FCTL3 控制寄存器3(用于控制FLASH存储器操作,保存相应的状态标志和错误条件),各位定义如下:
bit15~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
安全键值,读为96H,写5AH -- -- EMEX Lock WAIT ACCVIFG KEYV BUSY
EMEX——紧急退出位。对FLASH的操作失败时使用该位作紧急处理
0:无作用
1:立即停止对FLASH的操作
Lock——锁定位,给已经编程好的FLASH存储器加锁
0:不加锁,FLASH存储器可读、可写、可擦除
1:加锁,加锁的FLASH存储器可读、不可写、不可擦除
WAIT——等待指示信号,该位只读。// 来自 :ST_M_8.C_N
0:段编程操作已经开始,编程操作进行中
1:段编程操作有效,当前数据已经正确地写入FLASH存储器,后续编程数据被列入计划
ACCVIFG——非法访问中断标志。当对FLASH阵列进行编程或擦除操作时不能访问FLASH,否则将使得该位置位
0:没有对FLASH存储器的非法访问
1:有对FLASH存储器的非法访问
KEYV——安全键值(口令码)出错标志位
0:对3个控制寄存器的访问,写入时高字节是0A5H
1:对3个控制寄存器的访问,写入时高字节不是0A5H,同时引发PUC信号
KEYV不会自动复位,须用软件复位
BUSY——忙标志位。该位只读。每次编程或擦除之前都应该检查BUSY位。当编程或擦除启动后,时序发生器将自动设置该位为1,操作完成后BUSY位自动复位
0:FLASH存储器不忙
1:FLASH存储器忙

可以在程序中擦写FLASH这样就不用判断Busy的标志,因为只有擦写完成的时候FLASH才有效!程序才能继续走!如果把程序拷到RAM中擦除就要判断BUSY了!
擦写完成后可以不用LOCK,用LOCK只是一个保险作用!防止你对FLASH的非法操作


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top