📄 msp430_flash.h
字号:
/********************************************************\
关于MSP430的内部FLASH的说明:
1,针对所有型号的信息存储器的地址完全相同,从1000H----10FFH
信息存储器A的开始地址在1080H,结束地址在10FFH
信息存储器B的开始地址在1000H,结束地址在107FH
2,这里只讨论针对信息存储器的擦除,编程,和读取
A:擦除:
1,选择适当的时钟源和分频因子,为时序提供正确的时钟输入
2,如果Lock=1,则将它复位
3,监视BUSY标志,只有当BUSY=0才能执行下一步
4,如果擦除一段,则设置ERASE=1,如果是多段则MERAS=1
5,对擦除的地址范围内任意位置写一次空写入,用以启动擦除操作
通过上面总结出,对FLASH擦除,需要做4件事情
1,对FLASH的控制寄存器写入适当的控制位
2,监视BUSY位
3,空写一次
4,等待
B,编程
1,选择适当的时钟源以及合适的分频因子
2,如果Lock=1,将它复位
3,监视BUSY,直到BUSY=0时才可进入下一步
4,如果写入单字或者单字节,则将设置WRT=1
5,如果块写或者多字,多字节顺序写入,则将设置WRT=1,BLKWRT=1
6,将数据写入选定地址时,启动时序发生器,在时序发生器的控制下,完成整个过程
C,读操作
比较简单,可使用各种寻址方式,借助指令可轻松完成,而擦除和写入就不一样了,需要按固有
的操作过程,通过控制FLASH模块的3个控制字的相应位来完成。
FCTL1 控制寄存器1
0---15
1:ERASE
2:MERAS
6:WRT
7:BLKWRT
8--15:安全键值,读时为96H,写时为5AH
FCTL2 控制寄存器2
0--5: FN0---FN5,分频系数选择位
6-7: SSEL0-SSEL1,选择时钟源
8---15:安全键值,096H(读),0A5(写)
FCTL3 控制寄存器3
0:BUSY 忙标志位
1:KEYV 安全键值出错标志位
2:ACCVIGF 非法访问中断标志
3:WAIT
4:Lock 锁定位,0,不加锁,可读可写可擦除;1加锁,只能读
5: EMEX 紧急退出位,在对FLASH操作失控时候的紧急处理0,无作用,1立即停止操作
8-15:安全键值
在进行FLASH的操作期间一定要关掉看门狗定时器和所有中断
\********************************************************/
#ifndef __Msp430_Flash_H
#define __Msp430_Flash_H
void Init_OperFlash(void);
void Write_SegAB(unsigned char Address_Flag);
void Read_SegAB(unsigned char Address_Flag);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -