STM8 读同时写RWW

发布者:runaway2000最新更新时间:2016-08-08 来源: eefocus关键字:STM8  读同  RWW 手机看文章 扫描二维码
随时随地手机看文章
RWW特性允许用户在执行程序和读程序存储器时对DATA EEPROM区域进行写操作,因此执行的时间被优化了。相反的操作是不允许的:即你不可以在写程序存储器时对DATA EEPROM进行读操作。

 

RWW特性是一直有效的而且可以在任意时刻使用。注意:并不是所有STM8都拥有RWW特性,请参考相应的数据手册来了解更多信息。

字节编程

可以对主程序存储器和DATA区域逐字节地编程。要对一个字节编程,应用程序可直接向目标地址写入数据。


在主程序存储器中
当字节编程操作执行时,应用程序停止运行。
在DATA区域中 
有RWW功能的器件:在IAP模式下,应用程序不停止运行,字节编程利用RWW功能进行操作。 
无RWW功能的器件:当字节编程操作执行时,应用程序停止运行。

要擦除一个字节,向对应的字节简单写入'0x00'即可。
应用程序可以通过读FLASH_IAPSR寄存器来校验编程或擦除操作是否已被正确执行:


在一次成功的编程操作后EOP位被置1。
当软件试图对一个被保护的页进行写操作时WP_PG_DIS位被置1。在这种情况下,写操作不会被执行。

如果FLASH_CR1中的IE位已经被预先使能,则只要这些标志位(EOP/WP_PG_DIS)中有一个被置位就会产生一个中断。
STM8自动快速字节编程,根据目标地址的初始化内容的不同,编程持续时间可能也有所不同。如果字(4个字节)中包含不为空的字节,编程前字会被自动擦除。相反,如果字节为空,由于不会执行擦除操作从而编程时间变短。然而,可以通过对FLASH_CR1中的FIX位置1来强迫执行系统擦除操作而不管其内容是否为空,从而使编程时间固定(请参考FLASH控制寄存器)。编程总时间随之被规定为擦除时间和写操作时间的和(请参考tPROG参数,在数据手册的"Flash program memory"表中)。

注意:为了快速写一个字节(没有擦除操作),将要被写入数据的整个字(4个字节)必须被预先擦除。因此不可能对同一个字做连续两次快速写操作(在第二次写之前没有擦除操作):第一次写字节操作将是快速操作但针对另外一个字节的第二次写操作将需要一个擦除操作。


字编程

字写入操作允许一次对整个4字节的字进行编程,从而将编程时间缩短。

主程序存储器和DATA EEPROM都可以进行字操作。在一些STM8S器件中,也拥有当DATA EEPROM在进行写操作时同时具备RWW功能。请参考数据手册了解更多信息。为了对一个字编程,FLASH_CR2和FLASH_NCR2中的/WPRG/NWPRG位必须预先置位清零来使能字编程模式(请参考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互补控制寄存器2(FLASH_NCR2))。然后将要被编程字的4个字节必须被从首地址开始装载。当四个字节都被写入后,编程周期自动开始。 
像字节操作一样,STM8的FLASH_IAPSR中的EOP与WR_PG_DIS控制位和FLASH中断相配合,可用于检查操作是否被正确执行完毕。

块编程

块编程比字节编程和字编程都要快。在STM8块编程操作中,整个块的编程或擦除在一个编程周期就可以完成。请参考(表4)了解具体器件的块的大小。在主程序存储器和DATA区域都可以执行块操作。


在主程序存储器中
用于块编程的代码必须全部在RAM中执行。
在DATA区域中 
有RWW功能的器件:DATA块操作可在主程序存储器中执行,然而数据装载阶段(下文中有述)必须在RAM中执行。
无RWW功能的器件:用于块编程的代码必须全部在RAM中执行。

一共有三种可能的块操作:


块编程(也叫标准块编程):整个块在编程前被自动擦除。
快速块编程:在编程前没有预先的块擦除操作。
块擦除。

STM8 读同时写RWW - Wornyong - 智能物联,嵌入您我!
在STM8块编程时,中断被硬件自动屏蔽。 

标准块编程

