历史上的今天
返回首页

历史上的今天

今天是:2024年09月23日(星期一)

正在发生

2020年09月23日 | STM8S103F3--EEPROM

2020-09-23 来源:eefocus

  本文介绍stm8s103f3这款单片机的eeprom的用法。


      EEPROM是单片机应用系统中经常会用到的存储器,它主要用来保存一些掉电后需要保持不变的数据。在以前的单片机系统中,通常都是在单片机外面再扩充一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,很多单片机的公司都推出了集成有小容量EEPROM的单片机,这样就方便了使用,降低了成本,提高了可靠性。


        1.介绍STM8S103F3的首地址及容量。

        STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。


        stm8s103f3的EEPROM存储结构如下:

clipboard

        由上图可知,EEPROM的大小为0x00427f-0x004000+1=0x280=640bytes。


        2.介绍EEPROM的解保护寄存器。

clipboard[1]

        向该寄存器先写入0XAE,然后写入0X56就可以解除解保护。想该寄存器读操作时,会返回0;


        3.FLASH状态寄存器

clipboard[2]

clipboard[3]

    需要注意的是bit3,bit3为EEPROM区域解锁标记,0表示保护使能,1表示保护失效。向FLASH_DUKR中写入解锁数据后通过查看FLASH_IAPSR寄存器的bit3来确定EEPROM区域已经解锁。


        bit2表示编程结束标志。对EEPROM区域进行写操作后需要判断该位来确定已经写操作成功。


        下面设计两个程序程序,第一个程序给EEPROM中的004000H位置写入一个值01H,少写入Flash中。第二个程序先读出004000H位置的值,然后给该值加1,再写入到004000H位置,也即是说每次上电时,004000H位置的值会加1。同时为了观察现象,在第二个程序中设置了一个LED灯,通过灯的亮灭次数来表示当前004000H位置的值。


第一个程序:

 1         #include "iostm8s103f3.h"

 2 

 3 void main()

 4 

 5 {

 6 

 7   unsigned char *p;

 8 

 9   unsigned int i;

10 

11   p = (unsigned char *)0x4000; // 指针p指向芯片内部的EEPROM第一个单元

12 

13   // 对数据EEPROM进行解锁

14 

15   do

16 

17   {

18 

19     FLASH_DUKR = 0xae; // 写入第一个密钥

20 

21     FLASH_DUKR = 0x56; // 写入第二个密钥

22 

23   } while((FLASH_IAPSR & 0x08) == 0); // 若解锁未成功,则重新再来

24 

25   *p=1; // 写入第一个字节

26 

27   while((FLASH_IAPSR & 0x04) == 0); // 等待写操作成功

28 

29 }


