Msp430_Flash.H
资源名称:GPRS.rar [点击查看]
上传用户:zanguozi01
上传日期:2014-02-19
资源大小:155k
文件大小:2k
源码类别:
GPS编程
开发平台:
Others
- /********************************************************
- 关于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