块编程操作允许一次对整个块进行编程,整个块在编程前被自动擦除。
为了对整个块编程,FLASH_CR2和FLASH_NCR2中的PRG/NPRG位必须预先置位/清零来使能标准块编程(请参考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互补控制寄存器2(FLASH_NCR2))。然后需要向主程序存储器或DATA区域的目标地址依次写入要编程的数据,这样数据会被锁存在内部缓存中。为编程整个块,块中的所有字节都需要被写入数据。但要注意,所有被写入缓存的数据必须位于同一个块中,这意味着这些数据必须有同样的高位地址:仅仅低6位的地址可以不一样。当目标块的最后一个字节被装载到缓存后,编程就自动开始了。编程前首先会自动执行一次擦除操作。

当对DTA区域进行块编程时,应用程序可以检查FLASH_IAPSR中的HVOFF位确认编程状态。一旦HVOFF被置0,真正的编程阶段就开始了,此时应用程序就可以返回到主程序中去了。FLASH_IAPSR中的EOP与WR_PG_DIS控制位和FLASH中断相配合,可用于检查操作是否被正确执行完毕。

快速块编程
STM8快速块编程允许不擦除存储器内容就对块进行编程,因此快速块编程的编程速度是标准块编程的两倍。该模式仅用于被编程部分已经被擦除过的情况,同时这种模式对向空白部分写入完整的应用代码特别有用,因为这种模式可以节省相当可观的时间。
快速块编程的步骤和标准块编程的步骤大致一样,FLASH_CR2和FLASH_NCR2中的FPRG/NFPRG位必须预先置位/清零来使能快速块编程(请参考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互补控制寄存2(FLASH_NCR2))。FLASH_IAPSR中的EOP与WR_PG_DIS控制位和FLASH中断相配合,可用于检查快速块编程操作是否被正确执行完毕。
警告:在执行快速块编程之前如果这个块不是空的话,不能保证写入的数据无误。
块擦除

块擦除允许擦除整个块。
为了擦除整个块,FLASH_CR2和FLASH_NCR2中的ERASE/NERASE位必须预先置位/清零来使能块擦除(请参考4.9.2 FLASH控制寄存器2(FLASH_CR2)和4.9.3 FLASH互补控制寄存器2(FLASH_NCR2))。通过对块中所有的字写入'0x00 00 00 00'来擦除整个块。字的起始地址必须以'0','4','8',或'C'作为结尾。

FLASH_IAPSR中_PG_DIS控制位和FLASH中断相配操作是否被正确执行完毕。


选项字节(Option byte)编程


对选项字节编程和对DATA EEPROM区域编程非常相似。
应用程序可直接向目标地址进行写操作。利用STM8的RWW功能,在对选项字节写操作的同时程序不必停下来。
请参考相应的数据手册来了解选项字节内容的细节。


关键字:STM8  读同  RWW 引用地址:STM8 读同时写RWW

上一篇:STM8 ICP和IAP
下一篇:STM8 存储FLASH、EEPROM、存储保护

推荐阅读最新更新时间:2024-03-16 15:04