第二个程序:


 1  #include "iostm8s103f3.h"

 2  unsigned char ch;

 3  void delay (unsigned int times)

 4  {

 5    unsigned int i,j;

 6    for(j=0;j 7    for(i=0;i<65535;i++);

 8  }

 9  void main()

10  {

11    unsigned char *p;

12    unsigned int i;

13    p = (unsigned char *)0x4000; // 指针p指向芯片内部的EEPROM第一个单元

14    // 对数据EEPROM进行解锁

15     ch=0;

16     PD_DDR = 0x10;

17     PD_CR1 = 0x10;

18     PD_CR2 = 0x00;

19    do

20    {

21      FLASH_DUKR = 0xae; // 写入第一个密钥

22      FLASH_DUKR = 0x56; // 写入第二个密钥

23    } while((FLASH_IAPSR & 0x08) == 0); // 若解锁未成功,则重新再来

24    *p = *p+1; // 写入第一个字节

25    while((FLASH_IAPSR & 0x04) == 0); // 等待写操作成功

26    ch=*p; // 将写入的内容读到变量ch中

27    for(i=0;i28      PD_ODR = 0x00;

29      delay(4);

30      PD_ODR=0X10;

31      delay(4);

32    }

33  }


第二个程序下载完成之后,对开发版进行断电和上电操作,上电后PD4所对应的LED灯就会闪烁,闪烁次数代表*p位置的值的大小。


推荐阅读

史海拾趣

Bytesonic Corporation公司的发展小趣事

为了进一步加强对大陆市场的投资和管控,Bytesonic Corporation在1998年5月在英属维尔京群岛成立了控股公司——剑桥电子有限公司。这一举措不仅提升了公司的资本运作能力,也为其在全球范围内的业务拓展提供了更多的便利。

Gigavac LLC公司的发展小趣事

1984年,台湾的电子行业正迎来蓬勃发展的黄金时期。在这一年的10月,Bytesonic Corporation在台湾台北正式成立,标志着这家电子公司正式踏入竞争激烈的电子市场。初创时期,公司面临着资金短缺、技术匮乏等多重挑战,但凭借着创始人的远见卓识和团队的拼搏精神,公司逐渐在市场中站稳了脚跟。

APM Hexseal公司的发展小趣事

APM Hexseal一直致力于技术的持续创新和突破。公司不仅开发了可重复使用的自密封紧固件和垫圈等创新产品,还不断提升其产品的性能和可靠性。这些创新不仅满足了电子行业对密封解决方案的更高要求,也为APM Hexseal在激烈的市场竞争中保持了领先地位。

这些故事只是APM Hexseal在电子行业中发展起来的冰山一角。然而,正是这些故事所展现的创新精神、卓越品质和市场洞察能力,使得APM Hexseal能够在电子行业中脱颖而出,成为一家备受尊敬的企业。

Diode Laser Concepts公司的发展小趣事

为了拓展更广阔的市场,Diode Laser Concepts公司开始实施国际化战略。公司先是在亚洲和欧洲设立了办事处,随后又在美国等地建立了生产基地。通过与国际知名企业的合作,公司不仅将产品销售到了全球各地,还积累了丰富的国际经验,提升了品牌影响力。

创基(CBI)公司的发展小趣事

面对日益激烈的国际竞争,CBI公司积极实施全球化战略,通过海外投资、并购等方式,不断扩大市场份额。同时,公司还注重本土化运营,根据不同地区的市场需求和消费者习惯,提供定制化的产品和服务。这一策略使CBI在全球范围内建立了完善的销售网络和售后服务体系,进一步巩固了市场地位。

中科芯(CKS)公司的发展小趣事

人才是企业发展的核心驱动力。中科芯高度重视人才队伍建设,通过引进和培养高素质人才、优化人才结构等措施,不断提升公司的创新能力和竞争力。同时,公司还创新激励机制,通过“揭榜挂帅”等形式吸引和激励人才投身重点项目的研发攻关。这些措施的实施不仅激发了员工的积极性和创造力,也为公司的持续发展提供了有力保障。

以上五个故事分别从中科芯的技术创新、科研成果、业绩增长、产品推广和人才队伍建设等方面展示了公司在电子行业中的发展历程和取得的成就。这些故事不仅展现了公司的实力和潜力,也体现了公司对社会和行业发展的贡献和担当。

问答坊 | AI 解惑

OK...........................

.............................. [ 本帖最后由 pr8800 于 2009-3-24 17:04 编辑 ]…

查看全部问答>

竞赛结束感受!

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 经过四天三夜的奋斗,竞赛终于结束! 里面的酸甜苦辣咸尝了个遍! 不过还是有很多的疑问在里面! 希望获奖作品能上来展示一下! 让大家共同学习!  …

查看全部问答>

MCF52233_PIT

MCF52233_PIT—Programmable Interrupt Timers   MCF52233有两路的PIT,可以产生精确的定时、延时,用操作系统时用来产生时钟节拍。就三个寄存器PCSR、PMR、PCNTR。很简洁!   PCSR(PIT Control and Status Register),中断标志及控制位、分 ...…

查看全部问答>

示波器与labview的通讯问题

泰克的THS720P, 网上资料说是rs232接口,可示波器上的接口是一个网线类型的(LAN? or LXI?),随机附送的线也是两头都是网线类型的接头,不知该如何与电脑想连?插那里? 谢谢了,…

查看全部问答>

为什么现在客户总是要隔离型的LED驱动电源?--半岛狂人

经常在这看帖,看到有人说求购LED电源要隔离型的,或是有人问,也总是问隔离型的,他们的言下之意基本都是,不管什么LED样的LED驱动,更不管用于何种厂合,反正就是隔离的比不隔离的好,反正隔离的贵一些,就是好,实际这是一种误区.    &n ...…

查看全部问答>

请问是否有办法让程序在窗口最小化的方式下启动

这里要求程序在窗口最小化的方式下启动,这里在OnInitDlg()中用ShowWindow(SW_MINIMIZE);窗口会闪一下,至少上面的标题栏会改变,是否有什么办法可以解决,我看了一下CDialog::OnInitDialog()的原文件,里面是用::SetForegroundWindow(m_hWnd);来显示窗 ...…

查看全部问答>

C51扩展外部RAM,怎么访问?

我用74LS373和74LS138扩展了一片6264 6264的地址是0x6000 用#define XPORT XBYTE[0x6000]定义 要怎样访问6264呢? 用unsinged char xdata temp行吗? 我初学C51,请各位大侠指点一下啊,万分感谢!…

查看全部问答>

2011年国赛控制大推测!

本帖最后由 paulhyde 于 2014-9-15 09:29 编辑 …

查看全部问答>

msp430 adc12 可以转换负电压吗

如果把参考电压设置成负的可以吗…

查看全部问答>

单片机硬件设计的工具资料

都是电子设计的技术资料,特别是做单片机的硬件设计时,是最好的工具。 我要收1块钱,也是想再这个论坛混下去,哎!混口饭吃,希望大家能理解和支持11…

查看全部问答>