历史上的今天

今天是:2024年11月19日(星期二)

2019年11月19日 | STM8S——Flash program memory and data EEPROM

发布者:sclibin 来源: eefocus关键字:STM8S  Flash  program  memory  data  EEPROM 手机看文章 扫描二维码
随时随地手机看文章

1、简介


  STM8S内部的FLASH程序存储器和数据EEPROM是由一组通用寄存器来控制的;所以我们可以通过这些通用寄存器来编程或擦除存储器的内容、设置写保护、或者配置特定的低功耗模式。我们也可以自己对器件的 option byte 进行编程。在这里我们只简单的讲解如何对STM8S内部的数据存储区域(data memory)进行写操作、读操作、擦除操作。


2、存储架构图


STM8S内部存储包括:FLASH程序存储器(FLASH program memory)和数据EEPROM(DATA EEPROM);


(1)数据EEPROM又包括:


数据存储区域(DATA MEMORY):指定从地址0x00 4000开始,其中包括 [1 block] 的option byte,数据存储区域用于存储应用数据;

(2)FLASH程序存储器又包括:


用户启动区域(USER BOOT CODE):指定从地址0x00 8000开始,其中包括UBC option bytes和 [128 byte] 的中断矢量(interrupt vectors);

程序存储区域(MAIN PROGRAM):用于存储应用程序代码;

  所以我们的操作是在DATA MEMORY里面,在该区域的指定地址进行读取内容、写入内容、擦除内容。


3、操作方法


(1)FLASH_ReadByte( ADDRESS ):读取地址ADDRESS处的1字节内容


(2)FLASH_ProgramByte( ADDRESS , DATA ):写1字节的内容到地址ADDRESS处


(3)FLASH_EraseByte( ADDRESS ):在地址ADDRESS处删除1字节的内容


4、操作步骤


使用操作前的配置


(1)配置选择编程时间,选择标准模式;


(2)解除数据存储区域的写保护;


说明:UBC和DATA MEMORY都有写保护,其中UBC的写保护是永远无法解锁的,而DATA MEMORY的写保护是可以通过连续写入两个MASS密钥值来解除该区域的写保护的;第一个密钥为0x56,第二个密钥为0xAE;只有当两个密钥输入正确(输入到寄存器FLASH_DUKR中)且输入密钥的先后顺序正确时,才会解除写保护;否则该区域在下一次系统复位之前都将一直保持写保护状态。


(3)读取、写入、擦除等操作;


5、代码实现



 1 /* Includes ------------------------------------------------------------------*/

 2 #include "stm8s.h"

 3 

 4 /* Private typedef -----------------------------------------------------------*/

 5 typedef enum { FAILED = 0, PASSED = !FAILED} TestStatus;

 6 

 7 /* Private variables ---------------------------------------------------------*/

 8 __IO TestStatus OperationStatus;

 9 

10 

11 /**

12   * @brief How to Read / Write / Erase one Byte on FLASH memory.

13   * @par   Examples description

14   *        - Read one byte at address 0x40A5

15   *        - Write its complement value at address + 1

16   *        - Check programed value

17   *        - Erase 2 byte (address 40A5 & 40A6)

18   *        - Check the 2 bytes value is 0x00.

19   * @param  None

20   * @retval None

21   */

22 void main(void)

23 {

24 

25     uint8_t val = 0x00, val_comp = 0x00;

26     uint32_t add = 0x00;

27 

28     /* Define FLASH programming time */

29         //Standard programming time fixed at 1/2 tprog

30     FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);

31 

32     /* Unlock Data memory */

33         //compare to two hardware key value: 0x56 and 0xAE

34     FLASH_Unlock(FLASH_MEMTYPE_DATA); 

35 

36     /* Read a byte at a specified address */

37     add = 0x40A5;

38         //read one byte from the address

39     val = FLASH_ReadByte(add); 

40 

41     /* Program complement value (of previous read byte) at previous address + 1 */

42     val_comp = (uint8_t)(~val);

43         //modify one byte at the address

44     FLASH_ProgramByte((add + 1), val_comp); 

45 

46     /* Check program action */

47     val = FLASH_ReadByte((add + 1));

48     if (val != val_comp)

49     {

50         /* Error */

51         OperationStatus = FAILED;

52         /* OperationStatus = PASSED, if the data written/read to/from DATA EEPROM memory is correct */

53         /* OperationStatus = FAILED, if the data written/read to/from DATA EEPROM memory is corrupted */

54         while (1)

55         {

56         }

57     }

58 

59     /* Erase byte at a specified address & address + 1 */

60         //erase one byte at the address

61     FLASH_EraseByte(add);

62     FLASH_EraseByte((add + 1));

63     /* Erase action */

64     val = FLASH_ReadByte(add);

65     val_comp = FLASH_ReadByte((add + 1));

66     if ((val != 0x00) & (val_comp != 0x00))

67     {

68         /* Error */

69         OperationStatus = FAILED;

70         /* OperationStatus = PASSED, if the data written/read to/from DATA EEPROM memory is correct */

71         /* OperationStatus = FAILED, if the data written/read to/from DATA EEPROM memory is corrupted */

72         while (1)

73         {

74         }

75     }

76 

77     /* Pass */

78     OperationStatus = PASSED;

79     /* OperationStatus = PASSED, if the data written/read to/from DATA EEPROM memory is correct */

