5905|9

5310

帖子

453

TA的资源

五彩晶圆(高级)

楼主
 

【M4 开发板入门】EKK-LM4F232探索五 M4的内部EEPROM [复制链接]

EEPROM

LM4F232H5QD微控制器包括EEPROM,具有以下特点:
2K字节的内存访问为512个(32位)字
32块,每块16个字(64字节)
■内置的磨损测量
■每块的访问保护
■锁保护整个外围设备的选择以及每块使用32位到96位的解锁代码(应用程序可选)
■写入完成支持中断,以避免循环
15Mhz写操作500K次(写作时固定在每隔页循环的方式抵消),每块每2页(每循环通过两页)。

 

内部EEPROM块和控制逻辑

ee.JPG (32.24 KB, 下载次数: 10)

EEPROM模块提供了一个定义明确的寄存器接口来支持访问读写随机存取风格和以及一个滚动或顺序存取计划的EEPR ...

EEPROM模块提供了一个定义明确的寄存器接口来支持访问读写随机存取风格和以及一个滚动或顺序存取计划的EEPR ...

最新回复

例程都没找到EEPROM操作的,真是太感谢了!!!!  详情 回复 发表于 2012-1-11 15:33
 
点赞 关注

回复
举报

5310

帖子

453

TA的资源

五彩晶圆(高级)

沙发
 
简介
EEPROM API提供一套与片上EEPROM相互作用的,易于使用非易失性数据存储的函数。函数用于对的EEPROM编程和擦除,配置EEPROM的保护,处理EEPROM中断。
EEPROM可以与闪存不同的是一个字一个字的基础上编程,应用程序在写入新值到EEPROM之前,它不用明确擦除一个字或页的。
EEPROM的控制器有能力,当试图访问无效(比如从受保护的块读)时产生一个中断。该中断可用于验证程序的运作;中断被悄悄地忽略,将保持无效的访问,隐藏潜在的错误。当已完成擦除或编程操作时,也可能会产生一个中断。
Stellaris系列的不同成员之间的可用EEPROM和它包含的块数的大小各不相同。API函数EEPROMSizeGet()和EEPROMBlockCountGet()允许在运行时确定此信息。
数据保护支持在设备和块用来控制读取和写入访问的二个级别的配置密码。此外,块可以配置为允许访问仅在当CPU运行在管理模式。二级保护机制允许一个或多个EEPROM块完全无法访问,直到下一次系统复位的软件。
此驱动程序是包含在driverlib/ eeprom.c中,driverlib/ eeprom.h包含的API定义由应用程序使用。
EEPROM Protection
EEPROM设备由若干块组成,其中每个可配置各种保护方案控制应用程序的读与或写数据能力。
此外,保护选项开始设备上的第一个块,块0,影响使整个设备的访问,全局选项开始块0和个别保护块的上一层。
每块可配置为两个保护状态,当哪一个块被锁定有效和当第二块那个申请解锁  。解锁是执行写一个32 位到 96位的先前已设置的密码和指定用户。

如果块0设置了密码,在设备上的所有其它块和控制它们的寄存器不可存取,直到块0锁定。在这一点上,这在每个单独块上的保护设置,适用于这些块被他们自己的密码单独锁定。

EEPROM驱动程序允许每块设置了三个特殊的保护模式。如果块没有设置密码,它定义提供保护,它定义提供保护来自eeprom.h下列标签如果有设置密码,并不解锁和如果有设置密码,并被解锁
此外,当CPU在用户模式下执行时,EEPROM_PROT_SUPERVISOR_ONLY可能与这些标签相“或”,当调用EEPROMBlockProtectSet(),以防止所有访问块
         
API Functions
宏定义
EEPROM_INIT_ERROR      
EEPROM_INIT_OK                                                        由EEPROMInit()返回
EEPROM_INIT_RETRY
EEPROM_INT_PROGRAM                       由EEPROMIntStatus()返回
EEPROM_PROT_NA_LNA_URW   
EEPROM_PROT_RO_LNA_URO          传递给EEPROMBlockProtectSet()或由EEPROMBlockProtectGet()返回
EEPROM_PROT_RW_LRO_URW
EEPROM_PROT_SUPERVISOR_ONLY
EEPROM_RC_INVPL        :
表示EEPROM编程状态机没有写一个值,由于电压低于EEPROM编程所需的水平下降。一旦电压稳定,操作可能会重试
EEPROM_RC_NOPERM:
企图写一个值,但目标权限不允许写操作。这可能是由于目标块被锁定。当一个人已经写好访问保护设置为禁止写入或试图写一个密码
EEPROM_RC_WKCOPY:EEPROM编程状态机是目前复制或从内部复制缓冲区,写出新的值空间。它提供一个状态指示灯,并不表示错误
EEPROM_RC_WKERASE:EEPROM编程状态机是目前擦除内部复制缓冲区。它是作为一个状态指示灯,这并不表示错误
EEPROM_RC_WORKING:EEPROM编程状态机。没有新的写操作,尝试直到该位清除
EEPROM_RC_WRBUSY :企图从EEPROM中读取,而写操作正在进行中。

