打印
[STM8]

【转】 STM8S 操作内部EEPROM

[复制链接]
866|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

对于STM8S103F3这款芯片来讲,存在640个字节的EEPROM,当然如果有外部EEPROM,自然是不会使用到内部的EEPROM的。但小东西也有大用途,例如做无线应用时,减少成本的情况下,还能保存一些特定设置,如:休眠时间,工作频率,输出功率,密码等。

下图所示,STM8S系列EEPROM大小一目了然。


操作EEPROM自然分成读操作和写操作,先查看STM8S的手册描述如下:

中文手册上的存储器组织结构存在错误,如:


对应英文手册如:


对应的代码如下;


[cpp] view plain copy


  • char *p = 0x4000;  
  • u8 a,b,c;  
  •   
  • a = *p;  
  • b = *p++;  
  • c = *p++;  

就像C8051操作外部数据存储一样,只需要简单通过指针指向0x4000位置即可。
沙发
好牛逼的猪坚强|  楼主 | 2016-11-2 23:48 | 只看该作者

写操作,则有些小麻烦,主要是STM8S的存储区安全机制问题。

中文手册描述:

英文手册描述:



[cpp] view plain copy


  • u8 write_header(header *h)  
  • {  
  •     u8 *p=(u8 *)EP_HEADER_ADDR; //EP_HEADER_ADDR    0x4000  
  •     if(!h)  
  •         return 0;  
  •          
  •     /*操作EEPROM,需要先进行解锁*/  
  •     FLASH_DUKR=0xAE; //注意这里不能断点调试,否则会造成内部不同步,FLASH解锁失败  
  •     FLASH_DUKR=0x56;  
  •     FLASH_CR2=0x00;  
  •     FLASH_NCR2=0xFF;  
  •     if(!(FLASH_IAPSR & 0x08)) //检测对应的位是否解锁  
  •         return 0;  
  •     _memcpy(p,(u8 *)h,sizeof(header));  
  •     FLASH_IAPSR=(u8)(~0x08); //重新上锁   
  •     return 1;  
  • }  


执行解锁后,操作也是非常简单的。


总结:

1、STM8S内部EEPROM使用还是挺方便的,只有写操作时需要解锁。

2、中文手册很多时候会存在错误,只能作为快速浏览用,具体应用还得参考官方英文手册。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

116

帖子

0

粉丝