第5章msp430单片机片内外设及其应用5flash.pptVIP

第5章msp430单片机片内外设及其应用5flash.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章msp430单片机片内外设及其应用5flash

1.擦除操作 FLASH存储器各位缺省值为1,要对FLASH写入数据,必须先擦除相应的段,对FLASH存储器的擦除必须是整段地进行,可以一段一段地擦除,也可以多段一起擦除,但不能单个字节或字地擦除。擦除之后各位为1.写入和读出是按字或字节进行操作的。同时在FLASH存储器擦除与写入时不能对其进行访问。 * 擦除操作的顺序如下: ① 选择适当的时钟源和分频因子,为时序发生器提供正确时钟输入。 ② 如果Lock=1,则将它复位。 ③ 监视BUSY标志位,当BUSY=0时执行④,否则一直监视BUSY。 ④ 如果擦除一段,则设置ERASE=1,如果擦除多段,则设置MERAS=1,如果整个FLASH全擦除,则设置RASE=1同时MERAS=1。 ⑤ 对擦除的地址范围内任意位置做一次空写入,用以启动擦除操作。如果空写的地址在在不能执行擦除操作的段地址范围内,则写入操作不起作用。 * 擦除操作只有在满足下列条件时才能正确完成: ① 在擦除周期,选择的时钟源时钟有效。 ② 在擦除周期,不修改分频因子,如果时钟源改变或分频因子改变,容易引起FLASH擦除时序的失控。 ③ 在BUSY=1期间不再访问所操作的段,包括读取,写入和再一次的擦除。如果发生这些操作,会使KEYV置位,并产生NMI中断。 ④ 电源电压应符合芯片的相应要求,只允许有较小的容差。电压的跌落容易使电压超出正常的范围,而不能完成操作。 * 在实际使用中,对FLASH的擦除要做4件事: ① 对FLASH控制寄存器写入适当的控制位。 ② 监视BUSY位 ③ 空写一次 ④ 等待 * 擦除周期如图所示: * 2.FLASH编程操作 FLASH存储器主要用于保存用户程序或重要的数据、信息等一些掉电后不丢失的数据,只有通过对FLASH的编程操作,才能将这些数据写入FLASH存储器。有两种方式可以对FLASH编程:单个字或字节写入,多个字或字节顺序写入或块写入。 * 对FLASH编程按如下顺序进行: ① 选择适当的时钟源及合适的分频因子。 ② 如果Lock=1,将它复位。 ③ 监视BUSY位,直到BUSY=0时才可进入下一步。 ④ 如果写入单字或单字节,则将设置WRT=1。 ⑤ 将数据写入选定地址时启动时序发生器,在时序发生器的控制下完成整个过程。 * 块写入可用于在FLASH段中的一个连续存储区域写入一系列数据。一个块为64Bytes,如图所示。块开始在0XX00h、0XX40h、0XX80h、0XXC0h等地址,块结束在0XX3Fh、0XX7Fh、0XXBFh、0XXFFh等地址。可以写入连续数据的存储器块为:0XX00h~0XX3Fh、0XX40h~0XX7Fh、0XX80h~0XXBFh、0XXC0h~0XXFFh。块写操作在64字节的分界处需要特殊的软件支持: * ① 等待WAIT位,指导WAIT=1,表明最后一个字或字节写操作结束。 ② 将控制位BLKWRT复位。 ③ 保持BUSY位为1,直到编程电压撤离FLASH模块 ④ 在新块被编程之前,等待trcv(编程电压恢复时间)。 * 在写周期中,必须保证满足以下条件: ① 被选择的时钟源在写过程中保持有效。 ② 分频因子不发生改变。 ③ 在BUSY=1期间,不访问FLASH存储器模块。 对FLASH的写入要做4件事: ① 对FLASH控制寄存器写入适当的控制位 ② 监视BUSY位。 ③ 写入一个数据。 ④ 继续写一直到写完。 * 单字或单字节写入控制时序如图所示: * 块写入的控制时序 * 3.FLASH错误操作及其处理 在写入FLASH控制寄存器控制参数时,可引发以下错误: 如果写入高字节口令码错误,则引发PUC信号。小心操作可避免。 在对FLASH操作期间读FLASH内容,会引发ACCVIFG状态位的置位,引起NMI中断。小心操作可避免。 因为在对FLASH操作期间,需要较长的时间,如果这时看门狗定时器的数据将近尾声,则看门狗定时器溢出。建议用户程序在进行FLASH操作之前先停掉看门狗定时器,等操作结束之后再打开。 所有的FLASH类型的MSP430器件的0段都包含有中断向量等重要的程序代码,如果对其进行擦除操作,将会引起严重的后果。建议用户程序在进行FLASH操作之前,先将该段的重要数据保存到RAM中或写入到其它未用的段中,等待该段操作完毕再还原那些数据;同时一定不要使正在执行的程序处在正要被擦除的段中;也不要在FLASH操作期间允许中断的发生。 * FLASH模块宏定义 #define FCTL1_ (0x0128) /* FLASH Control 1 */ DEFW( FCTL1 , FCTL1_) #define FCTL2_ (0x012A

文档评论(0)

sandaolingcrh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档