微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM8 存储FLASH、EEPROM、存储保护

STM8 存储FLASH、EEPROM、存储保护

时间:11-11 来源:互联网 点击:

如下步骤来解除主程序存储器区域的写保护:


向FLASH_PUKR写入第一个8位密钥。在系统复位后,当这个寄存器被首次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第一个硬件密钥值(0x56)相比较。
如果密钥输入错误,FLASH_PUKR寄存器在下一次系统复位之前将一直被锁住。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略掉。
如果第一个硬件密钥正确,当这个寄存器被第二次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第二个硬件密钥值(0xAE)相比较。
如果密钥输入错误,FLASH_PUKR寄存器在下一次系统复位之前将一直被锁住。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略掉。
如果第二个硬件密钥正确,主程序存储器写保护被解除,同时FLASH_IAPSR中的PUL位为1。

在开始编程之前,应用程序可以校验PUL位是否被有效地置1。应用程序可以在任意时刻通过清PUL位来重新禁止对FLASH程序区域的写操作。

对DATA区域的写操作

在STM8复位后,可以通过向FLASH_DUKR寄存器连续写入两个被叫作MASS密钥的值来解除DATA区域的写保护。这两个写入FLASH_DUKR的值会和以下两个硬件密钥值相比:

● 第一个硬件密钥:0b0101 0110 (0x56)
● 第二个硬件密钥:0b1010 1110 (0xAE)

需要通过如下步骤来解除数据区域的写保护:


向FLASH_DUKR写入第一个8位密钥。在系统复位后,当这个寄存器被首次写入值时,数据总线上的值没有被直接锁存到这个存储器中,而是和第一个硬件密钥值(0x56)相比较。
如果密钥输入错误,应用程序可以尝试重新输入这两个MASS密钥来对DATA区域进行解锁。
如果第一个硬件密钥正确,当这个寄存器被第二次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第二个硬件密钥值(0xAE)相比较。
如果密钥输入错误,DATA EEPROM区域在下一次系统复位之前将一直保持写保护状态。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略。
如果第二个硬件密钥正确,DATA区域的写保护被解除,同时FLASH_IAPSR中的DUL位为1。

在开始编程之前,应用程序可以通过校验DUL位是否被有效地置1来确认DATA区域已经将写保护解锁。应用程序可以在任意时刻通过清空DUL位来重新禁止对DATA区域的写操作。


对选项字节的写操作的步骤和对DATA EEPROM的操作大致相同。但是要注意到FLASH_CR2中的OPT位要位1以及FLASH_NCR中的NOPT位要为0,这样才可以对选项字节进行写操作。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top