EEPROMAddrFromBlock(ulBlock)
EEPROMBlockFromAddr(ulAddr)
函数
unsigned long EEPROMBlockCountGet (void)
确定在EEPROM的块数
void EEPROMBlockHide (unsigned long ulBlock)
隐藏EEPROM块,直到下一次复位
unsigned long EEPROMBlockLock (unsigned long ulBlock)
锁定一个密码保护的EEPROM块
unsigned long EEPROMBlockPasswordSet (unsigned long ulBlock, unsigned long _pulPassword, unsigned long ulCount)
设置密码用来保护EEPROM块
unsigned long EEPROMBlockProtectGet (unsigned long ulBlock)
返回当前EEPROM块保护级别
unsigned long EEPROMBlockProtectSet (unsigned long ulBlock, unsigned long ulProtect)
设置EEPROM块电路保护方案
unsigned long EEPROMBlockUnlock (unsigned long ulBlock, unsigned long _pulPassword,unsigned long ulCount)
解锁密码保护的EEPROM块
unsigned long EEPROMInit (void)
完成任何必要在停电的时候下的恢复写
void EEPROMIntClear (unsigned long ulIntFlags)
清除EEPROM中断
void EEPROMIntDisable (unsigned long ulIntFlags)
禁止EEPROM中断
void EEPROMIntEnable (unsigned long ulIntFlags)
使能EEPROM中断
unsigned long EEPROMIntStatus (tBoolean bMasked)
报告EEPROM的中断状态
unsigned long EEPROMMassErase (void)
擦除EEPROM和返回到出厂默认状态
unsigned long EEPROMProgram (unsigned long _pulData, unsigned long ulAddress, unsigned long ulCount)
将数据写入到EEPROM
unsigned long EEPROMProgramNonBlocking (unsigned long ulData, unsigned long ulAddress)
写入一个字到EEPROM
void EEPROMRead (unsigned long _pulData, unsigned long ulAddress, unsigned long ul-Count)
从EEPROM中读取数据
unsigned long EEPROMSizeGet (void)
确定EEPROM的大小
unsigned long EEPROMStatusGet (void)
返回最后EEPROM编程或擦除操作的状态

详细描述
EEPROM的API被分成四组的功能:读取EEPROM那些处理,那些与编程EEPROM,那些带有EEPROM的保护,处理的处理,以及那些与中断处理的处理。

EEPROM reading is managed with
EEPROMRead().
EEPROM programming is managed with
EEPROMMassErase(),
EEPROMProgram(),
EEPROMProgramNonBlocking().
EEPROM protection is managed with
EEPROMBlockProtectGet(),
EEPROMBlockProtectSet(),
EEPROMBlockPasswordSet(),
EEPROMBlockLock(),
EEPROMBlockUnlock()
EEPROMBlock-Hide().
Interrupt handling is managed with
EEPROMIntEnable(),
EEPROMIntDisable(),
EEPROMIntStatus(),
EEPROMIntClear().
附加函数, EEPROMSizeGet()提供允许应用程序查询设备存储和它包含的块数的大小
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

板凳
 
占位
等待实验。。。。。。。。。。。。
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

4
 
期待测试程序上传。
 
 
 

回复

7231

帖子

192

TA的资源

五彩晶圆(高级)

5
 
M4火啊啊
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

6
 
顶一个~~
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(初级)

7
 

luguo

luguo
 
 
 

回复

5310

帖子

453

TA的资源

五彩晶圆(高级)

8
 

EEPROM测试

找个例子插入以下代码就可以了做简单的读写了!

//使能对内部EEPROM的操作

ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0);

//初始化EEPROM

EEPROMInit ();

//获取EEPROM 空间大小 2048字节

ultemp=EEPROMSizeGet();

//读状态

ultemp=EEPROMStatusGet();

//获取块大小 32个

ultemp=EEPROMBlockCountGet();

//Program some data into the EEPROM at address 0x400.

EEPROMRead(pulRead, 0x400, sizeof(pulRead));

pulData[0] = 0x12345678; pulData[1] = 0x56789abc;

EEPROMProgram(pulData, 0x400, sizeof(pulData));

EEPROMRead(pulRead, 0x400, sizeof(pulRead));

pulData[0] = 0x11111111; pulData[1] = 0x22222222;

EEPROMProgram(pulData, 0x400, sizeof(pulData));

EEPROMRead(pulRead, 0x400, sizeof(pulRead));

pulData[0] = 0x55555555; pulData[1] = 0xaaaaaaaa;

EEPROMProgram(pulData, 0x400, sizeof(pulData));

EEPROMRead(pulRead, 0x400, sizeof(pulRead));

[ 本帖最后由 蓝雨夜 于 2011-11-17 11:58 编辑 ]
 
 
 

回复

273

帖子

0

TA的资源

一粒金砂(高级)

9
 
路过路过
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

10
 

例程都没找到EEPROM操作的,真是太感谢了!!!!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表