关于STM8空间不足的解决方法
STM8虽然功能齐全,但是空间不足也是经常出来的情况。要么.text overflow,要么.bss overflow,让人头疼。这里把一些优化方案列出来,让空间得到充分利用: 1、在Project settings下,C Compiler,Optimizations选择Customize 重点是把Split Functions选上。 意思就是只编译用到的函数,不然编译器会很傻地把你用到的C文件里所有函数都编译进去,空间当然不够啦! 2、再到Linker下,Category选择Input 然后看哪个不够,数值设大点。 比如我的工程显示.bss overflow(定义的变量比较多),那我就把RAM从0x1FF改成了
[单片机]
关于<font color='red'>STM8</font>空间不足的解决方法
徒手编写了一个STM8的反汇编工具
最近打算玩一下STM8, 只为了消化一下我的库存,因为我曾经买过几个型号的STM8单片机,但是一直没用来DIY啥。我对STM8熟悉程度远不如STM32, 后者是流行广泛的ARM核,STM8却是ST独家的架构。 STM8 CPU是在ST7基础上增强,有人说是从6502演变来的,我看倒也不像。学习了一下历史,Motorola的6800演变出来的6805/6811/6809三个分支,以及6502这个与6800有渊源的CPU,从寄存器和指令集上看STM8是和它们有相似之处的,不过差异的地方也很大。作为一个8位MCU,STM8的寻址范围居然达到16M byte(我不信ST会给8位机配上1M以上的ROM或RAM),寻址模式就很多了,间接内存访
[单片机]
stm8下载程序(使用ST-LINK下载器和STVP下载软件)
首先要说下为什么要建立烧写工程呢- -原因只有一个。因为你不可能将源码工程交给别人去帮你烧程序。 - -然后要吐槽下ST官方的IDE。真的。用得我极度不爽。所以后来转战IAR。结果发现IAR没法批量生产- -因为IAR少程序貌似一定要在工程下。不能直接将HEX文件烧写进板子里。所以最后还是要用STVP来批量烧。 首先要准备好你的烧写文件。HEX或者S19。文件。(用IAR或者STVD生成的,前提必须保证你程序没问题- -这个肯定不用说)。 第一步:然后打开STVP 。打开之后是这样的 第二步:点击OPTION BYTE 。ROP ON。这个是每次烧写完将FLASH锁住。以免别人读你的IC。 还有如果你晶振是24M的。WAI
[单片机]
STM8 beCAN工作模式
STM8 beCAN工作模式 beCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。 在硬件复位后,beCAN工作在睡眠模式以减少功耗。软件通过对CAN_MCR寄存器的INRQ或SLEEP置'1',可以请求beCAN进入初始化或睡眠模式。一旦进入了初始化或睡眠模式,beCAN就对CAN_MSR寄存器的INAK或SLAK位置'1'来进行确认。当INAK和SLAK位都为'0'时,beCAN就处于正常模式。在进入正常模式前,beCAN必须跟CAN总线取得同步;为取得同步,beCAN要等待直到CAN总线处于空闲状态,即在CANRX引脚上监测到11个连续的隐性位。 初始化模式 软
[单片机]
<font color='red'>STM8</font> beCAN工作模式
STM8避坑—PB4和PB5
  在使用STM8S003时由于引脚不够,于是将PB4和PB5作为普通IO口使用,结果无论程序如何调整,始终无法输出高电平,在网上查了很多资料,实践之后终于搞明白了问题所在。   首先PB4和PB5是可以作为I2C复用端口的,手册上做了如下介绍:   可以发现PB4和PB5后面对于端口性质的定义为T,表示真开漏模式,内部既没有P-Buffer,也没有连接到VDD的保护二极管,也就是说在程序中无论怎么设置,PB4和PB5都只能是开漏模式,弄清楚这一点之后,如果需要将PB4和PB5作为普通IO口使用,建议加上拉电阻,这样就可以正常输出高低电平了。
[单片机]
<font color='red'>STM8</font>避坑—PB4和PB5
stm8 halt低功耗模式
  STM8   STM8系列是意法半导体公司生产的8位的单片机。该型号单片机分为STM8A、STM8S、STM8L三个系列。STM8A:汽车级应用STM8S:标准系列STM8L:超低功耗MCU   内核高级STM8内核,具有3级流水线的哈佛结构扩展指令集存储器程序存储器:8K字节Flash;10K 次擦写后在55°C环境下数据可保存20年数据存储器:640 字节真正的数据EEPROM;可达30万次擦写RAM:1K字节   时钟、复位和电源管理2.95到5.5V工作电压灵活的时钟控制,4个主时钟源– 低功率晶体振荡器– 外部时钟输入– 用户可调整的内部16MHz RC– 内部低功耗128kHz RC带有时钟监控的时钟安全保
[单片机]
<font color='red'>stm8</font> halt低功耗模式
STM8单片机STVD环境监视数组变量的多个元素
调试时监视数组变量的多个元素修改如下设置
[单片机]
<font color='red'>STM8</font>单片机STVD环境监视数组变量的多个元素
意法半导体宣布STM8出货量突破10亿颗
STM8微控制器出货快速攀升至10亿颗,意法半导体将持续专注发展8位微控制器市场 中国北京,2014年6月10日——横跨多重电子应用领域、全球领先的半导体供应商、市场领先的嵌入式微控制器厂商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)宣布其8位微控制器STM8总出货量达10亿颗,第10亿颗得STM8微控制器已交付给照明控制元器件厂商美国路创电子(Lutron Electronics)。 以优异的性价比为特色,STM8系列通用8位微控制器基于高性能8位内核,配备先进的外设接口,适用于各种工业控制和家电设备,以及汽车、低压设备和电池供电的便携产品。 意法半导体微控制器产品市场总监Dan
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved