STM8L的EEPROM读写原理及例程
转载地址:http://www.51hei.com/bbs/dpj-56489-1.html
STM8L103C6拥有1KB的片上EEPROM,可以用来存储程序需要用到的参数,就不需要额外使用24C02这样的外部存储器了.
同时,和24C02比起来,STM8L的片上EEPROM操作更简单,可以直接对地址进行操作,进行数据读写.
下图是STM8L闪存和EEPROM的地址分配图,可以看到EEPROM的起始地址为0x001000,结束地址为0x0013FF.共1024个地址空间,所以EEPROM的容量为1KB.
EEPROM在上电复位后是写保护的,在向其中写入数据时,需要解锁,关闭写保护.解锁流程为:
①第一次向FLASH_DUKR写入密钥0xAE
②第二次向FLASH_DUKR写入密钥0x56
两次都写入正确后,写保护功能被关闭,可以对EEPROM区域进行写操作.解锁成功后,DUL位会被置位,在写完密钥后,可以读取DUL位来判断有没有解锁成功.
在向EEPROM写数据时,单片机内部会产生高压对EEPROM写操作,如果这个时候被中断打断,会造成单片机异常,所以写操作时,需要关闭总中断,防止意外发生.
本例程,先向EEPROM的四个地址各写入了一个字节的数据,然后从这个四个地址读取出这些数据,和写入数据进行对比.从下图可以看到,读出数据和写入数据完全一致.
- /****************************************************************************************
- *开发环境:IAR for stm8 v6.5.3
- *硬件平台:STM8L-DISCOVERY
- *功能说明:本例程,先向EEPROM的四个连续地址写入四个字节数据,然后读取出来,与写入数据对比
- *作 者:茗风
- ****************************************************************************************/
- #include"iostm8l152c6.h"
- #include"stdint.h"
- #define EEPROM_STARTADDR 0x1000
- /******************************************************************************************************
- *名 称: void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
- *功 能: 向EEPROM指定地址写入一字节数据
- *入口参数: Addr:存放数据的偏移地址
- * Data:待写入的数据
- *出口参数:无
- *范 例:
- ******************************************************************************************************/
- void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)
- {
- uint8_t *Ptr_SegAddr; //Segment pointer
- Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr); //Initialize pointer
- FLASH_DUKR=0xAE;
- FLASH_DUKR=0x56;
- while(!FLASH_IAPSR_DUL);//如果DUL没有置位,说明解锁不成功,最好加入超时判断
- asm("sim");//关闭中断
- *Ptr_SegAddr=Data; //指定地址,写1 字节
- while(!FLASH_IAPSR_EOP);//等待写操作完成,最好加入超时判断
- asm("rim");//打开中断
- FLASH_IAPSR_DUL=0;//上锁,对DATA EEPROM写保护
- }
- /******************************************************************************************************
- *名 称:uint8_t EEPROM_ReadByte(uint8_t Addr)
- *功 能:从EEPROM中读取一个字节数据
- *入口参数:Addr:存放数据的偏移地址
- *出口参数:Data:读回的数据
- *说 明:无
- *范 例:无
- ******************************************************************************************************/
- uint8_t EEPROM_ReadByte(uint16_t Addr)
- {
- uint16_t Data=0;
- uint8_t *Ptr_SegAddr;
- Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr); //Initialize pointer
- Data=*Ptr_SegAddr;
- return Data;
- }
- void main(void)
- {
- static uint8_t t1=0,t2=0,t3=0,t4=0;
- EEPROM_WriteByte(0x00,0x40);
- EEPROM_WriteByte(0x01,0x41);
- EEPROM_WriteByte(0x02,0x42);
- EEPROM_WriteByte(0x03,0x43);
- t1=EEPROM_ReadByte(0x00);
- t2=EEPROM_ReadByte(0x01);
- t3=EEPROM_ReadByte(0x02);
- t4=EEPROM_ReadByte(0x03);
- // asm("rim"); //enable interrupts
- while(1)
- {
- // asm("wfi");
- }
- }
复制代码
STM8L的EEPROM读写原理及例程相关推荐
- 通过mtd读写flash_NOR Flash读写原理及驱动
本文主要是关于NOR Flash的相关介绍,并着重对NOR Flash读写原理及驱动进行了详尽的阐述. NOR Flash NOR Flash是现在市场上两种主要的非易失闪存技术之一.Intel于19 ...
- 基于51单片机的EEPROM读写
本讲内容: 对存储器的基本知识进行介绍.介绍EEPROM芯片AT24C02:通过例程展示EEPROM的读写. 存储器是应用于各种嵌入式场合的存储部件,按功能可分为只读存储器(ROM)和随机存取存储器( ...
- EEPROM读写实验
更多交流欢迎关注作者抖音号:81849645041 目标 实现从机设备EEPROM读写数据. 原理 EEPROM 是一种掉电后数据不丢失的存储器,常用来存储一些配置信息,以便系统重新上电的时候加载.E ...
- STM8S103F2 EEPROM读写
/************ STM8S103 EEPROM读写 ******/ /*芯片型号:STM8S103F2PB6 */ /*功能描述: ...
- pic单片机c语言读eeprom,PIC16F877单片机内部EEPROM读写实例
;PIC16F877单片机内部EEPROM读写实例*************************************************************************** ...
- Zookeeper的集群架构以及读写原理
本文来说下Zookeeper的集群架构以及读写原理 文章目录 总体架构 Session Quorum模式 搭建3节点ZooKeeper集群 本文小结 总体架构 应用使用 ZooKeeper 客户端库来 ...
- HBase数据模型和读写原理
Hbase的数据模型和读写原理: HBase是一个开源可伸缩的分布式数据库,他根据Google Bigtable数据模型构建在hadoop的hdfs存储系统之上. HBase是一个稀疏.多维度 ...
- 获取hdfs_收好!Hadoop-HDFS读写原理的超详细教程
最近在答疑工作中,有很多小伙伴都在问HDFS的读写原理是什么,小编其实在刚开始学习大数据的时候,也对此有所困惑. 可见,同一个知识,同一个困惑啊~ 为了让更多的小伙伴能够彻底解决这一困惑,小编下面就为 ...
- NAND FLASH读写原理
NAND FLASH读写原理 一.结构分析 S3C2410处理器集成了8位Nand Flash控制器.目前市场上常见的8位NandFlash有三星公司的k9f1208.k9f1g08.k9f2g08 ...
最新文章
- ORA-01111,ORA-01110,ORA-01157报错处理
- STM32中IO口的8中工作模式
- EBPY0106是什么意思
- MySQL高级配置(二)详细介绍
- Unity VR游戏开发干货教程:优化VR体验
- TFS2010 删除工作区(同时删除工作区中所有的目录映射)
- 微信小程序云开发之云函数创建
- 程序员在这些地方敲代码,普通笔记本根本扛不住
- 关于sinX与y的大小比较取值范围计算
- 销售转向java编程的开始之路
- Kafka安装包下载地址
- workstation服务丢失 共享打不开 0x80070035
- 李白的藏头诗鸿蒙圣安卓,李白藏头诗生成器
- vue tinymce安装及使用
- 新网站如何做seo优化,这5个步骤让网站快速被收录
- 从100套真题中提炼而出的100个经典句子
- 面试阿里必知的SQL面试题 100讲
- 有善始者实繁 能克终者盖寡
- mac如何查看mysql是否卸载干净_mac 干净卸载 mysql
- linux 文件修复工具,Linux环境下几个好用的文件恢复工具
热门文章
- 使用uniapp开发微信小程序的微信支付流程
- 计算机术语新年祝福,新年祝福的短句
- Horizon Cloud Service 云桌面水印组策略配置
- 用python计算两点坐标_python 计算方位角实例(根据两点的坐标计算)
- 基于springboot+jsp的商场停车场服务管理信息系统
- 用js 设置网页快捷键
- 虚拟服务器日语,云服务器日语
- PHP单商户商城系统 全套源代码【源码+文档+搭建部署教程】
- Matlab图像处理基础(1):图像表示,点处理
- 全国中小学信息技术创新与实践大赛:加码未来编程赛道