80     /* OperationStatus = FAILED, if the data written/read to/from DATA EEPROM memory is corrupted */

81     while (1)

82     {

83     }

84 }

FLASH

关键字:STM8S  Flash  program  memory  data  EEPROM 引用地址:STM8S——Flash program memory and data EEPROM

上一篇:M41T11-RTC(实时时钟)
下一篇:STM8S——Clock control(CLK)

推荐阅读

本来只是路过,写详细一点。我看楼主浮躁得不得了。现在什么都不要做了,先去看几遍《不要做浮躁的嵌入式工程师》这篇文章,想清楚了,再动手吧。我做了个实例,不用ST的库来点LED,解答你的问题我的 KeilMDK 3.5我的STM32板子奋斗版是 ,IC 是 STM32F103VET6调试工具 JLINK V8LED 接在 PB5 ,高电平点亮既然楼主说一定懂C语言了,那么对于下面...
整个新能源汽车的发展步入新常态,拿到朋友给我的部分10月上险数据,我们以比亚迪为例来看看,从 7 月份起的变化。 1)销售结构总体的情况今年 1-10 月,比亚迪的车子一共上牌 31.02 万台,其中燃油车 15.5 万,纯电动 11.62 万台,PHEV 4.34 万台。整个比例结构如下: 但是 10 月份,这个数据是这样的,燃油车 1.96 万,纯电动 0.58 ...
芯片的国产化已成为业界探讨和追寻的主旋律,因为只有掌握自己的核心技术才能不被掣肘,才能为产业发展甚至国家安全提供强有力的支撑。而国产化无疑是一条非常漫长的道路,目前中国本土集成电路自给率只有14%,整体集成电路产业的全球市占率只有5%。要打破这一局面,唯有坚持长期主义,惟有坚守创新之道。在这方面,在时钟芯片领域坚守15年之久的广东大普...
今(18)日,2021(第十三届)传感器与MEMS产业化技术国际研讨会(暨成果展)于厦门海沧正式召开。厦门半导体投资集团有限公司董事总经理王汇联发表了以《问题导向——探寻中国半导体产业发展之路》为主题的演讲。王汇联指出,新冠疫情蔓延对全球的影响非常大,暴露了全球脆弱的产业链、供应链,不过从另一个方面来说,让老百姓普遍认识到半导体是一个关乎...

史海拾趣

问答坊 | AI 解惑

称重传感器仪表设计(内部讲义)

讲解的很详细全面,适合初入该领域研发设计人士…

查看全部问答∨

求助 LPC1114的UCOS例程

求助 LPC1114的UCOS例程 求助LPC1114的UCOS例程?或者提供UC/OSii与ARM处理器相关的具体函数的例程?感激…… …

查看全部问答∨

怎么样使阻容降压更加稳定

附件中是我做的一个阻容降压的电路,但这个电源相当不稳定,老是把芯片冲击坏掉(芯片的5V电压管脚和GND直接短路,通了),自我改动:加了个Pi型滤波电路,但仍然没效果。新的一个想法是:用一个1:1的隔离变压器把市电隔离开来,但不知道变压器的 ...…

查看全部问答∨

如何下载程序到LM3S9B96开发板上

本人刚拿到一块LM3S9B96开发板,现在想在KEIL开发软件下弄个例程下载到开发板上去,熟悉一下这个开发的过程。由于刚接触不知道怎么操作。望哪位前辈能指点一下,越详细越好!谢谢啦!…

查看全部问答∨

UART FIFO

今天我调试的时候,发现一个有点奇怪的问题,就是接收FIFO。FIFO的可以装下16字节的数据,我设置接收FIFO深度位7/8,当我发送14个数据的时候,这个时候是肯定不会发生超时中断的,这个效果也出来了。但是当我发送15个数据的时候,也不会发生超时中 ...…

查看全部问答∨

关于TI芯片LM3S601,在IAR内调试问题~~~~

在TI,LM3S601芯片上用程序进行编码器速度计算时,利用到SysCtlDelay()这个函数时,显示sysctlDelay未定义,但我sysctl.h或是sysctl .c都已经导入IAR了~~~make时还是通不过,这是什么原因?GO to definition sysctlDelay一直没反映 …

查看全部问答∨

出手头几块开发板,全新

本帖最后由 ddllxxrr 于 2016-1-7 16:54 编辑 出手头几块开发板,全新。 1、黑金Cyclone II开发板。 2、micro2440 arm开发板 1G的nand flash,图就不上了。 3、TI大学计划的LM3S811开发板,有好几块。 4、TI的msp430 pad ,图也不上了。 ...…

查看全部问答∨

基于AM3359的即时拍照、图片修改系统

主要完成下面这些功能 1.  拍照功能。通过控制摄像头拍照,通过UART 接口和摄像头通信,可将照片存放在存储单 元中。配置上外部存储卡,可以将照片存放到挂载在片上系统的任意内存卡中。 2.  照片修改功能。对拍摄的照片进 ...…

查看全部问答∨

电子学习必备:合格电子工程师是如何炼成的

第一步入门-51核心和基本电路 中国人有10亿啊,每年有多少大学生毕业呢?我不知道。但是我看到有一张照片,招聘会上熙熙攘攘,人来人往,十分震撼。从来没有一个时刻让我感觉到中国的人力资源是如此的丰富。但是,从现在的大学毕业出来的学生学到 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved