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个字节)有必要被预先擦除。因而不或许对同一个字做接连两次快速写操作(在第2次写之前没有擦除操作):第一次写字节操作将是快速操作但针对别的一个字节的第2次写操作将需求一个擦除操作。
字编程
字写入操作答应一次对整个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中履行。
一共有三种或许的块操作:
块编程(也叫规范块编程):整个块在编程前被主动擦除。
快速块编程:在编程前没有预先的块擦除操作。
块擦除。
规范块编程
块编程操作答应一次对整个块进行编程,整个块在编程前被主动擦除。
为了对整个块编程,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功用,在对选项字节写操作的一起程序不用停下来。
请参阅相应的数据手册来了解选项字节内容的细节。