当前位置:首页 > 单片机 > 单片机
[导读]STM8的EEPROM在复位后,要想要写入数据,必须先解锁,必然无法写入数据。解锁就是向 FLASH_DUKR 中先后写入:第一个硬件秘钥:0xAE第二个硬件秘钥:0x56两个字节的数据。此时FLASH_IAPSR 中的 DUL 位将会变为1,表示

STM8的EEPROM在复位后,要想要写入数据,必须先解锁,必然无法写入数据。解锁就是向 FLASH_DUKR 中先后写入:

第一个硬件秘钥:0xAE

第二个硬件秘钥:0x56

两个字节的数据。

此时FLASH_IAPSR 中的 DUL 位将会变为1,表示 EEPROM 已经成功解锁,可以进行写入操作了。如果发现 DUL 位不为 1 ,是可以按顺序重复写入秘钥的,直到 DUL 位为 1 为止。

但手册上是这么说的:

中文手册:

2. 如果密钥输入错误,应用程序可以尝试重新输入这两个MASS密钥来对DATA区域进行解
锁。

4. 如果密钥输入错误,DATA EEPROM区域在下一次系统复位之前将一直保持写保护状态。

在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略掉。

英文手册:

2. If the key available on the data bus is incorrect, the FLASH_PUKR register remains
locked until the next reset. Any new write commands sent to this address are
discarded.

4. If the key available on the data bus is incorrect, the data EEPROM area remains write
protected until the next reset. Any new write command sent to this address is ignored.


这些说明,给人的感觉是:如果第一个秘钥输入错误,那么可以重复输入,直到解锁,但如果第一个秘钥输入正确,而第二个秘钥输入错误,则将永久锁定,任何对该寄存器的写入操作都会被忽略掉,直到复位后下一次解锁前。


事实上,我经过试验,无论第一个秘钥错误,还是第二个秘钥错误,均可以重复操作直到解锁为止。




这里要注意的是,2个密钥的顺序,与STM8的用户手册上是相反的,如果按照手册上的顺序,就会停留在do…while循环中。具体原因,也不是很清楚,也可能是我拿到的手册(中文和英文的都一样)太旧了,或者是理解有误。

注:
参考资料说的解锁顺序的问题:
我们来看看官方给的库函数stm8s_flash.c文件中

void FLASH_Unlock(FLASH_MemType_TypeDef MemType)

{

/* Check parameter */

assert_param(IS_MEMORY_TYPE_OK(MemType));

/* Unlock program memory */

if (MemType == FLASH_MEMTYPE_PROG)

{

FLASH->PUKR = FLASH_RASS_KEY1;//KEY1:0x56

FLASH->PUKR = FLASH_RASS_KEY2;//KEY2:0xAE

}

/* Unlock data memory */

else

{

FLASH->DUKR = FLASH_RASS_KEY2; /* Warning: keys are reversed on data memory !!! */

FLASH->DUKR = FLASH_RASS_KEY1;

}

}

从上面的函数可以看到解锁FLASH和DATA EEPROM时的顺序是不一样的,中文手册上没体现这一点。当然我们要做的就是直接拿官方的库来用就行了!!


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

ST公司的STM8AF5286是用于汽车的8位MCU,配置了多达128KB闪存,数据EEPROM,10位ADC,计时器,LIN,CAN,USART,SPI,I2C等接口,工作电压3-5.5V,

关键字: st stm8

你知道STM8 Nucleo开发板吗?意法半导体新推出的两款STM8* Nucleo开发板,让8位开发社区也能体验到STM32 * Nucleo系列开发板久经验证的易用性和可扩展功能。

关键字: Nucleo stm8 意法

折腾了两天了,一直没解决问题。短路计算机这边的串口收和发,自收自发一切正常,这说明计算机这边的串口没问题。短路stm8s的收和发,自收自发也正常,那就是stm8s这边的串口也没问题。怀疑是波特率误差比

关键字: stm8 串口通信

前一段时间画了一个CC1101收发小板子,但是一直没有成功,最后发现把27nH的电感焊接成了27uH,最终导致失败.现在更换之后可以覆盖我们公司所有的角落,已经够用了.下面是STM8程序CC1101.

关键字: cc1101 stm8 433无线模块

发布至今已十年,STM8将华丽转身,延续传奇。

关键字: 8位 MCU stm8 意法半导体 技术专访

在使用MDK5编译STM32时,新增的.c文件需要添加到 include Paths 处,否则编译时会报错。使用STM8时,用的是IAR,新增的.c文件需要添加头文件路径到 options->c/c++ Compi...

关键字: stm8 错误

在讲PWM之前,大家先做以下5个实验。1、LED1循环亮300ms,灭700ms;2、LED1循环亮30ms,灭70ms;3、LED1循环亮3ms,灭7ms;4、循环以下步骤1)LED1循环亮3ms,灭7ms;执行一百次...

关键字: stm8 单片机 机器人

最近希望恢复性学习一下STM8的相关知识,于是我选择了从头开始写温湿度传感器DHT11驱动代码的方式。其中遇到一些问题,也有一些收获,希望会帮助到遇到类似问题的朋友,也希望不足之处得到大家的指导 首先介绍一下

关键字: dht11 stm8 温湿度传感器

舵机如上图所示,左图为9g舵机,右图为55g舵机,与直流减速电机不同,它的工作方式是根据脉冲宽度转到对应的角度,转角范围是180度。PWM波控制信号的脉冲宽度对应的舵机转角如下图所示。舵机有一个三线的接口。脉冲信

关键字: stm8 单片机 机器人 舵机
关闭
关闭