Msp430_Flash.H
上传用户:zanguozi01
上传日期:2014-02-19
资源大小:155k
文件大小:2k
源码类别:

GPS编程

开发平台:

Others

  1. /********************************************************
  2. 关于MSP430的内部FLASH的说明:
  3. 1,针对所有型号的信息存储器的地址完全相同,从1000H----10FFH
  4. 信息存储器A的开始地址在1080H,结束地址在10FFH
  5. 信息存储器B的开始地址在1000H,结束地址在107FH
  6. 2,这里只讨论针对信息存储器的擦除,编程,和读取
  7. A:擦除:
  8. 1,选择适当的时钟源和分频因子,为时序提供正确的时钟输入
  9. 2,如果Lock=1,则将它复位
  10. 3,监视BUSY标志,只有当BUSY=0才能执行下一步
  11. 4,如果擦除一段,则设置ERASE=1,如果是多段则MERAS=1
  12. 5,对擦除的地址范围内任意位置写一次空写入,用以启动擦除操作
  13. 通过上面总结出,对FLASH擦除,需要做4件事情
  14. 1,对FLASH的控制寄存器写入适当的控制位
  15. 2,监视BUSY位
  16. 3,空写一次
  17. 4,等待
  18. B,编程
  19. 1,选择适当的时钟源以及合适的分频因子
  20. 2,如果Lock=1,将它复位
  21. 3,监视BUSY,直到BUSY=0时才可进入下一步
  22. 4,如果写入单字或者单字节,则将设置WRT=1
  23. 5,如果块写或者多字,多字节顺序写入,则将设置WRT=1,BLKWRT=1
  24. 6,将数据写入选定地址时,启动时序发生器,在时序发生器的控制下,完成整个过程
  25. C,读操作
  26. 比较简单,可使用各种寻址方式,借助指令可轻松完成,而擦除和写入就不一样了,需要按固有
  27. 的操作过程,通过控制FLASH模块的3个控制字的相应位来完成。
  28. FCTL1 控制寄存器1
  29. 0---15
  30. 1:ERASE
  31. 2:MERAS
  32. 6:WRT
  33. 7:BLKWRT
  34. 8--15:安全键值,读时为96H,写时为5AH
  35. FCTL2 控制寄存器2
  36. 0--5: FN0---FN5,分频系数选择位
  37. 6-7: SSEL0-SSEL1,选择时钟源
  38. 8---15:安全键值,096H(读),0A5(写)
  39. FCTL3 控制寄存器3
  40. 0:BUSY 忙标志位
  41. 1:KEYV 安全键值出错标志位
  42. 2:ACCVIGF 非法访问中断标志
  43. 3:WAIT
  44. 4:Lock 锁定位,0,不加锁,可读可写可擦除;1加锁,只能读
  45. 5: EMEX 紧急退出位,在对FLASH操作失控时候的紧急处理0,无作用,1立即停止操作
  46. 8-15:安全键值
  47. 在进行FLASH的操作期间一定要关掉看门狗定时器和所有中断
  48. ********************************************************/
  49. #ifndef __Msp430_Flash_H
  50. #define __Msp430_Flash_H
  51. void Init_OperFlash(void);
  52. void Write_SegAB(unsigned char Address_Flag);
  53. void Read_SegAB(unsigned char Address_Flag);
  54. #endif