STM8S103F3--EEPROM

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

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

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

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

stm8s103f3的EEPROM存储结构如下:

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

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

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

3.FLASH状态寄存器

需要注意的是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<times;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;i<ch;i++){
28      PD_ODR = 0x00;
29      delay(4);
30      PD_ODR=0X10;
31      delay(4);
32    }
33  }

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

STM8S103F3--EEPROM,布布扣,bubuko.com

时间: 2024-10-09 18:16:17

STM8S103F3--EEPROM的相关文章

(转)RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、FLASH、EEPROM的区别

RAM(Random Access Memory) 随机存储器.存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器.这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序. 按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM). ROM(Read-Only Memory)只读存储器,是一种只能读出事先所存数据的固态半导体存储器.其特性是一旦储存资料就无法再将之改变或删除.通常

NTB EEPROM设置与跨节点数据传输

NTB EEPROM设置与跨节点数据传输 双控双活系统中除了需要监测系统状态的心跳之外,还需要能够跨节点传输数据的通道.PCIE非透明桥(NTB)由于其基于标准的PCIE规范,软件依赖少,速度快,配置简便,受到许多人的青睐.基于PCIE NTB进行跨节点数据传输的原理很简单,如下图所示意: 较之于普通的PCIE/PCI设备的配置空间寄存器,NTB上多了bar2/3,bar4/bar5的地址转换寄存器,本地节点发送过来的命中bar2/bar3或者bar4/bar5的TLP的地址高位会转换成相应的地

FLASH和EEPROM的区别

FLASH和EEPROM的区别(转载) FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器.当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写

FPGA学习笔记之IIC—EEPROM写和读

一.IIC总线协议特点及其工作原理 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备. 1)I2C总线特点 I2C总线最主要的优点是其简单性和有效性.由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本.总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件. I2C总线的另一个优点是,它支持多主控(multimastering),

十天学会单片机Day5 IIC总线AT2402芯片(EEPROM)应用

1.采用串行总线技术可以使系统的硬件设计大大简化.系统的体积减小.可靠性提高.同时,系统的更改和扩充极为容易. 常用的串行扩展总线有: IIC (Inter IC BUS)总线.单总线(1-WIRE BUS).SPI(Serial Peripheral Interface)总线及Microwire/PLUS等. 2.IIC IIC总线只有两根双向信号线.一根是数据线SDA,另一根是时钟线SCL. IIC总线通过上拉电阻接正电源.当总线空闲时,两根线均为高电平.连到总线上的任一器件输出的低电平,都

stc89c52开发板遥控器解码 红外线发射 内置 eeprom 存储 串口显示编码

单片机,大概三年前,就买了一本 <爱上单片机> 最后就学会,用面包板了,编程书上基本没讲. 看原理图,看时序图,看数据手册, 都没讲. 而且书上自带的代码写的很烂. 1,缩近控制不好 2,命名混乱 3,做if 的时候 不变的常量放在左侧,这是很基本的约定 ... 最后,还是什么也没有学会. 直到去年,开始学 ARM 了. 学完了 ARM 前面发的(s3c2440)以后, 在回头看单片机,发现单片机真是,简单的不得了! 但是也发现,单片机,不如 ARM 功能强大.速度也慢.很多控制器,没有,要用

EEPROM介绍

EEPROM( Electrically Erasable Programmable Read Only Memory )全称是电气可擦除可编程只读存储器,是非易失存储器,可以访问到每个字节,容量比较小.有并行接口和串行接口的EEPROM,但并行接口基本上被串行接口的EEPROM取代,常见的串行接口有I2C,SPI,Microwire, 1-wire等.常用IIC接口的EEPROM有AT24C16,AT24C64等.EEPROM与NOR Flash的区别在于NOR Flash在擦除是按Block

(6)s3c2440用I2C接口访问EEPROM

在前面阅读理解了I2C的官方协议文档后,就拿s3c2440和EEPROM来验证一下. 本来是想用s3c2440的SDA和SCL管脚复用为GPIO来模拟的,但在没有示波器的情况下搞了一周,怎么都出不来,最后还是放弃了.甚至参考了linux下i2c-algo-bit.c和i2c-gpio.c,依然没调出来.如果有示波器,可能很快就能找到原因,现在完全不知道问题出在哪里.其实想用GPIO模拟I2C的目的很简单,以一种简单而又深刻的方式来理解I2C. 既然这条路暂时没法走,退而求其次,用s3c2440的

STM8 EEPROM心得

对于STM8来说,其内部的EEPROM确实是个不错的东西,而且STM8S103/105价格已经非常便宜了,当然也可以用STM8S003/005代替,而且价格更便宜,大概在,1.2/2.0元左右,比103/105的便宜1元左右,而且有网友说,其实这两个系列的晶圆完全是一样的(这个是秘密哦),至于ST为什么要这样做,我们就不去猜了,大家应该都知道. 对于EEPROM的读写时间比较长,特别是写入的时间,都是在ms级的,想必大家都知道.但是对于单片机内置EEPROM来说,由于其内部特性,导致单片 机在操

简介nandflash、norflash、ram、sram、dram、rom、eeprom、flash的区别

1.nandflash Nandflash是IO设备,数据.地址.控制线都是共用的,需要软件区控制读取时序, 所以不能像nor flash.内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot. S3C2440把Bootloader烧到nand flash上启动,因为在S3C2440里有一个内置的SRAM, 叫做stepping stone(垫脚石,很形象-),系统启动加电后, 会把nandflash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nandflash启动.